Computadores de grande porte utilizam um ou mais processadores de E/S, chamados canais de dados (``data channels''), conforme Figura .
Quando a CPU deseja realizar E/S, ela carrega um programa especial em um dos
canais que o executa. A CPU pode então realizar outras tarefas. Quando o
canal terminar sua tarefa, ele envia um sinal especial, chamado
interrupção, à CPU.
Em computadores grandes, é comum o uso de vários barramentos ou ``bus'':
Já os computadores pessoais possuem estruturas de E/S mais simples. A
estrutura básica é uma placa colocada no fundo chamada ``motherboard'',
contendo a CPU, alguma memória, e alguns ``chips'' de suporte. O barramento
fica na borda da placa onde podem ser acopladas placas de controle de E/S,
placas de memória, etc.
A estrutura lógica é mostrada na Figura .
A função de um controlador de E/S é controlar o dispositivo de E/S,
além de manipular acessos ao ``bus''. Quando um programa precisa de dados do
disco, por exemplo, ele envia um comando ao controlador de disco, que emite
comandos como ``seek'' à unidade de disco. Também é tarefa do
controlador receber os bits lidos do disco, montá-los em palavras,
gravando-as na memória. Quando o controlador de E/S lê ou escreve blocos
de memória sem intervençaõ da CPU, dizemos que ele realiza DMA ou
seja, acesso direto a memória (``Direct Memory Access'').
Em computadores menores, como nos pessoais, somente dispomos de um ``bus''. O
mesmo ``bus'' é usado pelos controladores de E/S e pela CPU para buscar
intruções/dados da memória.
Para disciplinar o uso do ``bus'', uma pastilha ``bus arbiter'' (árbitro do barramento) decide quem tem posse do ``bus'' (para utilizar os ciclos do ``bus''). Em geral dispositivos de E/S têm prioridade sobre CPU no uso dos ciclos do ``bus''. Quando não há E/S, a CPU tem todos os ciclos de ``bus'' para ela. Um dispositivo de E/S, quando precisar, pode requerer e receber o uso do ``bus''. Esse processo é conhecido pelo nome de ``cycle stealing'' (roubo do ciclo).