so-10 entrada e saída: software

22
Sistemas de Entrada/Saída Princípios de Software

Upload: nicola-zagari

Post on 13-Jan-2015

7.536 views

Category:

Technology


0 download

DESCRIPTION

Sistemas de Entrada e Saída. Visão Geral. Princípios de Software (Sistemas Operacionais)

TRANSCRIPT

Page 1: SO-10 Entrada e Saída: Software

Sistemas de Entrada/Saída Princípios de Software

Page 2: SO-10 Entrada e Saída: 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

Page 3: SO-10 Entrada e Saída: Software

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

Page 4: SO-10 Entrada e Saída: Software

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

Page 5: SO-10 Entrada e Saída: Software

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)

Page 6: SO-10 Entrada e Saída: Software

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)

Page 7: SO-10 Entrada e Saída: Software

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

Page 8: SO-10 Entrada e Saída: Software

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

Page 9: SO-10 Entrada e Saída: Software

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)

Page 10: SO-10 Entrada e Saída: Software

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...

Page 11: SO-10 Entrada e Saída: Software

11 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari

Page 12: SO-10 Entrada e Saída: Software

12 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari

Page 13: SO-10 Entrada e Saída: Software

13 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari

Page 14: SO-10 Entrada e Saída: Software

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

Page 15: SO-10 Entrada e Saída: Software

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

Page 16: SO-10 Entrada e Saída: Software

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

Page 17: SO-10 Entrada e Saída: Software

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...

Page 18: SO-10 Entrada e Saída: Software

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)

Page 19: SO-10 Entrada e Saída: Software

19 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari

Page 20: SO-10 Entrada e Saída: Software

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

Page 21: SO-10 Entrada e Saída: Software

21 Sistemas Operacionais -Entrada e Saída Eduardo Nicola F. Zagari

Page 22: SO-10 Entrada e Saída: Software

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