O documento discute os principais conceitos de sistemas de entrada e saída em sistemas operacionais. Apresenta os principais componentes de software de E/S, como tratadores de interrupção, controladores de dispositivos e subsistema de E/S. Também descreve o ciclo de operações de E/S e fatores que influenciam o desempenho dos sistemas de entrada e saída.
2. Princípios de Software
Tratadores (Manipuladores) de Interrupções
Acionadores de Dispositivos (Device Drivers)
Subsistema de E/S
Operações de E/S
Ciclo de Operações em uma Requisição de E/S
Desempenho dos Sistemas de E/S
Eduardo Nicola F. Zagari
2
Sistemas Operacionais -Entrada e Saída
3. Conceito chave:
o software de E/S deve buscar independência do dispositivo
Características/objetivos importantes:
Uniformidade de nome para os dispositivos (strings/inteiros)
Manipulação de erros (devem ser feitas o mais próximo possível do
hardware)
Transferências síncronas (bloqueantes) e assíncronas
(manipuladas por interrupção)
Dispositivos compartilhados ou dedicados (possibilidade de
deadlock)
Eduardo Nicola F. Zagari
3
Sistemas Operacionais -Entrada e Saída
4. Processos
Operações de E/S Independente do
dispositivo
Software
Subsistema de E/S
Device Drivers
Manipuladores
de Interrupção
Controladores Dependente do
Hardware
dispositivo
Dispositivos
Eduardo Nicola F. Zagari
4
Sistemas Operacionais -Entrada e Saída
5. São eventos “complicados” de se tratar. Assim, devem ser
tratadas por uma pequena parte (parte específica) do SO
Uma forma de tratá-las isoladamente é bloquear os processos que
estiverem aguardando operações de E/S até uma interrupção de
“operação completada”
A rotina de tratamento desta interrupção libera o processo
bloqueado (UP em um semáforo, SIGNAL em um monitor ou envio
de uma mensagem)
Eduardo Nicola F. Zagari
5
Sistemas Operacionais -Entrada e Saída
6. Todo código dependente do dispositivo se concentra do
acionador (driver) do dispositivo
Cada acionador manipula um dispositivo ou uma classe de
dispositivos semelhantes
Acionadores para:
fita magnética,
rede,
terminais etc
Função:
receber comandos gerais (abstratos) sobre acessos aos dispositivos
e traduzi-los para comandos específicos (executados pelos controladores)
Eduardo Nicola F. Zagari
6
Sistemas Operacionais -Entrada e Saída
7. O acionador é a parte do SO que reconhece o hardware, ou
seja, sabe quantos registradores um controlador possui, para
que eles servem, como são utilizados e quais são seus
comandos.
Devido a dependência entre os acionadores e as chamadas de
sistema (system calls), os fabricantes desenvolvem, para um
mesmo dispositivo, diferentes acionadores, um para cada SO.
Dispositivo adicionado ⇒ acionador deve ser acoplado ao kernel do
SO
Eduardo Nicola F. Zagari
7
Sistemas Operacionais -Entrada e Saída
8. Exemplo: leitura de um dado (bloco) em um disco
disco
System Call Ler bloco n Acionador Ler bloco no Controlador
E/S de disco Disco X, Cilindro Y, de disco disco
Trilha W, Setor Z disco
Se acionador estiver desocupado, a requisição é aceita, caso
contrário, ele a põe em uma fila de requisições pendentes
Transcreve a requisição abstrata em ações concretas
(comandos). Por exemplo, para um disk driver:
informar onde o bloco se encontra no disco
verificar se o motor do driver está girando
determinar se o braço está no cilindro apropriado etc
Eduardo Nicola F. Zagari
8
Sistemas Operacionais -Entrada e Saída
9. Decididas quais operações realizar e em que ordem, o acionador
escreve os comandos nos registradores do controlador
Alguns controladores aceitam apenas um comando por vez, outros
aceitam uma lista deles.
Após o(s) comando(s) ter(em) sido(s) emitido(s), podem ocorrer
duas situações
o acionador deve se bloquear até que a operação seja completada
(requisição bloqueante)
– no caso da operação ser lenta (envolvendo movimentos
mecânicos, como no nosso exemplo)
acionador deve aguardar, no caso de operações rápidas
– por exemplo, o deslocamento da tela em terminais requer
apenas a escrita de um poucos bytes nos registradores do
controlador (microssegundos)
Eduardo Nicola F. Zagari
9
Sistemas Operacionais -Entrada e Saída
10. Se for o caso, uma vez completada a operação, o controlador
gera uma interrupção que ativa o acionador
O acionador verifica a ocorrência de erros
Se tudo estiver correto, ele passa as informações (dados lidos)
para a camada superior (Subsistema de E/S)
Finalmente, ele retorna as informações de situação de erro
(status)
Caso haja, pega a próxima requisição; caso contrário, aguarda
pela próxima...
Eduardo Nicola F. Zagari
10
Sistemas Operacionais -Entrada e Saída
14. É o Software no Nível do Usuário
A maior parte do software de E/S está embutida no SO
(subsistema de E/S)
Uma pequena porção consiste em rotinas de bibliotecas, ligadas
junto com os programas de usuários (ou mesmo em programas
inteiros rodando fora do núcleo)
Chamadas de sistema, incluindo as de E/S, são normalmente
feitas por procedimentos de bibliotecas, como as oferecidas
pelas linguagens de programação C, Pascal etc
Eduardo Nicola F. Zagari
14
Sistemas Operacionais -Entrada e Saída
15. Por isto que os comandos de E/S nestas linguagens independem
do ambiente operacional onde se está trabalhando.
Por exemplo:
bytes_lidos = fread(buffer, tam_item, n_itens, arquivo);
– o procedimento fread será ligado com o programa (fica
contido no código binário presente no espaço do usuário)
– antes de efetuar a chamada de sistema, este procedimento
coloca seus parâmetros nas posições de memória
apropriadas
Eduardo Nicola F. Zagari
15
Sistemas Operacionais -Entrada e Saída
16. Outro exemplo:
– formatação de entradas e saídas são feitas por
procedimentos da biblioteca de E/S padrão:
» printf,
» gets etc
Estas porções do código, que rodam como parte dos programas
do usuário, são parte do Sistema de E/S
Eduardo Nicola F. Zagari
16
Sistemas Operacionais -Entrada e Saída
17. Nem todo software de E/S consiste de procedimentos de
bibliotecas
Por exemplo, Sistemas de SPOOLING (Simultaneous Peripheral
Operation On-Line)
Spooling: modo de negociação com os dispositivos dedicados de E/
S em sistemas multiprogramados
Exemplo: impressora
– Processo abre o arquivo especial da impressora
– Mantém arquivo aberto por horas, sem usá-lo
– Ninguém mais imprime nada...
Eduardo Nicola F. Zagari
17
Sistemas Operacionais -Entrada e Saída
18. Técnica de Spooling
– Cria-se um processo especial, denominado daemon
(servidor), e um diretório especial, chamado diretório de
spool (spooling directory)
– Processo envia arquivo para daemon (isto é, copia o arquivo
no diretório de spool)
– Daemon, que é o único processo que tem permissão para
usar o arquivo especial associado à impressora, transfere os
arquivos do diretório de spool para impressora, um a um
Spooling também é usado em outras situações (p. ex., em
transferência de mensagens de correio eletrônico)
Eduardo Nicola F. Zagari
18
Sistemas Operacionais -Entrada e Saída
20. Desempenho do Sistema de E/S afeta diretamente o
desempenho global do sistema:
Uso da CPU na execução do código do acionador do dispositivo
Mudanças de contexto devido às interrupções
Sobrecarga do barramento da memória durante as cópias de dados
Um exemplo: o “custo” do tráfego de um caracter pela rede
Eduardo Nicola F. Zagari
20
Sistemas Operacionais -Entrada e Saída
22. Melhorando o desempenho:
Reduzir o número de mudanças de contexto
Reduzir o número de cópias de dados entre controlador, núcleo e
processo
Reduzir a freqüência de interrupções usando grandes
transferências, controladores inteligentes e polling (quando viável)
Usar DMA para aumentar o “paralelismo”
Usar CPU, memória, barramento e dispositivos de E/S de forma
balanceada, para evitar gargalos
Eduardo Nicola F. Zagari
22
Sistemas Operacionais -Entrada e Saída