SOP - TADS
Gerência de Entrada/Saída - 2
Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br
Material cedido por: Prof. Rafael Rodrigues Obelheiro
Prof. Maurício Aronne Pillon
Cronograma
• Objetivos do Software de E/S
• Técnicas para realizar E/S
• Camadas do Software de E/S
• Discos magnéticos
Objetivos do Software de E/S
• Interdependência
do
dispositivo:
Programas de usuário são capazes de
lidar com quaisquer dispositivos
– Os programas não devem se preocupar com
as diferenças dos dispositivos
– O SO deve tratar as diferenças
• Ex.: Um programa que lê uma entrada deveria ser capaz de ler de: um disco, um CD, um teclado, sem que sejam necessárias modificações para cada dispositivo
3/48
Objetivos do Software de E/S
• Nomeação uniforme: Todos os dispositivos
devem ser nomeados da mesma maneira,
sem distinções
– O nome de um arquivo, ou dispositivo deve ser
simplesmente uma cadeia de caracteres
– Ex. No UNIX todos os discos podem ser
integrados na hierarquia do sistema de arquivos
• Ao montar um dispositivo USB em um diretório, significa que ao copiarmos os dados ao diretório copiaremos ao dispositivo USB
Objetivos do Software de E/S
• Tratamento de Erros: Muitos erros de
dispositivos de E/S podem ser tratados
em baixo nível, sem chegar ao usuário
– O ideal é tratar o mais próximo possível do
hardware
– A recuperação de um erro pode ser feita com
transparência, em baixo nível, sem que níveis
superiores saibam que ele ocorreu
• Ex.: Verificação de consistência de um dado do disco
5/48
Objetivos do Software de E/S
• Tipo de transferência:
– Síncrona: Bloqueante
• O SO precisa implementar através de operações assíncronas
– Assíncrona: Orientada a interrupção
• O chamador não espera pelo resultado, ele solicita a operação e mais tarde recupera o resultado • Em uma operação read, o programa é
automaticamente suspenso até que os dados estejam disponíveis no buffer
Objetivos do Software de E/S
• Utilização de buffer:
– Operações de E/S exigem que o SO gerencie
buffers de armazenamento temporário de
dados
• Dados provenientes de um dispositivo não devem ser armazenados diretamente em seu destino • Transferência de dados entre buffers pode ter um
impacto significativo no desempenho
7/48
Técnicas para realizar E/S
• E/S programada
• E/S orientada a interrupções
• E/S usando DMA
Técnicas para realizar E/S
• E/S programada [1/2]
– A CPU deve fazer todo o trabalho
• Forma mais simples de se implementar
– Exemplo: Impressão de uma string
1. SO copia uma String para um buffer
2. Dados do buffer são enviados caractere a caractere para a impressora
– É caracterizada pela espera ocupada ou
polling
– CPU fica muito tempo ociosa
• Esse tipo de solução é adequado para sistemas embarcados ou se a E/S é muito rápida (ociosidade pequena)
9/48
Técnicas para realizar E/S
• E/S programada [2/2]
Técnicas para realizar E/S
• E/S orientada a interrupções [1/2]
– Ao invés da CPU esperar pelo dispositivo, ela inicia a operação de E/S e espera uma interrupção para continuar
• Outro processos podem ser executados até ocorrer a interrupção
(a) Início da operação (b) tratamento da interrupção 11/48
Confirma o recebimento Retorna para o processo que executava antes da interrupção Impressora esta preparada para aceitar o próximo, gera uma interrupção
Não existem mais caracteres a imprimir, acorda o solicitante
Imprime o caractere
Técnicas para realizar E/S
• E/S orientada a interrupções [2/2]
– Mais eficiente que a E/S programada
• Diminui a ociosidade
– CPU ainda é interrompida para cada
caractere impresso
Técnicas para realizar E/S
• E/S usando DMA
– CPU programa o controlador e é interrompida
somente no final da operação
• Por exemplo, depois de todo buffer ser impresso
– Em geral é mais eficiente
• CPU é menos interrompida e fica livre para outros processos
• Problema: O controlador de DMA pode ser mais lento que a CPU
– Assim não será capaz de dirigir o dispositivo em sua capacidade máxima
13/48
Camadas do Software de E/S
• Software de E/S é organizado em 4
camadas
– Cada uma tem uma função bem definida
15/48
Camadas do Software de E/S
• Tratadores de interrupção
– As interrupções devem ser escondidas o máximo possível
• Uma forma de fazer isso é bloquear o driver que iniciou uma operação de E/S até que uma interrupção indique que a E/S foi completada
– Rotina de tratamento de interrupção cumpre sua tarefa
• E então desbloqueia o driver que a chamou
– Tratamento de interrupções em software envolve: • Trocar de contexo (processo corrente tratador) • Tratar a interrupção
• Escolher um novo processo para executar (escalonador) • Trocar de contexto (tratador novo processo)
Camadas de Software de E/S
• Drivers de dispositivo [1/3]
– Vimos que cada controlador tem registradores para controle e status
– O número de registradores variam de dispositivo para dispositivo
– Cada dispositivo precisa de um código específico de tratamento (driver de dispositivo)
• o driver de um mouse deve tratar dados relacionados a movimento e a botões pressionados;
• o driver de um disco guarda informações como: saber sobre trilhas, setores, cabeçotes, movimento do braço, tempos de ajuste, etc.
– Geralmente, os drivers são escritos pelo fabricante • Relacionado a questões de confiabilidade e segurança
– É desejável que um driver trate uma classe de dispositivos • Fortemente relacionados, sejam muito semelhantes
• Não podemos usar um driver de um mouse para um joystick17/48
Camadas de Software de E/S
• Drivers de dispositivos [2/3]
– São classificados em duas categorias:
• Dispositivos de blocos: – Disco, fita....
• Dispositivos de caractere: – Mouse, teclado, impressora
– Em geral os SO definem uma interface padrão
para cada categoria
• Procedimentos que o restante do SO pode utilizar para fazer o driver trabalhar
– Algumas funções de um driver:
• Tratar requisições abstratas de leitura ou gravação • Inicializar o dispositivo
• Tratar necessidade de energia
Camadas de Software de E/S
Toda comunicação é feita pelo barramento
19
Camadas de Software de E/S
• Software E/S independente de dispositivo
– Embora boa parte do software de E/S seja
específica do dispositivo, outras partes são
independentes
– Tratar
funções
comuns
para
todos
dispositivos de E/S:
1. Interface uniforme para os drivers de dispositivos 2. Uso de buffers de E/S
3. Relatório de erros
Camadas de Software de E/S
• Interface uniforme para os drivers dos
dispositivos
– Fazer todos os dispositivos de E/S e drivers
parecerem mais ou menos os mesmos
– Se
os
dispositivos
possuem
interfaces
diferentes, a cada novo dispositivo o SO deve
ser modificado
• Reconstruir o SO para cada dispositivo não é uma boa ideia.
21/48
Camadas de Software de E/S
• Interface uniforme para os drivers de dispositivo
a) Sem interface-padrão do driver
– Funções diferem de driver para driver
Camadas de Software de E/S
• Uso de buffers de E/S
a) Entrada sem uso de buffer
b) Uso de buffer no espaço do usuário c) Uso de buffer no núcleo
d) Buffer duplo no núcleo 23/48
Camadas de Software de E/S
• Relatório de erros
– Forma como o SO vai lidar com os erros
ocorridos durante uma E/S
• São comuns
– Podemos classifica-los em dois tipos:
• Erros de programação
– Escrever em um dispositivo de entrada (teclado) – Fornecimento de endereços inválidos
» Atitude a ser tomada: retornar o código (tipo) de erro ao processo envolvido
• Erros reais de E/S
– Tentativa de escrita em um bloco danificado – Podem ser irrecuperáveis
Camadas de Software de E/S
• O mau uso, ou má programação de
drivers de dispositivos está relacionado a
grande parte dos problemas de um SO
25/48
Camadas de Software de E/S
• Alocação/Liberação de recursos
– Alguns dispositivos tais como gravadores de
CD/DVD, podem ser usados por apenas um
processo por vez
– O SO deve examinar as requisições de uso de
um dispositivo, podendo aceita-las ou rejeita-las
– Associar chamadas de sistema ao dispositivo
(open)
• Caso o dispositivo não possa ser alocado, a chamada pode falhar ou o chamador ser bloqueado
– Esta é uma decisão de projeto
Camadas de Software de E/S
• Software de E/S no espaço do usuário
– Chamadas de sistema e funções de biblioteca
que permitem ao usuário fazer E/S
• read, write, printf, scanf,...
– Spooling
• Lidar com dispositivos dedicados a E/S em sistemas de multiprogramação
• Ex.: Uma impressora:
– Ao invés de cada usuário abrir o arquivo especial de caractere para imprimir, eles enviam para um diretório que têm um processo responsável por fazer isto
27/48
Camadas de Software de E/S
Discos
Discos magnéticos
• O disco é um dos dispositivos de E/S mais
importantes
– Serve não apenas como memória secundária (de
massa) como também oferece suporte a outras
funções do SO
• Swapping • Memória virtual
– Consideremos aqui discos magnéticos (hard
disk)
• Princípios de funcionamento similares a outros dispositivos como CD e DVD
Discos magnéticos
• Organização dos discos [1/2]
– Um disco é formado por um conjunto de pratos • Superfícies cobertas por um material ferromagnético
– A superfície do disco é magnetizada para armazenar os bits desejados
• Cabeça (cabeçote) de leitura e escrita converte bits de/para padrões magnéticos registrados na superfície do disco • Há uma ou duas cabeças por superfície
– Cada disco é organizado em trilhas concêntricas – Cada trilha é dividida em setores de tamanho fixo – Um cilindro representa uma trilha em todas as
superfícies
31/48
Discos magnéticos
Discos magnéticos
• Formato dos setores
– Cada setor possui o seguinte formato
• Preâmbulo: marca o início do setor
• Dados: geralmente em blocos de 512 bytes • ECC: um código de correção de erros
– Permite corrigir erros de leitura em alguns bits de dados
33/48
Discos magnéticos
• Evolução dos parâmetros de disco
– Tempo de posicionamento diminuiu 7 vezes – Taxa de transferência aumentou 1300 vezes
Discos magnéticos
• Acesso aos dados
– Para acessar dados, é preciso localizar o bloco
desejado
• Superfície, trilha setor
– Existem dois métodos básicos de endereçamento
• CHS (cylinder, header, sector): usando os
componentes
• LBA (Linear Block Adressing): usando um nº de bloco
– O método mais usado atualmente é o LBA
• O controlador é responsável por converter um número de bloco lógico nos parâmetros físico adequados • Permite mascarar detalhes
– Variações do número de setores por trilhas: zonas – Setores defeituosos
35/48
Discos magnéticos
• Desempenho do disco
– Para ler e escrever dados é necessário
posicionar a cabeça de leitura e gravação
– O tempo da operação é dado por três
componentes:
• Tempo de posicionamento (seek): tempo necessário para levar o braço até a trilha desejada
• Latência rotacional: tempo necessário para que o setor desejado passe sobre o cabeçote
• Tempo de transferência: tempo necessário para transferir efetivamente os dados
Discos magnéticos
• Determinando os componentes [1/3]
– O tempo de seek é uma característica do disco,
e tipicamente é fornecido pelo fabricante
• Muitas vezes se trabalha com um valor médio
– A latência rotacional depende da velocidade de
rotação e de qual setor está passando em baixo
do cabeçote quando o braço chega à trilha
desejada
• No melhor caso o setor desejado é o próximo • No pior caso, o setor desejado acabou de passar • Na média, a latência é dada pelo tempo de meia
rotação
37/48
Discos magnéticos
• Determinando os componentes [2/3]
– O tempo de transferência depende da
velocidade de rotação e do tamanho e
densidade dos setores
• b é a quantidade de bytes em um setor • r é a velocidade de rotação (rps)
• N é a quantidade de bytes em uma trilha
Discos magnéticos
39/48
r é rps
b é nº bytes por setor
N é quantidade de bytes em uma trilha
Discos magnéticos
• Exemplo 1:
– Qual o tempo médio necessário para ler um
setor de um disco com os seguintes
parâmetros?
• Tempo de seek médio: 10 ms • Velocidade de rotação: 10.000 rpm • Bytes/setor: 512 bytes
Discos magnéticos
• Exemplo 2:
– Qual o tempo médio necessário para ler
cinco setores consecutivos em um disco com
os seguintes parâmetros:
• Tempo de seek médio: 6,9 ms • Tempo de rotação: 8,33 ms • Bytes/setor: 512 • Setores/trilha: 281 41/48
Discos magnéticos
• Entrelaçamento [1/2]
– Alguns discos não conseguem ler setores
adjacentes de forma consecutiva
• devido à transferência do bloco de dados do buffer do controlador para a memória, o próximo setor passa pelo cabeçote antes que a leitura possa iniciar
• Isso implica em uma rotação adicional para cada setor
– Uma solução é inserir setores entre setores
logicamente adjacentes
• Dá tempo para que o próximo setor seja lido
Discos magnéticos
• Entrelaçamento [2/2]
a) Sem entrelaçamento
b) Entrelaçamento simples
c) Entrelaçamento duplo
43/48Discos magnéticos
• Escalonamento de disco
– Como o tempo de posicionamento domina o tempo de acesso, redução nesse tempo melhoram o desempenho dos acessos ao disco
– Embora o tempo de posicionamento seja uma característica do disco, é possível mudar a ordem que as requisições de escrita e leitura são atendidas para minimizar os deslocamentos do braço
– Essa é a função dos algoritmos de escalonamento
de disco • FCFS • SSF • Elevador
Discos magnéticos
• FCFS (first come first served)
– As requisições são atendidas na ordem de
chegada
– Consideremos um exemplo:
• Disco tem 40 cilindros
• Está sendo atendida uma requisição no cilindro 11 • Chegam requisições para os cilindros:
1,36,16,34,9,12
• A distância total para percorrer o conjunto de requisições é de 111 cilindros
45/48
Discos magnéticos
• SSF (Shortest Seek First)
– A requisição seguinte a ser atendida é aquela mais próxima do cilindro atual
– Algumas requisições podem levar muito tempo para serem atendidas
• Concentração de requisições em uma região do disco – Exemplo:
Discos magnéticos
• Algoritmo do elevador
– Atende todas as requisições em uma direção
– Quando chega no final, muda a direção e atende
as demais
– Exemplo (inicialmente subindo):
47/48