SO-09 Entrada e Saída: Hardware

27
Sistemas de Entrada/Saída Princípios de Hardware

description

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

Transcript of SO-09 Entrada e Saída: Hardware

Page 1: SO-09 Entrada e Saída: Hardware

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

Page 2: SO-09 Entrada e Saída: Hardware

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

  Visão Geral   Princípios de Hardware

  Dispositivos de E/S   Estrutura Típica do Barramento de um PC   Controladores de Dispositivos   Interrupções   Acesso Direto à Memória

Page 3: SO-09 Entrada e Saída: Hardware

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

  Dispositivos podem variar de diversas maneiras:   Transf. por caractere (terminal) ou por bloco deles (disco)   O acesso aos dados armazenados pode ser seqüencial (modem)

ou aleatório (CD-ROM)   Os dados podem ser transferidos de forma síncrona (fita) ou

assíncrona (teclado)   Os dispositivos podem ser restritos a um único processo (fi-ta) ou

compartilhados simultaneamente por vários (teclado)   O acesso pode ser apenas para leitura (CD-ROM), apenas para

escrita (CRT) ou para leitura e escrita (disco)   A velocidade de acesso pode variar muito (freqüentemente, estes

dispositivos são os mais lentos de um sistema computacional)

Page 4: SO-09 Entrada e Saída: Hardware

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

  Principais objetivos:   estabelecer uma interface que seja a mais simples possível para

que as aplicações possam controlar as distintas características dos dispositivos de entrada/saída

  otimizar a entrada/saída para obtenção de um maior paralelismo, tendo em vista que tais dispositivos são em geral componentes críticos para o desempenho

  Enfim,

Controlar todos os dispositivos de entrada/saída (E/S) do computador, emitindo comandos para os dispositivos,

atendendo interrupções e manipulando erros.

Page 5: SO-09 Entrada e Saída: Hardware

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

  Estruturação em camadas de HW e SW, a fim de prover uma interface simples e confiável para o usuário e suas aplicações.

  Desta forma, as camadas inferiores escondem das superiores os diversos detalhes (características) de cada periférico e suas diferenças (velocidade de operação, unidade de transferência, representação de dados, tipos de operação etc).

Page 6: SO-09 Entrada e Saída: Hardware

6 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 7: SO-09 Entrada e Saída: Hardware

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

  Responsáveis pela comunicação entre o computador e o mundo externo.

  Muitos tipos de dispositivos são usados em computadores, como:   dispositivos de armazenamento (discos, fitas)   dispositivos de transmissão (placas de rede, modems)   dispositivos de interface com usuários (tela, teclado, mouse)

  A transferência de dados, realizada por intermédio dos controladores, pode ser através de blocos de informações ou palavra a palavra.

Page 8: SO-09 Entrada e Saída: Hardware

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

  São classificados em:

  Dispositivos de blocos:  armazenam informações em blocos de tamanho fixo

(normalmente entre 128 e 4096 bytes)  cada bloco possui seu próprio endereço  é possível ler ou escrever cada bloco independentemente

(acessando o bloco pelo seu endereço)  Podem ser:

– Acesso Direto: p. ex., disco magnético – Acesso Seqüencial: p. ex., fita magnética

Page 9: SO-09 Entrada e Saída: Hardware

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

  Dispositivos de caracteres:  enviam ou recebem uma seqüência de caracteres sem estar

estruturada no formato de blocos  seqüência de caracteres não é endereçável (não são possíveis

operações de acesso aos dados)  Exemplos:

–  terminais, impressoras, interfaces de rede e leitoras óticas

  Existem exceções:  p. ex., relógios (não são endereçáveis e nem geram ou aceitam

filas de caracteres): tudo o que fazem é gerar interrupções em intervalos de tempo regulares

Page 10: SO-09 Entrada e Saída: Hardware

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

  A comunicação de um dispositivo com o sistema computacional é feita através do envio de sinais (cabo ou ar) num ponto de conexão chamado de porta.

  O meio usado por um ou mais dispositivos para conexão com o computador é chamado de barramento.

  Para cada barramento, é definido um protocolo que especifica um conjunto de mensagens que podem ser enviadas pelos fios.

Page 11: SO-09 Entrada e Saída: Hardware

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

barr

amen

to S

CSI

Barramento PCI

Controlador de disco IDE

disco

disco

disco

disco

Controlador SCSI

disco

disco

disco

disco

Interface do barramento de expansão teclado

barramento de expansão

porta paralela porta serial

Controlador de terminal gráfico

Controlador de memória

monitor processador

memória cache

memória

Page 12: SO-09 Entrada e Saída: Hardware

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

  Unidades de E/S consistem tipicamente de   Componentes mecânicos (o dispositivo propriamente dito)   Componentes eletrônicos (o controlador)

  Tal diferença deve ser ressaltada, uma vez que o SO vê o controlador e não o dispositivo

  Normalmente, mini e microcomputadores usam um barramento único para comunicação entre CPU e os controladores (através de device drivers)

  Mainframes freqüentemente usam um modelo diferente, no qual múltiplos barramentos e computadores especializados de E/S (canais de E/S) aliviam parte da carga da CPU

Page 13: SO-09 Entrada e Saída: Hardware

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

  Como o processador envia comandos e dados a um controlador para que seja feita uma transf. de dados?   O controlador possui memória e registradores próprios para armazenar

dados e sinais de controle, de forma a executar instruções enviadas pelo device driver

  O SO realiza E/S, escrevendo comandos e seus parâmetros nestes registradores dos controladores.  As instruções de E/S especiais podem ser usadas para especificar

a transferência de um byte ou palavra para uma porta de E/S, que tem um determinado endereço

 A instrução de E/S faz com que o dispositivo apropriado seja selecionado de acordo com o sinal transmitido no barramento e que os bits sejam então transferidos para um registrador ou a partir de um registrador do disp.

Page 14: SO-09 Entrada e Saída: Hardware

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

 Uma alternativa à operação de E/S, é que o controlador forneça suporte à E/S mapeada em memória. Nesse caso, os registradores do controlador correspondem à determinados endereços no espaço de endereçamento do processador. As operações de E/S são, então, executas usando-se instruções normais de transferência de dados, que correspondem a ler ou escrever valores nos registradores do dispositivo.

 Alguns sistemas usam ambas as técnicas, como é o caso dos PCs: um controlador de terminal gráfico tem portas de E/S para operações básicas, mas uma região grande de memória é usada para mapeamento do conteúdo de telas.

Page 15: SO-09 Entrada e Saída: Hardware

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

  Um exemplo: Controlador de Terminal Gráfico   trabalha como um dispositivo serial de bits e em baixo nível, ou

seja, lê da memória o byte contendo o caractere a ser exibido e gera os sinais usados na modulação do feixe do CRT para causar a escrita na tela

  o controlador também gera os sinais para o feixe CRT fazer o retraço horizontal após ele ter terminado de esquadrinhar a linha, bem como, sinais para fazer o retraço vertical após a tela toda ter sido esquadrinhada;

Page 16: SO-09 Entrada e Saída: Hardware

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

Retraço Vertical

Retraço Horizontal

Page 17: SO-09 Entrada e Saída: Hardware

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

  O problema da Espera em Ciclo (CPU x Controlador):   Controlador usa bit ocupado no registrador de status   CPU usa bit processar no registrador de controle   Suponha que a CPU escreva dados em uma porta, comunicando-se

com o controlador, da seguinte forma:  CPU lê repetidamente o bit ocupado  CPU liga o bit escrever no reg. de controle e armazena

saída no reg. de saída de dados  CPU liga bit processar  Quando controlador nota bit processar ligado, ele liga bit ocupado

Page 18: SO-09 Entrada e Saída: Hardware

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

 Controlador lê registrador de controle e realiza a operação de escrita no dispositivo

 Controlador desliga bit processar, desliga o bit erro no registrador de status (operação com sucesso) e desliga bit ocupado (operação terminada).

  Problema: No passo 1, CPU faz espera em ciclo  Se tempos da CPU e do controlador forem diferentes...  ...CPU deve ser alocada à realização de outras tarefas

  Problema: p.ex., dados chegando a uma porta serial, teclado etc  Solução: exec instr/testa/exec instr/testa...(ineficiente)  Então, como avisar à CPU que o controlador está ocioso?

Mecanismo de Interrupções

Page 19: SO-09 Entrada e Saída: Hardware

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

  Quando um comando é aceito, a CPU é liberada pelo SO para outra tarefa.  Não é necessário que a CPU fique testando repetidamente se o

dispositivo já está pronto, o que seria muito ineficiente. Isto é possível, através do mecanismo de interrupções.

  Quando o comando termina de ser executado, o controlador causa uma interrupção, fazendo o SO tomar controle da CPU e testar o resultado da operação.

  A CPU obtém o resultado lendo um ou mais bytes nos registradores de saída de dados do controlador

Page 20: SO-09 Entrada e Saída: Hardware

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

  As interrupções são muito usadas em SOs modernos para o tratamento de eventos assíncronos (p. ex., um controlador ficar pronto para operações de E/S, falhas de hardware ou chamadas a rotinas do sistema), desviando o controle para rot. do núcleo.

  Funcionamento:   O hardware da CPU tem um fio chamado de linha de requisição de

interrupções, que é testado pela CPU depois da execução de cada instrução

  Quando a CPU detecta que um controlador enviou um sinal na linha de requisição de interrupções (provocou uma interrupção), ela armazena alguns poucos valores referentes ao seu estado na pilha do processo (PC, SP etc) e desvia para uma rotina de tratamento de interrupções em um determinado endereço de memória.

Page 21: SO-09 Entrada e Saída: Hardware

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

  O tratador de interrupções realiza (trata) o processamento necessário e executa uma instrução de retorno da interrupção, que faz a CPU retornar ao estado anterior à interrupção.

  Recursos mais complexos:   Desabilitação de interrupções (em fases críticas)

 CPU usa 2 linhas de requisição de interrupções: – uma para requisições que não podem ser desabilitadas

(erros de memória irrecuperáveis, p.ex.) – outra para aquelas que podem ser desabilitadas (os

dispositivos fazem suas requisições por estas linhas)

Page 22: SO-09 Entrada e Saída: Hardware

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

  Vetor de Interrupções  Cada interrupção gera um endereço que, na maioria das

arquiteturas, é usado como um índice em uma tabela (vetor de interrupções), que contém endereços de memória das rotinas de tratamento de interrupção

Page 23: SO-09 Entrada e Saída: Hardware

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

  Níveis de prioridade de interrupções  Esse sistema permite à CPU protelar o tratamento de

interrupções de baixa prioridade sem desabilitar todas as interrupções e possibilita que o controle da execução de uma interrupção seja interrompido e transferido para uma interrupção de alta prioridade.

 Exemplos de situações que geram interrupções: – Operações de E/S – Tratamento de exceções (div. por zero, end. proteg.) – Mecanismo de paginação – Chamadas a rotinas do núcleo (system calls) – Gerenciamento do fluxo de execução do núcleo (per-mite

que trabalhos urgentes sejam tratados primeiro)

Page 24: SO-09 Entrada e Saída: Hardware

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

  Operação de leitura em disco sem suporte à DMA:   Device Driver executa operação de E/S gravando comando no

registrador do controlador   Controlador lê o bloco do dispositivo, bit a bit, para seu buffer

interno   Controlador executa verificação de erros (checksum)   Controlador causa interrupção   SO reassume CPU e lê o bloco do buffer do controlador para a

memória byte a byte (chamado de E/S programada) »  Isto consome um tempo apreciável da CPU » Solução: usar DMA (Direct Memory Access)

Page 25: SO-09 Entrada e Saída: Hardware

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

  Controladores que suportam DMA:   CPU (SO) fornece, além do endereço do bloco a ser lido:

 endereço de memória para onde o bloco deve ser copiado  número de bytes a serem transferidos

  Controlador lê bloco   Controlador efetua checksum   Controlador de DMA copia, via barramento, byte a byte, as

informações do buffer para a memória principal   Controlador causa interrupção   SO reassume CPU com os dados já disponíveis ao processo que

os solicitou

Page 26: SO-09 Entrada e Saída: Hardware

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

Barramento PCI

Controlador de disco IDE

disco

disco

disco

disco

barramento entre memória e CPU

DMA/barramento/ controlador de interrupções

processador

memória cache

memória

Sinais: Requisição de DMA Confirmação de DMA

Page 27: SO-09 Entrada e Saída: Hardware

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

  Por que o controlador puro não armazena diretamente os bytes na memória, tão logo ele os obtenha? Isto é, por que usar um buffer interno?   Diferença de velocidade ⇒ vários acessos ao barramento

  Ainda há um problema: enquanto controlador faz transferência de dados de/para a memória, próximo setor passa por debaixo da cabeça do disco   Solução: intercalação

0 0 0

1 1

1 2 2

2

3

3 3

4 4

4 5

5 5

6 6

6 7

7 7

Sem Intercalação Intercalação Simples Intercalação Dupla