Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Software Sistema de Entrada/Saída Ø 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 1 Princípios de Software Ø 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 d o 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 Visão Geral Processos Hardware Software Operações de E/S Eduardo Nicola F. Zagari Independente do dispositivo Subsistema de E/S Device Drivers Manipuladores de Interrupção Controladores Dependente do dispositivo Dispositivos 4 Sistemas Operacionais -Entrada e Saída 2 Princípios de Software: Tratadores de Interrupções Ø 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 Princípios de Software: Acionadores de Dispositivos Ø 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: 4 fita magnética, 4 rede, 4 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 3 Princípios de Software: Acionadores de Dispositivos Ø 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 Princípios de Software: Acionadores de Dispositivos Ø Exemplo: leitura de um dado (bloco) em um disco disco System Call E/S Ler bloco n Ler bloco no Acionador Controlador de disco Disco X, Cilindro Y, de disco Trilha W, Setor Z disco 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 4 Princípios de Software: Acionadores de Dispositivos Ø Decididas quais operações realizar e em que ordem, o acionador escreve os comandos nos registradores do controlador 4 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 4 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) 4 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 Princípios de Software: Acionadores de Dispositivos Ø 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 5 Princípios de Software: Subsistema de E/S Ø Responsável por realizar as funções comuns a todos os dispositivos (gerência dos dispositivos). Conhecido com Software de E/S Independente de Dispositivo Ø Funções: ü Prover uma interface uniforme para as operações de E/S (software do usuário) ü Fazer o mapeamento simbólico dos nomes dos dispositivos para os seus respectivos acionadores (No Unix, p. ex., cada nome de dispositivo é mapeado em um nó-i de um arquivo especial com informações do acionador) ü Pode haver interesse em se prevenir que usuários acessem dispositivos que não estão autorizados. Isto está intimamen-te relacionado com a identificação (p. ex., bits rwx no Unix) Eduardo Nicola F. Zagari 11 Sistemas Operacionais -Entrada e Saída Princípios de Software: Subsistema de E/S ü Prover um tamanho de bloco uniforme para as camadas superiores independente do dispositivo (p. ex., tratando vários setores como um único bloco lógico) ü Buferização Buferização: 4 para dispositivos de blocos: hardware transfere blocos inteiros, mas processos do usuário manipulam unidades arbitrárias 4 para dispositivos de caracteres: coletar caracteres e submetê- los em conjunto para os dispositivos 4 Para diminuir efeitos de diferença de velocidade entre dispositivos durante uma cópia 4 Para suporte à “semântica de cópia” (versão que vale é a do instante da chamada) Eduardo Nicola F. Zagari 12 Sistemas Operacionais -Entrada e Saída 6 Princípios de Software: Subsistema de E/S ü Pode prover a implementação do algoritmo de localização de blocos livres nos dispositivos de bloco, uma vez que ele é independente do dispositivo ü Controlar a alocação e liberação dos dispositivos compartilhados ou dedicados de acordo com sua disponibilidade ü Realizar a ordenação das operações de E/S, E/S com o objetivo de melhorar o desempenho global do sistema (ex., ordenação de operações de leitura em blocos espalhados de um disco) ü Gerenciamento de erros persistentes que são reportados pelos acionadores. Exemplo: Bloco ruim 4 na área de usuário ⇒ informar erro para o mesmo 4 em área crítica ⇒ solicitar intervenção do administrador Eduardo Nicola F. Zagari 13 Sistemas Operacionais -Entrada e Saída Princípios de Software: Operações de E/S Ø É 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 7 Princípios de Software: Operações de E/S ü Por isto que os comandos de E/S nestas linguagens independem do ambiente operacional onde se está trabalhando. 4 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 Princípios de Software: Operações de E/S 4 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 8 Princípios de Software: Operações de E/S Ø 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 4 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 Princípios de Software: Operações de E/S 4 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 4 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 9 Ciclo de Operações em uma Requisição de E/S Eduardo Nicola F. Zagari 19 Sistemas Operacionais -Entrada e Saída Desempenho Ø 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 10 Desempenho Eduardo Nicola F. Zagari 21 Sistemas Operacionais -Entrada e Saída Desempenho Ø 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 11