Você está na página 1de 63

Sistemas Operacionais - Entrada/Saı́da

Rafael Sachetto Oliveira


sachetto@ufsj.edu.br

25 de outubro de 2012

Entrada/Saı́da Rafael Sachetto Oliveira – 1 / 63


Introdução

Princı́pios do hardware de E/S


■ Programadores priorizam a interface apresentada ao software
- os comandos que o hardware aceita, etc.

Entrada/Saı́da Rafael Sachetto Oliveira – 2 / 63


Dispositivos E/S

São divididos normalmente em duas categorias:


■ Dispositivos de blocos: armazenam informação em blocos;
■ Dispositivos de caractere: enviam ou recebem fluxos de
caracteres sem considerar qualquer estrutura de blocos.
■ Alguns dispositivos não se enquadram neste modelo de
classificação: Ex. relógios

Entrada/Saı́da Rafael Sachetto Oliveira – 3 / 63


Dispositivos E/S

■ O software de E/S deve levar em consideração a velocidade


do hardware.

Entrada/Saı́da Rafael Sachetto Oliveira – 4 / 63


Controladores de dispositivos

■ Constituı́das normalmente de um componente mecânico e


um eletrônico;
■ O componente eletrônico é chamado de controlador do
dispositivo;
■ O controlador de disco é responsável por exemplo por
converter um fluxo serial de dados um bloco de bytes,
verificar e corrigir erros e copiar os dados para a memória.

Entrada/Saı́da Rafael Sachetto Oliveira – 5 / 63


Controladores de dispositivos

Entrada/Saı́da Rafael Sachetto Oliveira – 6 / 63


E/S mapeada na memória

■ Controladores possuem registradores e buffers para a


comunicação com a CPU.
■ Como a CPU se comunica com os registradores e buffers dos
controladores?
◆ Existem duas possibilidades;

Entrada/Saı́da Rafael Sachetto Oliveira – 7 / 63


E/S mapeada na memória

■ Cada registrador de controle é associado a um número de


porta de E/S, um inteiro de 8 ou 16 bits;
■ O conjunto de todas as portas formam o espaço de porta de
E/S;
■ Somente o sistema operacional pode acessá-las através de
instruções especiais;

IN REG, PORT
OUT PORT, REG

Entrada/Saı́da Rafael Sachetto Oliveira – 8 / 63


E/S mapeada na memória

■ Segunda alternativa: mapear todos os registradores de


controle no espaço de endereçamento de memória;
■ Cada registrador de controle é associado a um endereço de
memória único ao qual nenhuma memória é associada;
■ Os processadores atuais usam um esquema hı́brido;

Entrada/Saı́da Rafael Sachetto Oliveira – 9 / 63


E/S mapeada na memória

Entrada/Saı́da Rafael Sachetto Oliveira – 10 / 63


E/S mapeada na memória

Como isso funciona?


■ Quando a CPU quer ler uma palavra, ela coloca o endereço
na linha do barramento e então emite um sinal READ;
■ Uma segunda linha de sinal é usada para informar se o
espaço requisitado é de memória ou E/S;
■ Se existe somente um espaço de endereçamento os módulos
de memória e os controladores comparam suas faixas de
endereçamento com o endereço dado pela CPU;

Entrada/Saı́da Rafael Sachetto Oliveira – 11 / 63


E/S mapeada na memória

Vantagens:
■ Não são necessárias instruções especiais: os drivers podem
ser escritos em C;
■ Não é necessário proteger os endereços de E/S pois os
mesmos não serão mapeados para o usuário;
■ Se cada dispositivo tem seus registradores de controle em
uma página, o sistema operacional pode dar a um usuário o
controle sobre um dispositivo especı́fico;
■ As instruções capazes de referenciar a memória podem ser
usadas para referenciar os registradores;

Entrada/Saı́da Rafael Sachetto Oliveira – 12 / 63


E/S mapeada na memória

Desvantagens:
■ Cache: Os valores dos registradores especiais não devem ir
para a cache;
■ Todos os módulos de memória e todos os dispositivos de
E/S devem examinar todas as referências de memória;

Entrada/Saı́da Rafael Sachetto Oliveira – 13 / 63


E/S mapeada na memória

Entrada/Saı́da Rafael Sachetto Oliveira – 14 / 63


Acesso direto à memória(DMA)

Quando não há DMA:


■ O Controlador lê um bloco do dispositivo serialmente e
verifica erros;
■ Em seguida ele causa uma interrupção;
■ O sistema operacional lê os bytes do controlador para a
memória principal;

Entrada/Saı́da Rafael Sachetto Oliveira – 15 / 63


Acesso direto à memória(DMA)

Entrada/Saı́da Rafael Sachetto Oliveira – 16 / 63


Interrupções revisitadas

Entrada/Saı́da Rafael Sachetto Oliveira – 17 / 63


Interrupções precisas e imprecisas

Propriedades de uma interrupção precisa:


■ O contador de programa (Program Counter) é salvo em local
conhecido.
■ Todas as instruções anteriores à aquela apontada pelo PC
foram executadas.
■ Nenhuma instrução posterior à apontada pelo PC foi
executada.
■ O estado de execução da instrução apontada pelo PC é
conhecido.

Entrada/Saı́da Rafael Sachetto Oliveira – 18 / 63


Interrupções precisas e imprecisas

Entrada/Saı́da Rafael Sachetto Oliveira – 19 / 63


Objetivos do software de E/S

■ Independência do dispositivo;
■ Nomeação uniforme;
■ Os erros devem ser tratados o mais próximo do hardware;
■ Transferências sı́ncronas ou assı́ncronas (orientadas a
interrupção)
■ Utilização de buffer;
■ Dispositivos compartilhados vs Dedicados;

Entrada/Saı́da Rafael Sachetto Oliveira – 20 / 63


E/S programada

Entrada/Saı́da Rafael Sachetto Oliveira – 21 / 63


E/S programada

■ Utiliza espera ociosa (polling);

Entrada/Saı́da Rafael Sachetto Oliveira – 22 / 63


E/S usando interrupção

Entrada/Saı́da Rafael Sachetto Oliveira – 23 / 63


E/S usando DMA

Entrada/Saı́da Rafael Sachetto Oliveira – 24 / 63


Camadas de software E/S

Entrada/Saı́da Rafael Sachetto Oliveira – 25 / 63


Tratadores de interrupção

1. Salva quaisquer registradores que não foram salvos pelo software de interrupção.
2. Estabelece um contexto para a rotina de tratamento da interrupção.
3. Estabelece uma pilha para a rotina de tratamento da interrupção.
4. Sinaliza o controlador de interrupção. Se não há um controlador de interrupção
centralizado, reabilita a interrupção.
5. Copia os registradores de onde foram salvos para a tabela de processos.
6. Executa a rotina de tratamento da interrupção.
7. Escolhe o próximo processo a ser executado.
8. Estabelece o contexto da MMU para o próximo processo a ser executado.
9. Carrega os registradores do novo processo, incluindo sua PSW.
10. Inicializa a execução do novo processo.

Entrada/Saı́da Rafael Sachetto Oliveira – 26 / 63


Drivers de dispositivo

■ Cada dispositivo de E/S ligado ao computador precisa de um


código especı́fico para funcionar: o driver do dispositivo;
■ Cada driver trata normalmente um tipo de dispositivo, ou no
máximo uma classe;
■ O Driver tem que ser parte do núcleo do sistema
operacional;
■ Isolar os drivers do núcleo pode ser mais seguro;

Entrada/Saı́da Rafael Sachetto Oliveira – 27 / 63


Entrada/Saı́da Rafael Sachetto Oliveira – 28 / 63
Drivers dos dispositivos

■ A maioria dos sistemas operacionais define uma interface


para os dispositivos de blocos e outra para os dispositivos de
caractere
■ Rotinas para ler/escrever um bloco ou ler/escrever cadeias
de carateres;
■ Atualmente os sistemas podem carregar os drivers durante a
execução;

Entrada/Saı́da Rafael Sachetto Oliveira – 29 / 63


Drivers de dispositivos

Ações de um driver tı́pico;


■ Verifica os parâmetros de entrada;
■ Traduz os parâmetros para o dispositivo especı́fico;
■ Verifica se o o dispositivo está em uso: se sim enfileira a
requisição;
■ Verifica se alguma parte mecânica precisa ser iniciada;
■ Começa a controlar o dispositivo;
■ O driver pode bloquear e esperar por uma interrupção ou
voltar imediatamente;
■ Verifica a fila de requisições e se bloqueia se não houver
nada a atender;

Entrada/Saı́da Rafael Sachetto Oliveira – 30 / 63


Software E/S independente de dispositivo

Entrada/Saı́da Rafael Sachetto Oliveira – 31 / 63


Interface uniforme para os drivers de
dispositivo

Entrada/Saı́da Rafael Sachetto Oliveira – 32 / 63


Uso de buffer

Entrada/Saı́da Rafael Sachetto Oliveira – 33 / 63


Uso de buffer

Entrada/Saı́da Rafael Sachetto Oliveira – 34 / 63


Relatório de erros

■ Muitos erros são especı́ficos do dispositivo e devem ser


tratados pelos drivers;
■ Classes de erros podem ser tratadas pelo software
independente de dispositivo.
■ Erros podem ser de programação. Ex: ler de um dispositivo
de saı́da;
■ Ou erros reais de E/S. Ex: leitura de um bloco danificado;

Entrada/Saı́da Rafael Sachetto Oliveira – 35 / 63


Alocação e liberação de dispositivos

■ O sistema operacional deve ser capaz de examinar as


requisições do uso do dispositivo, podendo aceitá-las ou não.

■ Os processos podem sr bloqueados até que o dispositivo seja


liberado.

Entrada/Saı́da Rafael Sachetto Oliveira – 36 / 63


Tamanho de bloco independente de
dispositivo

■ Fica a cargo do software independente de dispositivo


esconder detalhes como tamanho do bloco;
■ As camadas superiores lidam somente com os blocos lógicos;

Entrada/Saı́da Rafael Sachetto Oliveira – 37 / 63


Software E/S do espaço do usuário

Entrada/Saı́da Rafael Sachetto Oliveira – 38 / 63


Discos magnéticos

■ Discos são organizados em cilindros;


■ Cada cilindro contém tantas trilhas quando forem os
cabeçotes disponı́veis;
■ As trilhas são dividas em setores;

Entrada/Saı́da Rafael Sachetto Oliveira – 39 / 63


Discos magnéticos

Entrada/Saı́da Rafael Sachetto Oliveira – 40 / 63


Discos magnéticos

Entrada/Saı́da Rafael Sachetto Oliveira – 41 / 63


Discos magnéticos

■ O controlador transforma uma requisiçao (cilindro, cabeçote,


setor) em um posicionamento real.
■ LBA é usado nos discos atuais - 48-bits;

Entrada/Saı́da Rafael Sachetto Oliveira – 42 / 63


RAID

■ Arranjo redundante de discos baratos;

Entrada/Saı́da Rafael Sachetto Oliveira – 43 / 63


CD–ROMS

Entrada/Saı́da Rafael Sachetto Oliveira – 44 / 63


CD–ROMS

■ Um dispositivo de 40x envia dados a uma taxa de 40 x


153.600 bytes/s

Entrada/Saı́da Rafael Sachetto Oliveira – 45 / 63


DVD

Melhorias no DVD em relação ao CD:


■ Depressões menores (0,4 mı́cron contra 0,8 mı́cron dos CDs)
■ Um espiral mais estreito (0,74 mı́cron entre trilhas contra
1,6 mı́cron dos CDs)
■ Um laser vermelho (0,65 mı́cron contra 0,78 mı́cron dos
CDs)

Entrada/Saı́da Rafael Sachetto Oliveira – 46 / 63


Formatos definidos de DVDs:

■ Lado simples, camada simples (4,7 GB).


■ Lado simples, camada dupla (8,5 GB).
■ Lado duplo, camada simples (9,4 GB).
■ Lado duplo, camada dupla (17 GB).

Entrada/Saı́da Rafael Sachetto Oliveira – 47 / 63


DVD

Entrada/Saı́da Rafael Sachetto Oliveira – 48 / 63


Formatação de disco

■ Antes que o disco possa ser usado, cada prato deve receber
uma formatação de baixo nı́vel feita por software.
■ A formatação consiste em criar uma série de trilhas
concêntricas, cada uma com certo número de setores, com
pequenos intervalos entre eles;

Entrada/Saı́da Rafael Sachetto Oliveira – 49 / 63


Formatação de disco

■ É comum o uso de deslocalmento de cilindro (cylindric


skew )
■ A idéia é permitir que o disco leia várias trilhas em uma
operação contı́nua sem perder dados;
■ A intensidade do descolamento depende da geometria do
dispositivo;

Entrada/Saı́da Rafael Sachetto Oliveira – 50 / 63


Formatação de disco

Entrada/Saı́da Rafael Sachetto Oliveira – 51 / 63


Formatação de disco

■ Imagine um dispositivo de 10 mil rpm que leva 6 ms para


sofre uma rotação completa. Se uma trilha contém 300
setores, um novo setor passa sob seu cabeçote a cada 20 µs.
Se o tempo de posicionamento de uma trilha para outra
consecutiva é de 800 µs, 40 setores serão passados durante
o posicionamento, de modo que o deslocalmento de cilindro
deveria ser de 40 setores.

Entrada/Saı́da Rafael Sachetto Oliveira – 52 / 63


Formatação de disco

A formatação também afeta o desempenho:


■ Considere uma controladora com um buffer para um setor e
o comando para a leitura consecutiva de 2 blocos;
■ Após a leitura do primeiro bloco, o segundo bloco passa pelo
cabeçote, quando a cópia estiver completa o controlador tem
que esperar mais uma rotação para ler o bloco novamente;
■ Muitos controladores conseguem colocar uma trilha inteira
no buffer;

Entrada/Saı́da Rafael Sachetto Oliveira – 53 / 63


Formatação de disco

■ O disco pode ser então dividio em partições, consideradas


discos independentes;
■ A MBR (master boot record) contém a tabela de partições;
■ Cada partição pode receber um sistema de arquivos
diferente;

Entrada/Saı́da Rafael Sachetto Oliveira – 54 / 63


Algoritmos de escalonamento de braço de
disco

■ Fatores relacionados ao tempo de ler/escrever:


◆ Tempo de posicionamento (o tempo para mover o braço
para o cilindro correto).
◆ Atraso na rotação (o tempo necessário para rotar o setor
correto sob o cabeçote).
◆ Tempo de transferência real dos dados.

Entrada/Saı́da Rafael Sachetto Oliveira – 55 / 63


Algoritmos de escalonamento de braço de
disco

■ FCFS - Atende as requisições de leitura de disco na ordem


que elas aparecem;
■ Exemplo: 11, 1, 36, 16, 34, 9 e 12

Entrada/Saı́da Rafael Sachetto Oliveira – 56 / 63


Algoritmos de escalonamento de braço de
disco

■ SSF - Posicionamento mais curto primeiro;


■ Mantém uma lista de requisições pendentes para cada
cilindro:
■ Trata a próxima requisição como sendo a mais próxima da
posição atual do cabeçote;
■ Exemplo: 11, 1, 36, 16, 34, 9 e 12 seria tratada na ordem:
11, 12, 9, 16, 1, 34 e 36
■ As requisições distantes do meio podem obter um serviço
ruim;

Entrada/Saı́da Rafael Sachetto Oliveira – 57 / 63


Algoritmos de escalonamento de braço de
disco

Esse problema também pode ocorrer em um controlador de


elevador;
■ Solução: algoritmo do elevador.
■ Mover em uma direção até que não existam requisições
pendentes naquela direção, então mudar de direção;

Entrada/Saı́da Rafael Sachetto Oliveira – 58 / 63


Algoritmos de escalonamento de braço de
disco

■ Algumas otimizações podem ser empregadas:


◆ Se duas ou mais requisições estão pendentes para o
mesmo cilindro, o driver pode emitir uma requisição para
o setor que passará em seguida pelo cabeçote;
◆ Uso de cache é muito importante;

Entrada/Saı́da Rafael Sachetto Oliveira – 59 / 63


Tratamento de erros

Entrada/Saı́da Rafael Sachetto Oliveira – 60 / 63


Software de relógio

Obrigações tı́picas de um driver de relógio:


■ Manter a hora do dia.
■ Evitar que processos executem por um tempo maior que o
permitido.
■ Contabilizar o uso da CPU.
■ Tratar a chamada de sistema alarm feita pelos processos dos
usuários.
■ Fornecer temporizadores watchdog para partes do próprio
sistema.
■ Gerar perfis, monitorar, coletar estatı́sticas.

Entrada/Saı́da Rafael Sachetto Oliveira – 61 / 63


Software de relógio

Entrada/Saı́da Rafael Sachetto Oliveira – 62 / 63


Software de relógio

Entrada/Saı́da Rafael Sachetto Oliveira – 63 / 63