Gerenciamento
de Entrada/Saída
-
Responsabilidade
-
Forma de atuação
-
Mecanismos de controle de E/S em disco
-
Problemas com dispositivos de entrada não controlada
Os tópicos a serem examinados podem ser encontrados nos seguintes
capítulos de livros:
-
Modern Operating Systems, Tanenbaum, cap. 5
-
Operating Systems Concepts, Peterson/Silberschatz, cap. 9
-
Outros bons livros de sistemas operacionais, nos capítulos sobre
gerenciamento
de E/S ou gerenciamento de armazenamento em discos
1. Responsabilidade
Na conclusão do último capítulo é indicado
que as operações de E/S representam um fator preponderante
no desempenho de um sistema operacional. Isso porque todo e qualquer processo
faz esse tipo de operação e ela sempre toma tempo para ser
realizada. É possível realizar E/S de várias formas,
segundo quem é o responsável pelo seu gerenciamento. Nesse
aspecto as formas são:
-
E/S programada, em que toda a ação é comandada
pelo próprio processo que quer fazer E/S;
-
E/S por interrupção, em que a E/S é comandada
por um processo especial ativado por um sinal de interrupção
gerado pelo processo que quer fazer E/S;
-
E/S por roubo de ciclo, quando a operação de E/S é
controlada por um dispositivo especial (o DMA - Direct Memory Access),
que rouba ciclos do relógio da CPU para transferir blocos de bytes
entre a memória e o dispositivo de E/S;
-
E/S em cadeia, em que se permite que a fila de espera por E/S seja
controlada pelo DMA e não por algum mecanismo que execute na CPU.
As duas primeiras formas são estratégias que consomem muito
tempo de CPU e, portanto, valem apenas para aplicações dedicadas,
pois com elas é possível ao programador desenvolver formas
ótimas para se realizar a E/S. As duas últimas são
equivalentes e tem amplo uso hoje em dia. Tem também a facilidade
de esconder do usuário o que realmente ocorre para se realizar a
operação.
2. Forma de atuação
O gerenciamento de E/S, independente de quem o realiza, é feito
em duas etapas ou níveis: controle de E/S e controle de periféricos.
O primeiro, mais alto, se preocupa com aspectos administrativos das solicitações
de E/S realizadas, enquanto o segundo se preocupa com a operacionalização
física desses pedidos.
Essa divisão faz com que o controle de periféricos trabalhe
diretamente com o hardware envolvido, sendo necessário o desenvolvimento
de uma interface diferente para cada dispositivo específico. Ao
fazer isso percebe-se que o S.O. não influencia esse controle, sendo
o estudo do mesmo deixado para áreas mais ligadas à engenharia.
Já o controle de E/S independe de características elétricas/mecânicas
do hardware por atuar apenas no controle lógico dos mesmos. Isso
significa, em outras palavras, que o controle de E/S irá gerenciar
filas de controle de acesso aos
dispositivos de E/S e não executar a atividade de E/S propriamente
dita, sendo possível portanto que um mesmo controle possa ser aplicado
para toda uma família de dispositivos.
Esses dois níveis de controle se diferenciam ainda na forma em
que tratam dispositivos que exijam acesso privativo (como impressoras,
por exemplo) e dispositivos com acesso compartilhado (como discos ou rede,
por exemplo). Em
qualquer dos casos o controle de periféricos não faz
distinção entre essas categorias de dispositivos por ser
apenas o executor da operação de E/S. A diferenciação
entre o que pode ter acesso compartilhado ou não é feita
no controle de E/S, que é quem trata logicamente todas as solicitações
realizadas.
3. Mecanismos de controle de E/S em disco
O controle de E/S em disco é feito de forma a otimizar a movimentação
da cabeça de leitura/escrita e do próprio disco. Existem
vários algoritmos propostos para a realização dessa
otimização, a maioria deles procurando otimizar o chamado
tempo de busca (seek time) pela informação no disco.
Para entender melhor esses algoritmos é preciso
antes entender como um disco é dividido fisicamente, ou seja,
entender o que são trilhas e setores de um disco e
que os tempos de busca estão associados com o acesso às
trilhas e os tempos de latencia com os setores. O tempo de
acesso ao disco é portanto a soma desses dois tempos. Como o
primeiro é bem superior ao segundo, passa a ser a
restrição mais importante no momento de escolher um algoritmo
para controlar o acesso ao disco.
Os algoritmos de acesso a disco mais usados são o FIFO (que
escolhe o próximo pedido a ser atendido pela ordem de requisição),
SSTF (shortest seek-time first, que atende o pedido para a trilha
mais próxima da atual), o SCAN (que varre o disco atendendo os pedidos
linearmente) e suas variações, como C-SCAN, LOOK, C-LOOK,
Modified Scan, etc.
4. Problemas com dispositivos de entrada não controlada
Fazer o gerenciamento de dispositivos de E/S não envolve atividades
muito complexas quando quem dispara a operação for o sistema
operacional. Entretanto isso não é verdade para operações
de entrada de dados com determinados dispositivos, como mouse, teclado
e redes. Nesses casos o sistema deve prover algum mecanismo para a recepção
de dados ocorra sem perdas, pois não se sabe quando eles chegarão,
qual processo os deve receber, qual o tamanho do bloco de dados e como
tratar sinais de controle.
O tratamento de quem deve receber os dados é quantos bytes
virão e feito com a identificação através de
um cabeçalho (header) no bloco de dados (quando estivermos
usando redes) ou pela identificação do dispositivo (quando
não). Já o tratamento de quando os dados chegarão
pode ser feito com a criação de buffers e sinais de
interrupção, com técnicas como as de toggle
buffers ou buffers circulares.
Por fim o tratamento de sinais de controle pode ser feito de forma imediata
(com detecção dos mesmos) ou durante o esvaziamento do buffer
(com a sua leitura pelo processo destinatário). Em qualquer das
hipóteses existe perda de informação, ficando a cargo
do projetista do S.O. identificar qual o tipo de informação
perdida é menos prejudicial aos sistemas em que ele será
aplicado.