6 - Gerência de Dispositivos - Instituto de Matemática e

isolar a complexidade dos dispositivos da camada de sistemas de arquivo e da ... O subsistema de entrada e saída é responsável por realizar as funções...

7 downloads 257 Views 560KB Size
1

6 - Gerência de Dispositivos 6.1 – Introdução A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções do sistema operacional. Sua implementação é estruturada através de camadas de um modelo semelhante ao apresentado para o sistema operacional, utilizando o conceito de máquina de níveis. As camadas de mais baixo nível escondem características das camadas superiores, oferecendo uma interface simples e confiável ao usuário e suas aplicações.

Modo Usuário Modo Kernel

SOFTWARE

Processo

Operações de E/ S

Sistema de Arquivos

Independente do dispositivo (a)

Subsistema de E/ S

Device Drivers

HARDWARE

Dependente do dispositivo (b) Controladores

Dispositivos de E/ S

Figura 6.1 – Gerência de Dispositivos

2 A diversidade de dispositivos de E/S exige que o sistema operacional implemente uma camada, chamada de subsistema de E/S, com a função de isolar a complexidade dos dispositivos da camada de sistemas de arquivo e da aplicação. Dessa forma, é possível ao sistema operacional ser flexível, permitindo a comunicação dos processos com qualquer tipo de periférico. Aspectos

como

velocidade

de

operação,

unidade

de

transferência,

representação de dados, tipos de operações e demais detalhes de cada um dos periféricos são tratados pela camada de device driver, oferecendo uma interface uniforme entre o subsistema de E/S e todos os dispositivos. As camadas são divididas em dois grupos, onde o primeiro grupo visualiza os diversos tipos de dispositivos do sistema de um modo único, enquanto o segundo é específico para cada dispositivo. A maior parte das camadas trabalha de forma independente do dispositivo.

6.2 – Acesso ao Subsistema de Entrada e Saída O sistema possui um conjunto de rotinas que possibilita a comunicação com qualquer dispositivo que possa ser conectado ao computador. Esse conjunto de rotinas, denominando rotinas de entrada/saída, faz parte do subsistema de E/S e permite ao usuário realizar operações de E/S sem se preocupar com detalhes do dispositivo que está sendo acessado. As operações de E/S devem ser realizadas através de system calls que chamam as rotinas de E/S do kernel do sistema operacional. Dessa forma, é possível escrever um programa que manipule arquivos, estejam eles em disquetes, discos rígidos ou qualquer outro dispositivo, sem ter que alterar o código para cada tipo de dispositivo. As system calls responsáveis por essa comunicação são denominadas system calls de entrada/saída. A comunicação entre os comandos de E/S oferecidos pelas linguagens de programação de alto nível e as system calls de E/S é feita simplesmente através de passagem de parâmetros, como caminho para o arquivo e tipo de operação (leitura ou escrita). O relacionamento entre o comando e a system call é criado na geração do código executável do programa, ou seja, pelo compilador.

3 Um dos objetivos principais das system calls de E/S é simplificar a interface entre as aplicações e os dispositivos. Com isso, elimina-se a necessidade de duplicação de rotinas idênticas nos diversos aplicativos, além de esconder do programador características específicas associadas à programação de cada dispositivo. Aplicação

Comandos de E/ S

Bibliotecas

System calls de E/ S

Rotinas de E/ S

Device driver s

Dispositivos de E/ S

Figura 6.2 – Operações de Entrada/Saída

As operações de E/S podem ser classificadas conforme o seu sincronismo. Uma operação é dita síncrona quando o processo que realizou a operação fica aguardando no estado de espera pelo seu término. A maioria dos comandos das linguagens de alto nível funciona desta forma. Uma operação é dita assíncrona quando o processo que realizou a operação não aguarda pelo seu término e continua pronto para ser executado. Neste caso, o sistema deve

4 oferecer algum mecanismo de sinalização que avise ao processo que a operação foi terminada, como uma interrupção por exemplo.

6.3 – Subsistema de Entrada e Saída O subsistema de entrada e saída é responsável por realizar as funções comuns a todos os tipos de dispositivos, ficando os aspectos específicos de cada periférico como responsabilidade dos drivers. Dessa forma, o subsistema de E/S é a parte do sistema operacional que oferece uma interface uniforme com as camadas superiores. Cada dispositivo trabalha com unidades de informação de tamanhos diferentes, como caracteres ou blocos. O subsistema de E/S é responsável por criar uma unidade lógica de transferência independente do dispositivo e repassa-la para os níveis superiores, sem o conhecimento do conteúdo da informação. Normalmente, o tratamento de erros nas operações de E/S é realizado pelas camadas mais próximas ao hardware. Todos os dispositivos de E/S são controlados, com o objetivo de obter o maior compartilhamento possível entre os diversos usuários de forma segura e confiável. Alguns dispositivos como os discos, podem ser compartilhados, simultaneamente, entre os diversos usuários, sendo o sistema operacional responsável pela integridade dos dados acessados. Outros como as impressoras, devem ter acesso exclusivo, e o sistema operacional deve controlar o seu compartilhamento de forma organizada. O subsistema de E/S é responsável também por implementar todo um mecanismo de proteção de acesso aos dispositivos. No momento em que o usuário solicita a realização de uma operação de E/S, é verificado se o seu processo possui permissão para realizar a operação. A bufferização é outra tarefa realizada por esse subsistema. Essa técnica permite reduzir o número de operações de E/S, utilizando uma área de memória intermediária, chamada de buffer. Uma das principais funções do subsistema de E/S é criar uma interface padronizada com os device drivers. Sempre que um novo dispositivo é

5 instalado no computador, é necessário que um novo driver seja adicionado ao sistema. O subsistema de E/S deve oferecer uma interface padronizada que permita a inclusão de novos drivers sem a necessidade de alteração da camada de subsistema de E/S. 6.4 – Device Drivers O device driver ou apenas driver tem como função implementar a comunicação do subsistema de E/S com os dispositivos, através de controladores. 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 têm como função receber comandos gerais sobre acessos aos dispositivos e traduzi-los em comandos específicos para aquele dispositivo em questão. Cada driver manipula somente um tipo de dispositivo ou grupos de dispositivos semelhantes.

Processo

Sub sistema de E/ S

Driver de Impressora

Dr iver d e Disco

Driver de Fita

Figura 6.3 – Device Drivers

6 O driver está integrado diretamente às funções do controlador, sendo o componente do sistema que reconhece as características particulares do funcionamento de cada dispositivo de E/S, como o número de registradores do controlador, funcionamento e comandos específicos. Sua função principal é receber os comandos abstratos do subsistema de E/S e traduzi-los para comandos que o controlador possa entender e executar. Além disso, o driver pode realizar outras funções, como a inicialização do dispositivo e seu gerenciamento.

Rotina de E/ S

Ler bloco n

Driver de Disco

Ler setor x

Controlador de Disco

Discos

Figura 6.4 – Driver de Disco

Os drivers fazem parte do núcleo do sistema operacional, sendo escritos geralmente em assembly. Como os drivers são códigos reentrantes que executam em modo kernel, qualquer erro de programação pode comprometer o funcionamento do sistema. Por isso, um driver deve ser cuidadosamente desenvolvido e testado.

7

Figura 6.5 – Gerenciador de Dispositivos do Windows 7

Devido ao alto grau de dependência entre os drivers e o restante do kernel do sistema, os fabricantes desenvolvem, para um mesmo dispositivo, diferentes drivers, uma para cada arquitetura de processador (32 ou 64bits), um para cada sistema operacional, inclusive para versões diferentes. Sempre que um novo dispositivo é instalado, o driver do dispositivo deve ser adicionado ao kernel do sistema. Nos sistemas mais antigos, a inclusão de um novo driver significava a recompilação do kernel, uma operação complexa que exigia a reinicialização do sistema. Atualmente, os sistemas operacionais permitem a fácil instalação de novos drivers, sendo os drivers carregados dinamicamente, sem a necessidade de reinicialização, alguns sistemas permitem até mesmo a instalação física de dispositivos com o computador ligado (HOT SWAP ou HOT PLUG).

8

6.5 – Controladores Os controladores são componentes de hardware responsáveis por manipular diretamente os dispositivos de E/S. O sistema operacional, mais exatamente

o

driver,

comunica-se

com

os

dispositivos

através

dos

controladores. Em geral, o controlador pode ser uma placa independente conectada a um slot do computador ou implementada diretamente na placamãe.

Memória Principal

UCP

Controlador de Impressora

Controlador de Disco

Controlador de Fita

Impressora

Disco

Fita

Figura 6.6 – Processador, Memória e Controladores

O controlador possui memória e registradores próprios utilizados na execução de instruções enviadas pelo driver. Essas instruções, de baixo nível, são responsáveis pela comunicação entre o controlador e o dispositivo de E/S. Em operações de leitura, o controlador deve armazenar em seu buffer interno uma seqüência de bits provenientes do dispositivo até formar um bloco. Após verificar a ocorrência de erros, o bloco pode ser transferido para um buffer de E/S na memória principal. A transferência do bloco do buffer interno do controlador para o buffer de E/S na memória principal pode ser realizada pelo

9 processador ou por um controlador de DMA. O uso da técnica de DMA evita que o processador fique ocupado com a transferência do bloco para a memória. O controlador de DMA é um dispositivo de hardware que pode fazer parte do computador ou pode ser um dispositivo independente.

UCP

1

2 Buffer de E/ S

4

Buffer

Controlador de Disco

Registradores

Memória Principal

Controlador de DMA

3 Disco

Figura 6.7 – Técnica de DMA

Alguns controladores, particularmente os de discos, implementam técnicas de cache semelhante às implementadas pelos sistemas de arquivos, na tentativa de melhorar o desempenho das operações de E/S. Normalmente, o controlador avisa ao sistema operacional do término de uma operação de gravação, quando os dados no buffer do controlador são gravados no disco (write-through caching). O controlador também pode ser configurado para avisar do término da gravação, mesmo quando os dados ainda se encontram no buffer do controlador e a operação de gravação no disco não foi realizada (write-back caching). Desta forma é possível obter ganhos consideráveis de desempenho.

10

6.6 – Dispositivos de Entrada e Saída Os dispositivos de entrada e saída são utilizados para permitir a comunicação entre o sistema computacional e o mundo externo. Os dispositivos de E/S podem ser classificados como de entrada de dados, como CDROM, DVD, teclado e mouse, ou de saída de dados, como impressoras e monitores. Também é possível que um dispositivo realize tanto entrada como saída de dados, como placas de som, de rede, HDs, monitor touchscreen. A transferência de dados pode ocorrer através de blocos de informação ou caracteres, por meio de controladores dos dispositivos. Em função da forma com que os dados são armazenados, os dispositivos de E/S podem ser classificados em duas categorias: dispositivos estruturados e dispositivos nãoestruturados. Os dispositivos estruturados (block devices) caracterizam-se por armazenar informações em blocos de tamanho fixo, possuindo cada qual um endereço que pode ser lido ou gravado de forma independente dos demais. Os dispositivos estruturados classificam-se em dispositivos de acesso direto e seqüencial, em função da forma com que os blocos são acessados. Um dispositivo é classificado como de acesso direto quando um bloco pode ser recuperado diretamente através de um endereço. O HD é o um exemplo de dispositivo de acesso direto. Um dispositivo é do tipo de acesso seqüencial quando,

para

se

acessar

um

bloco,

o

dispositivo

deve

percorrer

sequencialmente os demais blocos até encontrá-los. A fita magnética é um exemplo deste tipo de dispositivo. Os dispositivos não-estruturados (character devices) são aqueles que enviam ou recebem uma seqüência de caracteres sem estar estruturada no formato de um bloco. Desse modo, a seqüência de caracteres não é endereçável, não permitindo operações de acesso direto ao dado. Dispositivos como terminais, impressoras e interfaces de rede são exemplos de dispositivos não-estruturados.

11

6.7 – Gerência de Dispositivos no Windows O Windows oferece centenas de APIs relacionadas à gerência de E/S, sendo a maior parte ligada ao subsistema gráfico, chamado Graphics Device Interface (GDI). O GDI é um conjunto de rotinas que permite a uma aplicação manipular dispositivos gráficos, como monitores e impressoras, independente do dispositivo físico, funcionando como uma interface entre a aplicação e os drivers dos dispositivos. O GDI oferece funções de gerenciamento de janelas, menus, caixas de diálogo, cores, desenhos, textos, bitmaps, ícones e clipboard. O sistema oferece suporte a operações de E/S assíncronas. O término da operação pode ser sinalizado ao thread utilizando um dos diversos mecanismos de sincronização disponíveis no sistema. O gerente de E/S (I/O Manager) é responsável por receber pedidos de operações de E/S e repassá-los aos drivers. Cada solicitação de E/S é representada por uma estrutura de dados chamada I/O Request Packet (IRP), que permite o controle de como a operação de E/S será processada. Os drivers no Windows são desenvolvidos a partir de um padrão chamado

Windows

Driver

Model

(WDM).

O

WDM

define

diversas

características e funções que um drivers deve oferecer para ser homologado pela Microsoft, como suporte a plug-and-play e a múltiplos processadores, gerência de energia e interface com os objetos do sistema operacional. O Windows trabalha com diferentes tipos de drivers para implementar diversas funções, como a emulação de aplicações MS-DOS (virtual drivers), interface com o subsistema gráfico GDI (display e printer drivers), implementação de sistemas de arquivos (file system drivers), funções de filtragem (filter drivers) e o controle de dispositivos de E/S (hardware drivers). As operações de compressão, criptografia e tolerância a falhas de discos são implementadas através de drivers específicos acima dos drivers ligados aos dispositivos de E/S. Os sistemas de arquivos NTFS e FAT também são implementados através de drivers especiais que recebem solicitações do gerente de E/S e as repassam para os drivers de disco correspondentes.

12

6.8 – Gerência de Dispositivos no Unix A gerência de entrada/saída no Unix foi desenvolvida de forma integrada ao sistema de arquivos. O acesso aos dispositivos de E/S é feito através de arquivos especiais, localizados no diretório /dev. Os arquivos especiais podem ser acessados da mesma forma que qualquer outro arquivo, utilizando simplesmente as system calls de leitura e gravação. Isso permite enviar o mesmo dado para diferentes dispositivos de saída. Dessa forma, as system calls de E/S podem manipular qualquer tipo de dispositivo de maneira uniforme. As versões mais recentes do Unix e o Linux permitem que os drivers possam ser acoplados ao núcleo com sistema em funcionamento, sem a necessidade de gerar um novo kernel e reinicializar o sistema.