Unidade I - Gerenciamento de I/O

Subsistema de I/O

Os sistemas de I/O costumam ter algum nível de complexidade, isto ainda é associado a grande diversidade de dispositivos de I/O no mercado; diversos fabricantes; diversos modelos; diversos tipos. Como o sistema operacional controla tudo isto ?

O subsistema de I/O é um módulo do sistema operacional responsável por este controle. Os principais objetivos deste subsistema são:

O subsistema de I/O é organizado (separado) em 4 camadas fundamentais, cada qual com uma funcionalidade. Cada camada “entrega” à camada superior uma abstração mais simples para acessar a camada inferior; quanto mais alta a camada mais simples ou padronizado é mecanismo de acesso (a abstração). Aqui por abstração, entende-se o nível de complexidade necessário para acessar o dispositivo.

A figura I.4 procura representar este subsistema.

Primeira camada

Esta camada representa o hardware propriamente dito – todos os dispositivos com suas respectivas interfaces e controladoras. Neste nível, toda atividade acontece em nível de comandos eletromecânicos (no caso do HD e leitores de CD/DVD) e eletrônicos.

Segunda camada

Cada device presente na camada de hardware possui seu conjunto próprio de operações e modo de funcionamento. Nesta camada o sistema operacional faz sua interface com o hardware, para cada hardware presente deve haver um driver fazendo a “tradução” dos comandos do sistema operacional para o hardware.

A camada 2 fornece a camada 3 uma visão uniformizada dos dispositivos presentes no computador. Aqui, fica clara a afirmação de Tanenbaum, feita na unidade A, “o sistema operacional esconde do programador o hardware … e também oculta muitas coisas desagradáveis relacionadas com interrupções, temporizadores, gerenciamento de memória e outros recursos de baixo nível”.

Device Driver
O device driver é um módulo de software fornecido pelo fabricante do dispositivo que é “anexado” ao sistema operacional e permite que estes se “conversem”. O device driver é um componente obrigatório para todos os dispositivos presentes. Nos sistemas operacionais atuais, o device driver costuma ser automaticamente carregado na instalação do dispositivo – caso isto não aconteça, o dispositivo não funcionará e será necessário fazer a instalação manualmente.

O driver é sempre dependente do sistema operacional, ou seja, um driver compilado para o sistema operacional GNU/Linux não será compatível com o sistema operacional Microsoft Windows1

Terceira camada

A terceira camada implementa um conjunto de funções comuns a todos os dispositivos – aqui não temos mais a diversidade das camadas 1 e 2. Os principais procedimentos implementados são:

Escalonamento de I/O:

Denominação:

Bufferização:

Cache de dados:

Alocação/liberação:

Direitos de Acesso:

Tratamento de erros:

Quarta camada

A quarta camada é a API que o programador faz uso para manipulação dos dispositivos. Aqui tem-se acesso às funções que irão controlar os dispositivos do computador.

1   Marcar registrada da Microsoft Corporation

2   Dev – acrônimo para devices