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.