Fonte da Imagem: A. Silberschatz et. al, Operating Systems Concepts, capítulo 13.
Fonte da Imagem: A. Silberschatz et. al, Operating Systems Concepts, capítulo 13.
Controlador (adaptador de host):
Alguns controladores por dispositivo também possuem microcódigo próprio
Polling: SO "pergunta" continuamente por eventos ou resultados
Interrupções: o dispositivo alerta quando ocorreu um evento ou resultado
┌─────────────┐ Verifica Status ┌─────────────┐
│ │<──────────────────────────────│ │
│ CPU │ │ I/O Device │
│(Sistema Op.)│──────────────────────────────>│(Ex: Teclado)│
│ │ Envia Comando │ │
└─────────────┘ └─────────────┘
▲ │
│ ▼
Enquanto status não disponível Processa dados/Pronto para enviar
│ │
└────────────────────────────────────────────┘
CPU espera em loop - Busy Waiting
Passos para cada byte de I/O:
Vantagens:
Desvantagem:
Tabela de vetores de eventos do processador Pentium da Intel.
Fonte da Imagem: A. Silberschatz et. al, Operating Systems Concepts, capítulo 13.
Ao receber uma interrupção do tipo n:
Fonte da Imagem: Anotações de JungJae Lee
Linux abstrai um dispositivo de I/O como um arquivo especial (diretório /dev
). Fonte da Imagem: OS Team - OS OER
Fonte da Imagem: A. Silberschatz et. al, Operating Systems Concepts, capítulo 13.
As operações de entrada/saída (I/O) são caras por várias razões:
Abordagens para melhorar o desempenho: