Escolar Documentos
Profissional Documentos
Cultura Documentos
Nota
O presente material foi elaborado com base no material didtico dos livros: Sistemas Operacionais com Java, 7 edio, de A. Silberschatz, P.B. Galvin e G. Gagne, Editora Campus, 2008, disponibilizado pela editora. Sistemas Operacionais Modernos, 2a edio, de A. Tanenbaum, Editora Pearson Prentice Hall, So Paulo, 2003, disponibilizado pela editora.
Subsistema de E/S
Hardware de E/S Interface de aplicao para E/S Subsistema de E/S do Kernel Tratamento de E/S Tratamento de requisies de E/S
Objetivos
Estudar a estrutura geral de um subsistema de E/S Compreender os princpios do tratamento de E/S e sua complexidade
Hardware de E/S
Varia muito de um sistema para outro.
Controladores(as)
Tarefas da controladora:
vEnviar sinais de controle ao dispositivo v Converter fluxo serial de bits em bloco de bytes vExecutar correo de erros vTornar o bloco disponvel para ser copiado para a memria principal
Tipicamente possui registradores de dados, de comando e de status que permitem a interao do processador
v Portas de I/O com endereos especficos so usadas para implementar os registradores (de comandos, registradores de dados, e de status) vHbrido
H vrias trs maneiras bsicas de fazer isso Busy-wait ciclo de espera at que o dispositivo esteja pronto Ex: o pseudo-cdigo abaixo envia uma cadeia de caracteres para a impressora
copy_from_user(buffer, p, count); /* p um buffer do ncleo */ for(i=0; i < count; i ++) { /* executa o lao para cada caractere */ while(*printer_status_reg != READY); /* fica no lao at que status indique pronto */ *printer_data_register = p[i]; /* envia um caracter para a sada */ } return_to_user( );
a)
b)
A CPU salva o estado de execuo corrente O vetor de interrupo despacha a interrupo ao tratador apropriado (interrupt handler)
vCada posio do vetor contm o endereo de um tratador especfico para uma interrupo vIsso pode ser feito com base em prioridades vCertas interrupes podem ser adiadas ou at mesmo ignoradas
O interrupt handler recebe e trata a interrupo Esse mesmo mecanismo tambm usado para excees (exceptions)
v No-mascarvel (nonmaskable): reservada para eventos tais como erros de memria irrecuperveis
No-mascarveis
Dispositivos (mascarveis)
Utilizado para evitar a E/S programada no caso de grandes transferncias Transfere dados diretamente entre um controlador de dispositivo e a memria
v Libera o processador para outras tarefas (melhora a eficincia do sistema)
Nesse caso, a CPU recebe uma nica interrupo gerada pelo DMA, avisando que a transferncia foi concluda
Questo de projeto:
Como fazer para no ter de reescrever o SO inteiro cada vez que um novo dispositivo acrescentado? Como tratar tantos dispositivos to diferentes de uma forma (quase) uniforme?
vUse os princpios da Eng. de SW ...
Abstrao Encapsulamento E algumas camadas ...
API de E/S
(Obviamente) As aplicaes no interagem diretamente com os dispositivos, cujas caractersticas podem variar em diversas dimenses:
vOrientados a stream de caractere ou bloco vAcesso sequencial ou randmico vCompartilhvel ou dedicado vVelocidade de operao vSomente leitura, somente escrita ou leitura/escrita
Chamadas ao sistema de E/S encapsulam comportamentos dos dispositivos A camada dos device-drivers esconde do kernel as diferenas entre controladoras de E/S
Direo de I/O
Dispositivos de Rede
So muito diferentes dos dispositivos de bloco e de caracter, e por isso tm sua prpria interface Unix e Windows NT/9x/2000 implementam a interface socket
vSeparao entre o protocolo de rede e a operao da rede vInclui a funcionalidade select:
select permite testar (fazer polling) se chegou um pacote p/qq socket ou se algum socket possui pacote disponvel p/envio
Sncrona"
Assncrona"
Tratamento de erros
Operaes podem estar sujeitas a falhas.
vFalhas podem ser permanentes ou transientes (isto , passageiras ) vExemplos: Erro de leitura de disco, dispositivo indisponvel, falhas de escrita
Se possvel, o subsistema deve tentar mascarar a falha isto , tomar alguma providncia
vEx: tentar uma nova leitura
No pior caso, o sistema deve retornar um cdigo de erro para avisar ao usurio/aplicao
vEx: varivel errno do UNIX
Logs de erros de sistema tambm podem ser gerados para esclarecer sobre erros ocorridos
Proteo de E/S
Processos de usurio podem (de forma proposital ou acidental) prejudicar a execuo normal de um sistema, emitindo instrues ilegais de E/S
vAssim, todas as instrues de E/S devem ser definidas como privilegiadas vToda E/S deve ser feita atravs de chamadas ao sistema (system calls)
Tanto a E/S mapeada em memria quanto o acesso a portas de E/S devem ser protegidos
Envia requisio de E/S para o driver de dispositivo e bloqueia o processo se necessrio Processa requisio, envia comandos para controladora
driver de dispositivo
Determina qual E/S terminou, indica mudana de estado ao subsistema de E/S Recebe interrupo, guarda dados no buffer do dispositivo, envia sinal para desbloquear o driver E/S completada gera interrupo
Fim