O primeiro sistema informatizado a usar multitarefa foi o britânico LEO III, completado 1961. A multitarefa preemptiva foi implementada nas versões iniciais do Unix em 1969, e é o padrão no Unix e em sistemas operacionais similares, incluindo Linux, Solaris e BSD em suas variações.
Pode parecer, actualmente, difícil de imaginar um computador monotarefa,
i.e., que apenas permita utilizar uma aplicação mas, de facto, houve um
percurso histórico notável até se atingir o nível actual de
paralelização de processos. Com efeito, os primeiros computadores apenas permitiam executar uma única tarefa de cada vez. O Apple DOS é um excelente exemplo disso, já que foi dos primeiros sistemas operativos para computadores pessoais.
O primeiro passo para a multitarefa no MS-DOS foi a criação dos TSR's (Terminate and Stay Resident), pequenos programas que permaneciam em memória enquanto se executava outro programa, e que podiam instalar rotinas de tratamento de interrupções para serem ativados posteriormente. Ou seja, estando o utilizador a escrever um texto num processador de texto,
por exemplo, poderia apertar uma combinação de teclas que dispararia
uma interrupção e chamaria a TSR de uma agenda pessoal para tirar notas.
Assim, do ponto de vista do processador,
o processo do processador de texto era bloqueado e passava-se o
controle para a agenda. Quando o utilizador terminasse, voltava-se ao
processador. Ambos programas coexistiam, mas não podiam ser executados simultâneamente.
O passo seguinte foi a emulação de multitarefa. Exemplos disto eram as primeiras versões de Windows, que este executava sobre DOS
(monotarefa), mas o núcleo do Windows fazia a sua própria gestão dos
processos. Curiosamente, se um processo bloqueasse o Windows, todas as
aplicações teriam que ser terminadas pois eram todas dependentes.
Posteriormente, surgiu uma das principais componentes dos SO actuais: o escalonador de processos, ou (em inglês) scheduler,
que faria a gestão, qualificação e o gerenciamento de prioridade dos
processos sem afectar o núcleo do sistema operativo. Ou seja, todas as
tarefas núcleo
são críticas, e todo o tempo que sobrar é legado aos processos.
Adivinha-se, portanto, a necessidade de estabilizar o núcleo, por forma a
minimizar o tempo de execução de tarefas internas.
O escalonador de processos é uma componente muito polêmica em termos
de inovação e de aplicações. Dependendo das situações, um escalonador de
processos deve gerir os seus processos por forma a diminuir a latência
entre aplicações interactivas, ou assegurar a coerência em termos de
critérios no escalonamento: se uma tarefa não é crítica, então não devia
estar a ser executada.

Nenhum comentário:
Postar um comentário