Multitarefa

Question book.svg
Esta página ou secção não cita fontes confiáveis e independentes, o que compromete sua credibilidade (desde novembro de 2012). Por favor, referências e insira-as corretamente no texto ou no rodapé. Conteúdo sem fontes poderá ser acadêmico)

Em informática, multitarefa é a característica do sistema operativo que permite repartir a utilização do processador entre várias tarefas aparentemente simultâneas.

História

O primeiro sistema informatizado a usar multitarefa foi o britânico brito ||, 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 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 simultaneamente.

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êmico 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.