Fundamentos de Sistemas Operacionais Aula 16: Entrada e Saída: Estudo de Caso Diego Passos
Última Aula
Software de Entrada e Saída. Subsistema de E/S. Conjunto de camadas de abstração para realização de operações de E/S. SO usa device drivers para fazer manipulações específicas de dispositivos de E/S. SO provê camada com serviços comuns a todos os tipos de dispositivos. SO provê uma interface para o usuário (programador). Através de chamadas de sistema. Linguagens e bibliotecas fornecem abstrações mais altas. Há três modos de execução de uma E/S: Bloqueante, não-bloqueante e assíncrona.
Disco Rígido: Visão Geral
Por que estudar o Disco Rígido Há inúmeros dispositivos de E/S. Estudar todos seria inviável. O disco rígido (ou HD) é um dos dispositivos mais interessantes. É utilizado em diversas tarefas dentro do sistema: Armazenamento não-volátil. Swap.... É um dos poucos dispositivos nos computadores modernos que faz uso de operações mecânicas. Por isso: Tende a ser muito mais lento que os demais componentes. Tende a apresentar falhas muito mais frequentemente.
Outros Dispositivos de Armazenamento em Massa Há vários outros dispositivos deste tipo. Baseados em mídia removível: Cartões de memória. Pendrives CD, DVD, e Blu-ray. Há também outros não removíveis: SSDs. Usados em substituição aos HDs em netbooks. Empregam memória flash. HyperDrives. Usados em substituição aos HDs em servidores muito especializados. Empregam memória RAM e baterias (para manter informações permanentemente)
Domínio do Mercado HDs convencionais ainda dominam o mercado. Baixos preços. Grandes capacidades de armazenamento. É possível ter um PC com HD de 1TB a custo acessível.
Composição Física Composto por conjunto de discos metálicos. Chamados de pratos. Recobertos por uma película magnética. Giram em torno de um eixo comum. Há ainda um braço mecânico com cabeçotes de leitura e escrita.
Composição Lógica Cada superfície de um prato é dividida em trilhas. Circunferências concêntricas (centradas no eixo de rotação). Cada trilha é composta por setores. Arcos sobre a circunferência da trilha. Ângulos são fixos. Setores são conjuntos de bits. "Pedaços" da película do prato que armazenam fisicamente um bit. Conjunto de trilhas de um mesmo raio em todos os pratos é chamado de cilindro.
Composição Lógica (mais)
Representação de um Bit Bits são representados pela orientação magnética de partes da película que recobre os pratos. Vários tipos de modulação podem ser usados. A mais simples de todas é simplesmente definir duas orientações opostas. Exemplo: Orientação de dentro para fora do prato representa 0. Orientação de fora para dentro do prato representa 1. Durante a escrita, cabeçote gera um campo que polariza a película. Durante a leitura, o campo da película induz uma corrente no cabeçote.
Densidade de Bytes por Área Setores são divisões radiais das trilhas. Logo, toda trilha deve ter o mesmo número de setores. Fisicamente, isso significa que trilhas mais externas armazenam menos bytes por unidade de área. A densidade nestas trilhas é menor. Duas consequências: Tendência de falhas é maior nas trilhas internas. Alguns fabricantes testaram HDs de densidade homogênea. Trilhas mais externas têm mais setores. Mudança feita em hardware. Para o software, geometria continuava igual
Capacidade de Armazenamento de um HD Em geral, fabricantes identificam quatro informações em um HD: Número de cabeçotes (Heads ou h). Cada cabeçote corresponde a uma superfície de leitura/escrita. Número de cilindros (Cylinders ou c). Número de setores por trilha (Sectors ou s). Bytes por setor. A capacidade de um HD pode ser calculada pelo produto destes três valores. Exemplo: HD tem 16 cabeçotes,1016 cilindros, 51 setores e 512 bytes por setor. Capacidade é 424476672 bytes (400 MB).
Endereçamento de Dados em um HD Originalmente, os HDs só suportavam um modo de endereçamento de dados: o CHS. Três componentes: Cilindro. Cabeçote. Setor. Mais recentemente, surgiu o LBA (Linear Block Addressing). Setores do HD são vistos como sequenciais. Cada um recebe um identificador numérico único, começando do 0. Endereçamento é mais intuitivo. Pode-se facilmente converter um endereço do LBA para o CHS (e vice-versa). Basta saber as características do HD.
Tempo de Acesso de um HD
Operações Necessárias para Acesso Quando uma requisição de leitura ou escrita chega ao HD, este realiza uma sequência de três operações: Seek: posicionamento do cabeçote de leitura sobre a trilha desejada. Latência: espera até que o giro do prato faça a setor desejado se posicionar sob o cabeçote. Transferência: leitura/escrita efetiva, realizada durante a passagem do setor sob o cabeçote. Tempo total de acesso é dado pelo somatório dos tempos das três operações.
Tempos de Cada Operação O tempo de seek é determinado pela velocidade de movimentação do braço que manipula os cabeçotes. Em média, da ordem de 10 ms. O tempo de latência é determinado pela velocidade de rotação do disco (que varia de 3600 a 15000 RPM). Em média, da ordem de 5 ms. O tempo de transferência também depende da velocidade de rotação do disco. Bem menor que 1 ms. Os tempos de seek e latência também dependem das posições atuais do prato e do cabeçote. Tempo de seek domina o tempo total de acesso a disco.
Entrelaçamento Técnica para melhorar o tempo de acesso a disco. Também chamada de Interleaving. Processos, em geral, requisitam leitura de vários setores consecutivos. Exemplo, setores 14 e 15. Quando leitura do setor 14 termina,cpu (ou DMA) tem que fazer a requisição do setor 15. Neste intervalo, prato continua em rotação. Provavelmente, já passando pelo setor 15. Quando a requisição chega, setor 15 já passou. É preciso esperar uma nova revolução completa do prato.
Entrelaçamento (mais) Ideia do entrelaçamento: Não colocar setores de IDs consecutivos fisicamente consecutivas. Inserir outros setores intermediários. Usar um Fator de Entrelaçamento. Número de setores entre dois consecutivos.
Algoritmos de Escalonamento
Motivação Um HD é um dispositivo que pode receber várias requisições ao mesmo tempo. A ordem de grandeza do tempo de acesso de um HD é muito maior que a dos demais dispositivos da máquina. Por exemplo, nos 10 ms utilizados pela operação de seek, um processador de 2 GHz executa20 milhões de ciclos. Otimizaro tempo de acesso a disco é fundamental. Pequenos ganhos percentuais, são enormes em termos absolutos.
Objetivo O objetivo do escalonamento do HD é sempre maximizar a vazão. Quantidade de dados lidos/escritos por unidade de tempo. Uma vez que o cabeçote de leitura esteja posicionado sobre o setor desejado, a velocidade de leitura/escrita é sempre igual. Determinada pela velocidade de rotação dos pratos. Portanto, vazão é maximizada minimizando os tempos de seek e latência. Especialmente o de seek, que é maior.
Algoritmo FIFO Não se preocupa com o desempenho. Apenas escalona as requisições na ordem em que elas chegam ao SO. Desempenho é "aleatório". Determinado ao acaso, pela ordem de chegada das requisições. Vantagem: implementação muito simples.
Algoritmo SSTF Shortest Seek Time First. Dentre as requisições, atende primeiro a que tiver o menor tempo de seek. A trilha desejada é a mais próxima da trilha atual. Tem bom desempenho, no melhor caso. Quando as requisições chegam em uma ordem propícia. Tem péssimo desempenho no pior caso. Quando as requisições chegam em uma ordem ruim. Pode resultar em starvation. Requisições para trilhas muito distantes da atual podem nunca ser atendidos.
Algoritmo SCAN Determina um sentido de percorrimento para os cabeçotes. Por exemplo: Inicialmente, cabeçotes estão na parte mais externa dos pratos. Sentido de percorrimento será sempre em direção a parte mais interna. Ao longo do caminho, requisições são atendidas na ordem de percorrimento. Quando os cabeçotes chegam ao outro extremo dos pratos, sentido de percorrimento é invertido e procedimento continua. Também conhecido como Algoritmo do Elevador. Funcionamento similar a um elevador.
Algoritmo SCAN (mais) Tem diversas variações: CSCAN: Quando cabeçotes chegam ao outro extremo dos pratos, eles voltam ao início, sem atender novos pedidos. Objetiva maior justiça para requisições em trilhas nos extremos. LOOK: não vai até o extremo, se não há outras requisições para lá. Para na trilha da última requisição e começa a volta....
Comparação dos Algoritmos FIFO SSTF SCAN CSCAN
Comparação dos Algoritmos FIFO é o mais simples. Mas não leva em consideração informações de desempenho. SSTF pode resultar em bom desempenho. Mas desempenho varia muito e pode levar a starvation. O algoritmo do elevador (e suas variações) resultam nos melhores desempenhos na média. Mas são tem implementação complexa.
RAID
Redundant Array of Independent Disks Técnica utilizada para minimizar dois problemas comuns do uso de HDs em grande escala: Velocidade de acesso baixa (comparada aos demais componentes da máquina). Alta probabilidade de falha. Ocasionando perda de dados. Ideia é formar um vetor de HDs físicos, que contenha algum tipo de redundância. A redundância permite a recuperação dos dados em caso de certas falhas. O vetor de vários HDs é visto como um único grande HD. Existem vários níveis de RAID. Cada um com características específicas.
RAID 0 Não há redundância. Todos os discos armazenam apenas dados. Vantagens: Como há vários HDs físicos, requisições podem ser atendidas em paralelo. RAID 0 faz um balanceamento de carga na distribuição dos dados pelos HDs. Ou seja, o RAID 0 oferece benefícios apenas de desempenho. Esquema conhecido também como stripping. Capacidade total de armazenamento é igual a soma das capacidades dos HDs.
RAID 1 Método de espelhamento. São usados n HDs de igual capacidade. Um principal, outros secundários. Todos os dados são escritos no HD principal. Mas automaticamente são espelhados para os HDs secundários. Em caso de falha do HD principal, os outros contêm uma cópia perfeita. Não há benefícios de desempenho. Capacidade total de armazenamento é igual a soma das capacidades dos HDs dividida por n.
RAID 2/3/4 Os três níveis são parecidos. Todos usam n+1 HDs. Os n primeiros, armazenam dados. O último armazena informações de redundância: Paridade de bit, no RAID 2. Paridade de byte, no RAID 3. Paridade de bloco, no RAID 4. Há tanto benefícios de desempenho (stripping nos n primeiros HDs), quanto de redundância. Em caso de falha de um dos n primeiros HDs, as informações dos demais, pode ser usada para recuperar os dados perdidos.
RAID 5 Idêntico ao RAID 4, exceto pelo fato de que as informações de paridade são distribuídas por todos os discos. Isto é, não existe um único HD para armazenar informações de paridade. Objetivo: Evitar que o HD de paridade se torne um gargalo na escrita.
RAID 6 Idêntico ao RAID 5, porém com um esquema de paridade dupla. No RAID 5, se um HD falha, todo o sistema fica sujeito a perda de dados até que este HD seja substituído. Se mais um HD falhar antes da substituição, dados serão perdidos. O RAID 6 tolera a falha de até dois HDs do conjunto. Logo, no caso de um defeito em um HD, o sistema ainda tem uma proteção contra perda de dados.
RAID 10 Combina os níveis 0 e 1. Há vários conjuntos de HDs que fazem espelhamento. Cada conjunto é usado como um HD do nível 0. Vantagens: Alta tolerância a falhas. A falha de um HD é facilmente corrigida através da ativação de um HD secundário do seu conjunto. Alto desempenho. Até k requisições podem ser atendidas simultaneamente, onde k é o número de conjuntos. Desvantagem: Ao menos 4 discos são necessários. Custo muito alto.
Implementações do RAID RAID pode ser implementado tanto por hardware, quanto por software. Caso implementado em hardware, SO vê todo o vetor de discos como um único HD. Funcionamento é completamente transparente para o SO. Implementação em hardware tende a ser mais rápida que em software. Mas a diferença já foi bem maior.
Revisão
Para Lembrar Funções do HD nos computadores. Armazenamento não volátil. Swap. Características de um HD (enquanto dispositivo de E/S). Partes mecânicas. Altos tempos de acesso. Alta probabilidade de falha. Componentes do tempo de acesso a disco. Tempo de seek, latência, transferência. Redução do tempo de acesso. Entrelaçamento. Algoritmos de escalonamento. RAID. O que é e para que serve.