A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Oficina

10. Definição de Sistema Operacional

Dom

27

Mai

2007


07:41

(68 votos, média 3.90 de 5) 


Multiprogramação em lote

Os sistemas de spooling não usavam todos os seus recursos com eficiência: a tarefa que estivesse sendo executada não ocupava toda a área de memória e uma tarefa de transposição (entrada/saída) paralisava o computador até que fosse terminada. A evolução seguinte foi a introdução da multiprogramação, um esquema que permitia a ativação simultânea de várias tarefas - enquanto uma tarefa estivesse esperando uma operação de transposição ser completada, outra continuaria computando. Quanto mais tarefas fossem executadas simultaneamente, melhor. Entretanto, uma tarefa dependente de computação (uma que realizava pouca transposição mas muita computação) poderia facilmente paralisar tarefas dependentes de transposição. Havia uma competição pelo recurso tempo.

A multiprogramação também introduziu a competição pelo espaço. O número de tarefas que podiam ser acomodadas simultaneamente dependia da memória e do hardware disponível para dividir este espaço. Além disso, as tarefas precisavam ser protegidas contra a interferência inadvertida ou maliciosa de outras tarefas e uma tarefa não poderia ser inspecionada por outras. A atuação do monitor residente também se tornou mais crítica: se fosse destruído, ao invés de uma tarefa, várias delas seriam paralisadas.

Este tipo de multiprogramação é frequentemente denominado de multiprogramação em lote (batch) porque as tarefas combinam um conjunto de etapas. A primeira poderia ser constituída pelas compilações, a segunda poderia ser uma etapa de combinação (linking) para agrupar todas as peças compiladas num único programa e, finalmente, o programa seria executado. Se uma das compilações desse erro, não era necessário recompilar todas as tarefas, apenas a defeituosa.

Como cada etapa era relativamente independente, cada uma delas precisava do monitor residente. Suas tarefas eram individualizadas e suas necessidades de tempo, espaço e transposição eram atendidas. Aliás, duas etapas diferentes da mesma tarefa até poderiam ser realizadas ao mesmo tempo! O termo processo foi introduzido com o significado de entidade que realiza uma etapa de trabalho. O planejador criava um novo processo para cada etapa de trabalho e o processo terminava quando a etapa era completada. O sistema operacional, como será chamado o monitor residente daqui para frente, controlava cada processo e suas necessidades. Um processo podia solicitar ajuda ao kernel enviando uma chamada de serviço através da interface do processo. Os programas em execução não podiam mais controlar dispositivos diretamente porque poderiam causar conflitos e interferir no trabalho do kernel.

Agora os processos precisavam usar chamadas de serviço para acessar os dispositivos e o kernel tinha o controle total sobre a interface dos dispositivos. Atribuir recursos a processos não era uma tarefa trivial. Um processo poderia necessitar de recursos (como drives de fita) em vários estágios da sua execução. Se um recurso não estivesse disponível, o planejador poderia bloquear o processo por algum tempo, mas não indefinidamente.

A multiprogramação em lotes gerou novas idéias para a estruturação de sistemas operacionais. O kernel do sistema operacional passa a ser composto por rotinas que administram a memória, o tempo, os dispositivos e outros recursos. Ele passa a responder tanto a requisições de processos quanto a solicitações de interrupções de dispositivos. Além disto, também foram criados mecanismos para gerenciar solicitações concorrentes. Agora, o computador fica ocioso apenas quando não houver um processo pronto para rodar e nenhum dispositivo precisar de atenção.

Multiprogramação interativa

Mas ainda havia muito para ser melhorado e o próximo passo foi a multiprogramação interativa. O principal dispositivo de transposição orientado ao usuário mudou de cartões ou fitas para um terminal interativo. Ao invés de "empacotar" todos os dados que um programa necessitava para começar a rodar, o usuário interativo passou a fornecer as entradas necessárias para o seu funcionamento.

A computação interativa causou uma verdadeira revolução na forma como os computadores eram utilizados. Ao invés de serem tratados como trituradores de números, passaram a ser encarados como manipuladores de informações. Editores de texto interativos possibilitaram a construção de arquivos de dados online. Estes arquivos podiam ser programas, documentos ou dados. Ao invés de lidar com tarefas compostas por etapas, a multiprogramação interativa, também chamada de tempo compartilhado (timesharing), passou a lidar com sessões que duravam desde uma conexão incial (logon) até quando esta conexão era interrompida (logoff).

Durante o logon, o usuário fornecia dois tipos de identificação: um nome e uma senha. Estes dados eram convertidos num identificador de usuário, associado a todos os processos rodados e a todos os arquivos criados por este usuário. Este identificador ajudava o kernel a decidir de quem cobrar os serviços e se poderia permitir determinadas ações (como modificar arquivos, por exemplo).

Durante uma sessão, o usuário tinha a impressão de que os todos os recursos do computador estavam à disposição do seu terminal, mesmo quando mais de uma sessão estivesse ativa. Tipicamente, no momento do logon, um processo era criado para servir o usuário. Este primeiro processo, de acordo com a necessidade, poderia iniciar outros que eram necessários para completar etapas individuais. Este processo principal é chamado de interpretador de comandos.

Foi neste ponto que se tornou possível a introdução dos computadores pessoais. Os sistemas operacionais destas máquinas geralmente oferecem a interação, mas não a multiprogramação. O CP/M e o DOS são bons exemplos. Outros sistemas mais atuais já oferecem ambos (Windows NT, XP, 2000 e Linux).

Processamento distribuído

O que existe de mais atual em sistemas operacionais é o chamado processamento distribuído (ou computação distribuída), no qual computadores podem ser conectados através de uma grande variedade de dispositivos. O espectro vai desde computadores intimamente conectados, compartilhando a área de memória, até computadores ligados frouxamente, onde várias máquinas pertencentes a uma mesma rede internacional podem enviar e receber mensagens.

Informações adicionais