#entrada-e-saida #driver #DMA #estudos

Gerência de Dispositivos de Entrada e Saída

Arquitetura de Computadores e Sistemas Operacionais Tema 5

oi!! (。♥‿♥。) último tema da unidade 4!! aqui a gente vê como o SO conversa com o mundo exterior. teclado, mouse, disco, impressora, rede... tudo passa pelo subsistema de E/S. sem ele, o computador é só uma caixa calculando sozinha no escuro. bora entender!! ٩(◕‿◕)۶

1. Dispositivos de E/S: Bloco vs Caractere

dispositivos de E/S se dividem em duas categorias principais:

  • Dispositivos de bloco: armazenam dados em blocos de tamanho fixo. exemplo: disco rígido, SSD, pendrive. vc pode acessar qualquer bloco diretamente. é tipo ir direto numa página do livro. (。•̀ᴗ-)✧
  • Dispositivos de caractere: transmitem dados como fluxo de caracteres, um por um. exemplo: teclado, mouse, impressora serial, porta serial. não dá pra pular: vc lê na ordem que chega. tipo fila de padaria.

existem também dispositivos híbridos, como terminais de vídeo (são de caractere pra entrada, mas mapeiam memória pra saída). e dispositivos de rede, que são um caso especial porque não se encaixam perfeitamente em nenhum dos dois. (¬‿¬)

2. Controladores e Drivers: Os Tradutores

o processador não fala direto com o hardware. entre eles existem duas camadas:

  • Controlador: hardware. chip ou placa que controla o dispositivo. ele entende sinais elétricos, protocolos do hardware, e se comunica com o barramento. exemplo: controlador SATA, controlador USB, placa de rede. (⌐■_■)
  • Driver: software. programa que roda no kernel e sabe como falar com o controlador específico. traduz comandos genéricos do SO em comandos específicos do hardware. sem driver, o hardware é um peso de papel caro. (╥﹏╥)

o SO se comunica com o driver, o driver com o controlador, o controlador com o dispositivo. é uma cadeia de tradução. quando vc instala uma placa de vídeo nova e o Windows não reconhece, é porque falta o driver. o hardware existe, mas ninguém sabe falar a língua dele. (T_T)

DRIVERS NO LINUX

o Linux tem a maioria dos drivers embutidos no kernel ou como módulos carregáveis. por isso raramente precisa instalar driver manualmente. no Windows, drivers são arquivos separados, e se perder o CD de instalação... adeus hardware. open source wins again!! (•̀ᴗ•́)و

3. Técnicas de E/S: Quem Faz o Trabalho?

existem três formas principais de realizar E/S, do mais burro ao mais inteligente:

3.1 E/S Programada (Polling)

a CPU fica perguntando pro dispositivo: "já acabou? já acabou? já acabou?" em loop. isso chama busy waiting (espera ocupada). a CPU não faz nada de útil enquanto espera. é simples de implementar, mas um desperdício monumental de processamento. tipo ficar olhando pro fogão até a água ferver. ( ̄ω ̄)

3.2 E/S por Interrupção

a CPU manda o dispositivo trabalhar e vai fazer outra coisa. quando o dispositivo termina, ele gera uma interrupção. a CPU para o que tá fazendo, salva o estado, atende a interrupção, e volta. muito mais eficiente. é tipo colocar a água no fogão e assistir anime até o despertador tocar. (☆▽☆)

3.3 DMA (Acesso Direto à Memória)

pra transferências grandes (ex: ler um arquivo do disco), usar interrupção ainda sobrecarrega a CPU. a solução é o DMA: um controlador especial que transfere dados diretamente entre dispositivo e memória RAM, sem passar pela CPU. a CPU só é interrompida no início e no fim. (ノ◕ヮ◕)ノ*:・゚✧

o DMA é essencial pra performance. sem ele, assistir um vídeo em 4K travaria o computador inteiro, porque a CPU passaria o tempo todo copiando bytes do disco pra memória. com DMA, a CPU fica livre pra decodificar e mostrar o vídeo.

EVOLUÇÃO DAS TÉCNICAS

E/S programada: CPU faz tudo. desperdício total. usada só em sistemas microcontrolados simples.

Interrupção: CPU delega, mas ainda gerencia byte a byte. bom pra poucos dados.

DMA: CPU nem vê os dados passarem. ideal pra grandes volumes. é o padrão em PCs modernos. (✿◠‿◠)

4. Canais de E/S: DMA Avançado

em mainframes e sistemas grandes, existe o canal de E/S: um processador dedicado só pra gerenciar transferências de E/S. ele executa seu próprio programa (CCW — Channel Command Word) e controla vários dispositivos simultaneamente. a CPU manda "faça isso" e o canal cuida de tudo sozinho. (•̀ᴗ•́)و

existem canais de três tipos:

  • Multiplexador: controla vários dispositivos lentos ao mesmo tempo (ex: terminais).
  • Seletor: controla um dispositivo rápido de cada vez (ex: disco).
  • Bloco: intermediário, controla vários discos em alta velocidade.

hoje em dia, isso foi absorvido por controladores modernos (SCSI, NVMe) e chipsets, mas o conceito ainda existe por baixo.

5. Sistema de Arquivos: A Abstração do Disco

o SO não deixa vc acessar o disco bruto (setores, cilindros, cabeças). em vez disso, oferece um sistema de arquivos: uma abstração que organiza dados em arquivos, pastas, com nomes, permissões, datas. é tipo a diferença entre ver um armazém cheio de caixas numeradas e ver uma livraria organizada por gênero. (。◕‿◕。)

funções do sistema de arquivos:

  • Criar, deletar, ler, escrever: operações básicas em arquivos.
  • Organizar hierarquicamente: diretórios e subdiretórios.
  • Mapear arquivos pro disco: traduzir nome de arquivo em blocos físicos.
  • Gerenciar espaço livre: saber quais blocos estão disponíveis.
  • Gerenciar acesso: permissões de leitura, escrita, execução.

sistemas de arquivo comuns: NTFS (Windows), ext4 (Linux), APFS (macOS), FAT32/exFAT (pendrives). cada um tem características diferentes: tamanho máximo de arquivo, journaling, permissões, compressão, criptografia.

JOURNALING

sistemas com journaling (NTFS, ext4, APFS) gravam um "diário" das operações antes de executá-las. se o computador desliga no meio, o SO lê o journal e completa ou desfaz a operação. sem journal (tipo FAT32), corrupção de dados é mais provável. por isso FAT32 não é recomendado pra discos do sistema. (。•̀ᴗ-)✧

6. RAID: Redundância e Performance

RAID (Redundant Array of Independent Disks) é uma tecnologia que combina vários discos pra melhorar performance, capacidade ou confiabilidade. não é backup, é tolerância a falhas. se um disco morre, os dados ainda existem nos outros. (¬‿¬)

os níveis mais comuns:

  • RAID 0 (striping): dados divididos entre discos. leitura/escrita mais rápida, mas se um disco morre, perde tudo. zero redundância. o zero é porque não tem proteção. ( ͡~ ͜ʖ ͡°)
  • RAID 1 (mirroring): dados copiados idênticos em dois discos. se um morre, o outro continua. perde metade da capacidade, mas ganha segurança.
  • RAID 5 (striping + paridade): dados divididos entre N discos, com informação de paridade distribuída. aguenta a falha de 1 disco. bom equilíbrio de capacidade, performance e segurança. usado em servidores.
  • RAID 6: igual ao 5, mas com dupla paridade. aguenta falha de 2 discos. mais seguro, mas mais lento em escrita.
  • RAID 10 (1+0): espelhamento + striping. performance do 0 com segurança do 1. caro, mas usado em aplicações críticas.
RAID NÃO É BACKUP

RAID protege contra falha de disco, não contra ransomware, erro humano, ou queda de raio no datacenter. se vc deletar um arquivo, ele é deletado em todos os discos do RAID. backup é cópia em lugar diferente. não confunda!! (T_T)

7. Buffering, Caching e Spooling

algumas técnicas pra melhorar E/S:

  • Buffering: área de memória temporária entre dispositivo e processo. exemplo: enquanto vc assiste um vídeo, o player carrega uns segundos à frente num buffer. se a rede oscilar, o vídeo não trava. (•̀ᴗ•́)و
  • Caching: manter cópia de dados frequentemente acessados em memória rápida. o SO faz cache de blocos de disco na RAM. se vc abre o mesmo arquivo de novo, vem da RAM, não do disco. é por isso que abrir algo pela segunda vez é mais rápido.
  • Spooling: fila de impressão é o exemplo clássico. em vez de mandar o documento direto pra impressora (que é lenta), o SO grava num arquivo e manda por partes. vc pode "imprimir" vários documentos sem esperar. a impressora pega da fila no ritmo dela. (。◕‿◕。)

8. Considerações Finais

a gerência de E/S é o que conecta o computador ao mundo. sem ela, não há arquivos, não há internet, não há interação. os conceitos que vimos — controladores, drivers, interrupções, DMA, sistemas de arquivo, RAID — são a base de toda infraestrutura de TI. (ノ◕ヮ◕)ノ*:・゚✧

entender isso explica:

  • por que instalar driver é importante.
  • por que SSD melhora tanto o PC (E/S mais rápida = menos espera).
  • por que RAID não substitui backup.
  • por que servidores usam DMA e canais pra não sobrecarregar a CPU.
  • por que journaling evita corrupção de arquivos.
DICA FINAL

no Linux, lsblk, fdisk -l, iostat e iotop mostram informações de discos e E/S em tempo real. no Windows, o Gerenciador de Tarefas tem a aba "Desempenho" com gráficos de disco. saber ler essas métricas é habilidade de sysadmin. (◍•ᴗ•◍)

fechou, senpai? (ノ◕ヮ◕)ノ*:・゚✧ acabamos a Unidade 4!! ヾ(^-^)ノ

VÍDEOS RECOMENDADOS

UNIVESP — Aula 21: Introdução à E/S
UNIVESP — Aula 22: Técnicas de E/S I
UNIVESP — Aula 23: Técnicas de E/S II

LABORATÓRIO INTERATIVO

Simulador: Técnicas de E/S

Compare o comportamento da CPU em três técnicas de E/S ao transferir um bloco de dados.

CPU
0%
DISPOSITIVO
0%
MEMÓRIA
0%
Escolha uma técnica para ver a simulação.
Simulador: RAID Visual

Escolha o nível de RAID e veja como os dados são distribuídos entre os discos.

Disco 1
Disco 2
Disco 3
Disco 4
Escolha um nível RAID.
Mapa Visual — Hierarquia de E/S
APLICATIVO SISTEMA OPERACIONAL / DRIVER CONTROLADOR DE E/S (hardware) BARRAMENTO (PCIe, SATA, USB) DISCO TECLADO REDE IMPRESSORA
voltar aos temas da unidade 4