Sistemas de Entrada/Saída    
                             
        Princípios de Software
  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
  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
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
  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
  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
  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
  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
  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
  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
Eduardo Nicola F. Zagari
   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
  É 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
  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
 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
  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
 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
Eduardo Nicola F. Zagari
   19
   Sistemas Operacionais -Entrada e Saída
  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
Eduardo Nicola F. Zagari
   21
   Sistemas Operacionais -Entrada e Saída
  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

SO-10 Entrada e Saída: Software

  • 1.
    Sistemas de Entrada/Saída Princípios de Software
  • 2.
      Princípios deSoftware   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ódigodependente 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: leiturade 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 quaisoperaçõ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 foro 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
  • 11.
    Eduardo Nicola F.Zagari 11 Sistemas Operacionais -Entrada e Saída
  • 12.
    Eduardo Nicola F.Zagari 12 Sistemas Operacionais -Entrada e Saída
  • 13.
    Eduardo Nicola F.Zagari 13 Sistemas Operacionais -Entrada e Saída
  • 14.
      É oSoftware 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 istoque 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 todosoftware 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
  • 19.
    Eduardo Nicola F.Zagari 19 Sistemas Operacionais -Entrada e Saída
  • 20.
      Desempenho doSistema 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
  • 21.
    Eduardo Nicola F.Zagari 21 Sistemas Operacionais -Entrada e Saída
  • 22.
      Melhorando odesempenho:   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