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 ou ainda gerenciamento
de periféricos.
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 ocorre porque todo e qualquer processo depende de
operações de entrada ou saída de dados e elas
sempre tomam tempo para serem realizadas. É possível
realizar E/S de várias formas, quando a operação é avaliada olhando-se para 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 operações de 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. 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. Têm 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 (são os
drivers que instalamos no sistema). 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. Isto possibilita,
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
desses 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, sendo que a maioria deles procura 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 latência 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 que 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 sinais de controle devem ser
tratados.
O tratamento de quem deve receber os
dados e de quantos bytes virão é feito com a
identificação através de um cabeçalho
(header) no bloco de dados (quando estivermos usando rede) ou
pela identificação do dispositivo (quando não
for rede). 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 tipo de informação
perdida é menos prejudicial aos sistemas em que ele será
aplicado.
|