so-10 entrada e saída: software
DESCRIPTION
Sistemas de Entrada e Saída. Visão Geral. Princípios de Software (Sistemas Operacionais)TRANSCRIPT
Sistemas de Entrada/Saída Princípios de Software
2 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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
3 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
Conceito chave:
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)
o software de E/S deve buscar independência do dispositivo
4 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
Dispositivos
Controladores
Device Drivers
Subsistema de E/S
Operações de E/S
Processos
Softw
are
Har
dwar
e
Independente do dispositivo
Dependente do dispositivo
Manipuladores de Interrupção
5 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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)
6 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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)
7 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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
8 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
Exemplo: leitura de um dado (bloco) em um 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
disco
disco
disco System Call
E/S Acionador de disco
Controlador de disco
Ler bloco n Ler bloco no Disco X, Cilindro Y, Trilha W, Setor Z
9 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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)
10 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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...
11 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
12 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
13 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
14 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
É 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
15 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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
16 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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
17 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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...
18 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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)
19 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
20 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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
21 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
22 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari
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