Resumos dos capítulos :::

Gerenciamento de Entrada/Saída

  1. Responsabilidade

  2. Forma de atuação

  3. Mecanismos de controle de E/S em disco

  4. Problemas com dispositivos de entrada não controlada

Os tópicos a serem examinados podem ser encontrados nos seguintes capítulos de livros:

  1. Modern Operating Systems, Tanenbaum, cap. 5

  2. Operating Systems Concepts, Peterson/Silberschatz, cap. 9

  3. 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:

  1. E/S programada, em que toda a ação é comandada pelo próprio processo que quer fazer E/S;

  2. 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;

  3. 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;

  4. 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.
 
 
 
 

 
 
DISCLAIMER
 
 
O conteúdo desta página é de minha total responsabilidade, não representando o pensamento ou posições da UNESP.