- Os E/S de blocos
- Os E/S de fluxo de caracteres
No de blocos, cada bloco pode ser endereçado, lido e escrito independentemente dos outros. Um exemplo disso é o HD.
No Fluxo de caracteres não existe nenhuma estrutura de blocos. Exemplos: Impressoras, interfaces de rede, mouse, teclado
(controle e comunicação do processador com os dispositivos)
Você já se perguntou como um processador consegue "entender" tantos dispositivos diferentes? Você bota um mouse USB e ele funciona, bota um HD externo e dá certo, bota uma câmera e ela grava... Na verdade o processador só enxerga memórias. Quem tem que fazer o trabalho duro é o controlador, ele que sabe como operar um dispositivo. O processador faz é ler e escrever nessa memória.
Um dispositivo tem geralmente seus próprios registradores. Também podem ter um buffer de memória, como por exemplo o buffer de memória de vídeo, por isso que é possível você usar o print screen.
Uma das formas de se ler dados da E/S é por interrupção, ao lado de programada e Acesso Direto à Memória.
Por interrupção o processador é notificado pela E/S sempre que um novo dado está disponível.
Quando um processador recebe uma interrupção ele salva o contador de programa, do processo atual, e se necessário o conteúdo dos registradores (é como se ele colocasse um marcador na página do livro que ele está lendo) e vai tratar a interrupção.
No HD, por exemplo, o controlador vai ter a trilha, pegar os bits e montar o bloco de dados que o processador vai ler. Nesse processo bits podem eventualmente se perder, por problemas eletromecânicos e etc. Por isso o controlador precisa aplicar um código corretor de erros para entregar o bloco de dados coerente.
Referência: Sistemas Operacionais Modernos de Tanenbaum, Capítulo 5.