6 - Gerência de Dispositivos - IME-USP

Propaganda
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.
Download