1.1.1 - O S.O como uma "maquina estendida"

Já dissemos que a arquitetura (conjunto de instruções, organização da memória, E/S e estrutura de barramento) da maior parte dos computadores no nível da linguagem de máquina é primitiva e desajeitada para programar (especialmente E/S)

EX:

Para tornar a idéia mais palpável veja como a E/S de disco flexível é feita usando o "CHIP" controlador NEC PD765 (ou equivalente) usado na maioria dos computadores pessoais.

O PD765 tem 16 comandos onde cada comando carrega de 1 a 9 bytes em um registrador de dispositivo. Esses comandos servem para ler dados, gravar dados, mover o braço do disco, formatar trilhas, inicializar, avaliar, recalibrar a controladora, recalibrar as unidades.

Os comandos mais básicos são "Read" e "WRITE", onde cada um deles requer 13 parâmetros compactados em 19 bytes. Esses parâmetros especificam itens tais como o endereço do bloco de disco a ser lido, o número de setores por trilha, o modo de gravação usado no meio físico, o tamanho entre os setores, o que fazer com uma marca de endereço de dados excluídos.

OBS: Se não entende este palavrório, não se preocupe. É essa exatamente a questão. Tudo é muito esotérico!

Quando a operação é completada o "CHIP" controlador retorna 23 campos de "status" e erro compactados em 7 bytes. O programador de disco flexível também deve estar constantemente ciente sobre se o motor está ligado ou desligado.

Se desligado, ele deve ser ligado (com longa demora de inicialização) antes dos dados serem lidos e gravados.

Se ligado, cuidar para que o motor não permaneça ligado muito tempo, senão o disquete irá desgastar-se.

O programador é forçado a negociar entre a demora na inicialização e o desgaste dos discos flexíveis (com a perda de seus dados).

OBS:

Sem entrar em detalhes "reais" deve estar claro que:

- o programador quer uma abstração de ordem superior (simples de lidar)

ex:

- discos contém coleção de arquivos,

- estes arquivos devem ser abertos para leitura ou gravação, lidos ou gravados, fechados

- detalhes (como por exemplo se a gravação deve ou não usar a modulação de freqüência modificada e qual é o estado atual do motor) não devem aparecer na abstração apresentada ao usuário

O programa que esconde do programador a verdade sobre o "hardware" apresentando uma bela e simples visão de nomes e arquivos que podem ser lidos e gravados é o sistema operacional.

OBS:

Assim como o S.O esconde do programador o "hardware" de disco e apresenta uma interface orientada para arquivos mais simples ele também oculta muitas coisas desagradáveis relacionadas com interrupções, temporizadores, gerenciamento de memória, demais recursos de baixo nível.

Em cada caso a abstração oferecida pelo S.O é mais simples e mais fácil de usar que o hardware subjacente.

Sob este ponto de vista, a função do S.O é apresentar ao usuário o equivalente de uma máquina estendida ou maquina virtual que é mais fácil de programar que o "hardware" subjacente.


1