Universidade Estadual de Mato Grosso do Sul – UEMS Curso de Licenciatura em Computação Sistemas Operacionais Gerência de Dispositivos Prof. José Gonçalves Dias Neto [email protected] Introdução A gerência de dispositivos é estruturada em um modelo de camadas; Camadas de mais baixo nível escondem características dos dispositivos das camadas superiores; Deve fornecer interface simples, confiável e padronizada ao usuário e suas aplicações; Algumas camadas dizem respeito apenas a funções em Software, já outras estão fisicamente implantadas (Hardware). Arquitetura em Camadas do Gerenciamento de Dispositivos Subsistema de Entrada e Saída Isola a complexidade de operações específicas para cada tipo de dispositivo das diversas outras camadas. É composto por um conjunto de rotinas que permitem ao usuário realizar operações de E/S sem se preocupar com detalhes dos dispositivos. Permite a independência da aplicação com relação a características especificas das arquiteturas dos diferentes dispositivos. É possível escrever um programa que manipule arquivos, estejam eles em discos rígidos, flexíveis, fita magnética ou outros, sem alterar o código fonte. Subsistema de Entrada e Saída Aplicações podem realizar rotinas de E/S em dados logicamente estruturados segundo o sistema de arquivos (discos e fitas) como também dados não estruturados (monitor, impressora). Operações de E/S podem ser: Sincronas: processo que realizou a operação fica aguardando no estado de bloqueado pelo seu término; Assincrona: Processo continua pronto para execução. Este nível é responsável por implementar todo o mecanismo de proteção de acesso ao dispositivo (permitindo ou não acesso exclusivo). Subsistema de Entrada e Saída Subsistema de Entrada e Saída Utiliza da técnica de buffering para reduzir o número de operações de E/S. Uma das principais funções é criar uma interface padronizada com os device drivers. Erros de E/S são tratados normalmente em níveis mais próximos ao hardware; Alguns erros como gravação em dispositivos de entrada, leitura em dispositivos de saída e operações em dispositivos inexistentes podem ser tratados neste nível. Quanto um usuário realiza uma operação de E/S, é verificado no susbsistema de E/S se o seu processo possui permissão para tal operação. Device Driver Tem a função de implementar a comunicação do subsistema de E/S com os dispositivos, por intermédio dos controladores de E/S. Enquanto o subsistema de E/S trata de funções ligadas a todos os dispositivos, os Drivers tratam apenas dos seus aspectos particulares. Os drivers recebem comandos gerais sobre acesso aos dispositivos e os traduz para comandos específicos. Um driver manipula somente um tipo de dispositivo, ou grupo de dispositivos semelhantes. Realiza também funções como inicialização do dispositivo e seu gerenciamento. Device Driver Device driver fazem parte do núcleo (kernel) do sistema. São escritos normalmente em Assembly. Os drivers são dependentes do restante do Sistema Operacional, por isso existem drivers específicos para cada SO. Sempre que um novo dispositivo é instalado, o driver do dispositivo deve ser adicionado ao núcleo do sistema. Sistemas mais antigos, ao adicionar um driver é necessário recompilar o kernel. Sistemas mais novos permitem a instalação de novos drivers sem nem mesmo reiniciar o SO. Device Driver Controlador de E/S São componentes de hardware que manipulam diretamente os dispositivos de E/S. Os drivers comunicam-se com os dispositivos através dos controladores de E/S. Os controladores possuem memória e registradores próprios. --------------------------------------------------------------------------------Em operações de leitura, o controlador deve armazenar em buffer interno uma sequencia de bits provenientes do dispositivo, até formar um bloco. É realizada a verificação de erros; Após isso o bloco pode ser transferido para o buffer de E/S na RAM. Essa transferência pode ser feita por CPU ou via DMA (Direct Memory Access). Controlador de E/S Controlador de E/S Operação de leitura com DMA: → CPU através do driver inicializa os registradores da DMA, ficando livre para realizar outras atividades; → a DMA solicita ao controlador para realizar o buffer interno do bloco a ser lido; → o controlador armazena em buffer os bits até completar o bloco necessário e verifica a existência de erros. → Caso não haja erros, a DMA transfere o bloco do buffer interno do controlador para o buffer de E/S na memória principal. → ao término a DMA gera uma interrupção avisando que o bloco está disponível em memória principal. Controlador de E/S Discos Magnéticos Principal meio de armazenamento de dados, inclusive do próprio sistema operacional. Constituído por vários discos sobrepostos, unidos por um mesmo eixo, giram em uma velocidade constante. Cada disco é formado por trilhas concêntricas, que por sua vez são formadas por setores. As trilhas dos diversos discos que ocupam a mesma posição vertical é denominado cilindro. Existe um mecanismo de leitura/gravação que é capaz de percorrer toda a superfície dos diversos discos através de um braço de deslocamento. O tempo de leitura/gravação de um bloco no disco é obtido em função de 3 (três) atributos: tempo de seek, latência rotacional e latência de transferência. Discos Magnéticos Discos Magnéticos Tempo de seek: tempo gasto no posicionamento da cabeça de leitura/gravação até o cilindro correto. Latência rotacional: Tempo gasto até que o setor correto atinja a cabeça de leitura/gravação. Latência de transferência: tempo gasto para a transferência do bloco entre memória principal e o setor do disco (e vice-versa). *O tempo de seek costuma ser o fator de maior impacto no baixo desempenho dos discos magnéticos. Discos Magnéticos Desempenho, Redundância e Proteção No final da década de 1980, pesquisadores desenvolveram a técnica de RAID (Redundant Arrays of Inexpensive Disk). Consiste em uma técnica que organiza os dados em múltiplos discos para prover desempenho, redundância e/ou proteção. Existem 7 níveis de RAID. O RAID pode ser implementado: → Diretamente na controladora de disco; → Por software (sistema operacional); → ou por um gerenciador externo de disco – JBOD(Just a Bunch of Disks) Desempenho, Redundância e Proteção RAID 0 - Striping Distribui as operações de E/S entre os diversos discos físicos contidos no array. Seu intuito é aumentar desempenho. Como os dados são divididos entre os diversos discos, as operações podem ser realizadas paralelamente. É necessário formar um stripe set (conjunto de discos físicos); Cada disco é divido em pedaços denominados stripes; Ao gravar um arquivos, este é divido em pedaços iguais e enviados para cada disco simultaneamente. Caso haja falha em um dos discos, a informação é definitivamente perdida. RAID 0 - Striping RAID 1 - Mirroring Replica todo o conteúdo de cada disco em um novo disco. (espelhamento) Garante alta confiabilidade, pois caso falhe um disco principal, haverá seu espelho para manter os dados disponíveis. Custo elevado pois sempre será necessário o dobro de espaço para armazenar qualquer dado. RAID 1 - Mirroring RAID 5 - Acesso independe com paridade distribuída Um dos níveis mais implementados de RAID. Distribui os dados entre os discos e implementa redundância baseada em paridade. Caso haja falha em algum dos discos, através de um algoritmo e do strip de paridade, é possível recuperar os dados perdidos. Exigem um pequeno gasto adicional com informação de controle (paridade). Possui overhead para que o strip de paridade seja gerenciado. RAID 5 – Acesso independente com paridade distribuída Combinações: RAID 0+1 É uma combinação dos níveis 0 (Striping) e 1 (Mirroring); Aqui os dados são divididos entre os discos para melhorar o rendimento, mas também utilizam outros discos para duplicar as informações. O RAID 0 + 1 o mais rápido e seguro, porém de custosa implementação. Se um dos discos vier a falhar, o sistema vira um RAID 0. Combinações: Combinações: RAID 1+0 É uma nova combinação dos níveis 1 e 0; Cada par será espelhado, garantindo redundância, e os pares serão distribuídos, melhorando desempenho. Até metade dos discos pode falhar simultaneamente, sem colocar o conjunto a perder, desde que não falhem os dois discos de um espelho qualquer; Vantagens: ✔ segurança contra perda de dados; ✔ pode falhar um dos HDs por par ao mesmo tempo; Desvantagens: ✗ alto custo de expansão de hardware; Combinações: RAID 1+0