Escolar Documentos
Profissional Documentos
Cultura Documentos
Entrada/Saı́da II
5 de julho de 2023
Camadas de SW de E/S
• Software de E/S normalmente dividido em 4 camadas
◦ Tratadores de interrupção
◦ Drivers do dispositivo
◦ Software do SO independente do dispositivo
◦ Software de E/S no nı́vel do usuário
2 of 11
Tratadores de Interrupção
• As interrupções são um fato desagradável da vida e não podem ser
evitadas. Elas devem ser escondidas longe, nas profundezas do SO
• A melhor maneira de escondê-las é bloquear o driver que inicializou
uma operação de E/S até que ela se complete e a interrupção
ocorra.
• Exemplo:
◦ O driver pode bloquear a si mesmo, realizando um down em um
semáforo, um wait em uma variável de condição, um receive em uma
mensagem, ou algo similar.
• down em um semáforo
4 of 11
Drivers de Dispositivos
5 of 11
Drivers de Dispositivos
6 of 11
SW de E/S Independentes - Interface uniforme
• Ter de modificar o SO para dispositivos novos não é uma boa ideia.
• Fronteira exata entre drivers e SW independente varia com sistema
• Algumas funcionalidades independentes implementadas no driver
• Interface uniforme para drivers
◦ Fazer todos dispositivos parecerem os mesmos
◦ Evitar reconstrução do SO para cada novo dispositivo
◦ Cada classe de dispositivo → Conjunto de funções
◦ Drivers possuem tabela de ponteiros
7 of 11
SW de E/S Independentes - Buffers
• Utilização de buffer
◦ Exemplo de um modem
◦ Sem utilizar buffer → Execuções curtas (ineficiente)
◦ Buffer no espaço de usuário → Interrupção preenche buffer
• Problema com paginação
◦ Buffer no espaço do núcleo → Transferência para espaço do usuário
• Chegada de dados durante carregamento do buffer de usuário
◦ Dois buffers no espaço do núcleo → Durante transferência
8 of 11
SW de E/S Independentes - Buffers
• Utilização de buffer
◦ Exemplo de um modem
◦ Sem utilizar buffer → Execuções curtas (ineficiente)
◦ Buffer no espaço de usuário → Interrupção preenche buffer
• Problema com paginação
◦ Buffer no espaço do núcleo → Transferência para espaço do usuário
• Chegada de dados durante carregamento do buffer de usuário
◦ Dois buffers no espaço do núcleo → Durante transferência
8 of 11
SW de E/S Independentes - Buffers
• Utilização de buffer
◦ Exemplo de um modem
◦ Sem utilizar buffer → Execuções curtas (ineficiente)
◦ Buffer no espaço de usuário → Interrupção preenche buffer
• Problema com paginação
◦ Buffer no espaço do núcleo → Transferência para espaço do usuário
• Chegada de dados durante carregamento do buffer de usuário
◦ Dois buffers no espaço do núcleo → Durante transferência
8 of 11
SW de E/S Independentes - Buffers
• Utilização de buffer
◦ Exemplo de um modem
◦ Sem utilizar buffer → Execuções curtas (ineficiente)
◦ Buffer no espaço de usuário → Interrupção preenche buffer
• Problema com paginação
◦ Buffer no espaço do núcleo → Transferência para espaço do usuário
• Chegada de dados durante carregamento do buffer de usuário
◦ Dois buffers no espaço do núcleo → Durante transferência
8 of 11
SW de E/S Independentes - Buffers
• Utilização de buffer
◦ Exemplo de um modem
◦ Sem utilizar buffer → Execuções curtas (ineficiente)
◦ Buffer no espaço de usuário → Interrupção preenche buffer
• Problema com paginação
◦ Buffer no espaço do núcleo → Transferência para espaço do usuário
• Chegada de dados durante carregamento do buffer de usuário
◦ Dois buffers no espaço do núcleo → Durante transferência
8 of 11
SW de E/S Independentes - Buffers
• Muitas cópias afetam desempenho (Exemplo: Envio de pacotes)
◦ Pacote copiado para buffer do núcleo
• Buffer do usuário liberado
◦ Driver requisitado → Pacote copiado para buffer do dispositivo
• Barramento necessita transferência constante
◦ Transferência na rede → Buffer do dispositivo de destino
◦ Transferência para o buffer do núcleo de destino
◦ Transferência para o buffer do usuário de destino
9 of 11
SW de E/S Independentes - Buffers
• Muitas cópias afetam desempenho (Exemplo: Envio de pacotes)
◦ Pacote copiado para buffer do núcleo
• Buffer do usuário liberado
◦ Driver requisitado → Pacote copiado para buffer do dispositivo
• Barramento necessita transferência constante
◦ Transferência na rede → Buffer do dispositivo de destino
◦ Transferência para o buffer do núcleo de destino
◦ Transferência para o buffer do usuário de destino
9 of 11
SW de E/S Independentes - Buffers
• Muitas cópias afetam desempenho (Exemplo: Envio de pacotes)
◦ Pacote copiado para buffer do núcleo
• Buffer do usuário liberado
◦ Driver requisitado → Pacote copiado para buffer do dispositivo
• Barramento necessita transferência constante
◦ Transferência na rede → Buffer do dispositivo de destino
◦ Transferência para o buffer do núcleo de destino
◦ Transferência para o buffer do usuário de destino
9 of 11
SW de E/S Independentes - Buffers
• Muitas cópias afetam desempenho (Exemplo: Envio de pacotes)
◦ Pacote copiado para buffer do núcleo
• Buffer do usuário liberado
◦ Driver requisitado → Pacote copiado para buffer do dispositivo
• Barramento necessita transferência constante
◦ Transferência na rede → Buffer do dispositivo de destino
◦ Transferência para o buffer do núcleo de destino
◦ Transferência para o buffer do usuário de destino
9 of 11
SW de E/S Independentes - Buffers
• Muitas cópias afetam desempenho (Exemplo: Envio de pacotes)
◦ Pacote copiado para buffer do núcleo
• Buffer do usuário liberado
◦ Driver requisitado → Pacote copiado para buffer do dispositivo
• Barramento necessita transferência constante
◦ Transferência na rede → Buffer do dispositivo de destino
◦ Transferência para o buffer do núcleo de destino
◦ Transferência para o buffer do usuário de destino
9 of 11
SW de E/S Independentes - Buffers
• Muitas cópias afetam desempenho (Exemplo: Envio de pacotes)
◦ Pacote copiado para buffer do núcleo
• Buffer do usuário liberado
◦ Driver requisitado → Pacote copiado para buffer do dispositivo
• Barramento necessita transferência constante
◦ Transferência na rede → Buffer do dispositivo de destino
◦ Transferência para o buffer do núcleo de destino
◦ Transferência para o buffer do usuário de destino
9 of 11
SW de E/S Independentes - Relatórios de erros
10 of 11
SW de E/S no Espaço de Usuário
• Embora a maior parte do software de E/S esteja dentro do sistema
operacional, uma pequena porção dele consiste em bibliotecas
ligadas aos programas do usuário e mesmo programas inteiros
sendo executados fora do núcleo.
• Chamadas de sistema, incluindo chamadas de sistema de E/S, são
normalmente feitas por rotinas de biblioteca
◦ Algumas apenas posicionam parâmetros
• Exemplo:
c o n t a d o r = w r i t e ( fd , b u f f e r , n b y t e s )
p r i n t f ( ”O q u a d r a d o de %3d e %6d\n” , i , i ∗ i )
11 of 11