Respostas
B. Piropo
Anteriores:
<Diversos >
Volte de onde veio
05/01/98

< Sistema de 32 bits; Multitarefa>


P: O que é realmente um sistema de 32 bits?
R: Em 1985 a Intel lançou seu microprocessador 80386, mais tarde conhecido apenas por 386. Concebido quando a indústria de microinformática já estava madura e em plena expansão, ele incorporou tudo o que era necessário para tornar-se um chip mais poderoso, rápido e versátil que qualquer outro disponível até então. Na verdade, o salto de qualidade que ele representou quando comparado com seu antecessor, o 80286, jamais foi igualado por nenhum outro lançamento da Intel. As diferenças eram imensas e compreendiam desde a possibilidade de acessar memória "plana" (sem empregar o intrincado método baseado em segmento/deslocamento do 8086) até a possibilidade de criar simultaneamente, em diferentes trechos da memória, diversas "máquinas virtuais", cada uma simulando a velha CPU 8086, onde podia ser carregado o código do DOS e de seus programas, de tal forma que uma jamais interferisse no desempenho da outra. Passando pelo aumento do campo de memória (o 286 somente podia "enxergar" 16Mb, enquanto o 386 "enxergava" 4Gb de memória RAM), pela expansão do barramento de dados de 16 para 32 linhas e pela possibilidade de usar cache de memória, entre outros aperfeiçoamentos. Mas o mais importante foi a possibilidade de rodar no chamado "modo protegido" e dele retornar para o "modo real" (o 286 já usava o modo protegido, mas não podia passar dele para o real), que veio ensejar a multitarefa. Porém o que tornou o chip mais conhecido foi o aumento da capacidade de suas posições internas de memória, os registradores, que passaram de 16 bits no 80286 para 32 bits no 80386. O que fez com que ele fosse conhecido como o primeiro microprocessador "de 32 bits". Um "sistema de 32 bits" nada mais é que um sistema operacional capaz de tirar partido de todos os aperfeiçoamentos incorporados ao 386, como o Windows 95, o OS/2 e o Windows NT. (09/03/97)

P: Como se comportam os programas carregados na memória quando a máquina executa multitarefa?
R:Multitarefa é o nome que se dá à possibilidade de executar mais de uma tarefa ou programa ao mesmo tempo. Para isto é necessária a atuação conjunta do sistema operacional, que gerencia a execução dos programas, e do microprocessador (ou CPU), que executa as instruções. Para implementar a multitarefa é preciso então que a CPU seja capaz de rodar no chamado "modo protegido" e que o sistema operacional seja desenvolvido especificamente para suportá-la. A primeira CPU da linha PC a suportar o modo protegido foi o 286, porém de forma limitada. A multitarefa como a conhecemos hoje (aceitando inclusive programas DOS) somente foi possível após o advento do 386, a primeira CPU a adotar registradores (posições de memória interna) de 32 bits e por isto classificada como "CPU de 32 bits". Como, para suportar multitarefa, o sistema operacional tem que ser desenvolvido especificamente para a CPU, os sistemas operacionais capazes de multitarefa ficarem conhecidos como "sistemas de 32 bits". O funcionamento da multitarefa é simples de entender. Um programa nada mais é que uma série de instruções executadas sucessivamente em uma determinada ordem - que pode ser alterada por eventos gerados pelo usuário (dados de entrada) ou pelo próprio programa (comparando resultados intermediários e agindo de acordo com seus valores). Para executar um programa, o sistema operacional lê estas instruções do disco ("carrega" o programa) copiando-as em um trecho da memória e comanda a CPU para executá-las uma a uma. Quando o usuário ordena que um segundo programa seja carregado, o processo é repetido e as instruções do segundo programa são carregadas em um trecho diferente da memória. Como a maioria dos nossos micros tem uma única CPU, e como as instruções somente podem ser executadas pela CPU uma após a outra, é evidente que duas delas não podem ser executadas ao mesmo tempo. Portanto, por este raciocínio, em um micro com uma única CPU a multitarefa é impossível. E o raciocínio é verdadeiro: o que chamamos de multitarefa na verdade é um truque através do qual CPU e sistema operacional simulam a execução simultânea de mais de uma tarefa. A ilusão é possível devido à rapidez das novas CPUs, capazes de executar milhões de instruções por segundo. Vamos supor que em um dado momento haja diversos programas rodando ao mesmo tempo, programas A, B, C, etc. Para simular a multitarefa, o sistema operacional "aponta" a CPU para o trecho da memória onde estão as instruções do programa A e ordena que elas sejam executadas. Após a execução de algumas centenas delas (o que não leva mais que milésimos de segundo) o sistema operacional interrompe a execução do programa A e guarda na memória seu "estado" (conteúdo dos registradores e outros dados importantes para sua execução, como se "congelasse" o programa A). Em seguida aponta a CPU para o trecho da memória onde estão as instruções do programa B, reconstitui seu "estado" previamente armazenado e passa a executar algumas centenas de suas instruções. O procedimento é repetido tantas vezes quantos programas estiverem em execução e a mudança de um para outro é tão rápida que temos a ilusão que nenhum deles foi paralisado (mas se ocorrer a combinação de muitos programas simultâneos com pouca memória e se um destes programas for, por exemplo, um vídeo com imagens em movimento, dá para perceber claramente as interrupções pelos "trancos" e irregularidades no movimento da imagem). Para que a multitarefa possa ocorrer, a CPU precisa identificar claramente os trechos de memória alocados para cada programa e impedir que qualquer programa acesse um trecho usado por outro (ou seja, "proteger" o trecho de memória de cada programa, daí o nome "modo protegido"). E o sistema operacional tem que ser capaz de gerenciar a troca de tarefas usando instruções específicas para isto. Por isto sistemas como o DOS, desenvolvidos para CPUs que não suportavam o modo protegido, não são capazes de multitarefa. Windows 95 é, porém de forma limitada, já que muito de seu código ainda deriva do DOS. Hoje em dia (março de 1997) os sistemas operacionais para a linha PC que realmente suportam multitarefa em toda sua plenitude são o OS/2 e o Windows NT, além de algumas variantes do Unix pouco usadas mas que estão ganhando popularidade com o advento da Internet. (24/03/97)

P:Algumas vezes, em informática, encontrei a palavra "preemptiva". Recentemente li um artigo que mencionava: "multitarefa preemptiva". Qual o significado?
R: Na linguagem comercial, o termo "preempção" se emprega nos casos em que o vendedor tem preferência de recompra de um determinado bem caso o comprador decida vendê-lo mais tarde. Ou seja: o controle do bem, cedido pelo vendedor, volta para ele quando não mais for do interesse do comprador. Na linguagem técnica da informática, significa que a preferência pelo controle da CPU é sempre do sistema operacional e retorna para ele depois de repassado a um programa qualquer. Complicou? Então destrinchemos. Os novos sistemas operacionais "de 32 bits" aproveitam-se das características dos microprocessadores modernos para implementar a chamada "multitarefa", ou seja, a possibilidade de executar (ou simular que está executando) mais de um programa simultaneamente. Ora, um programa é uma série de instruções executadas seqüencialmente pela CPU. Como a maioria dos nossos micros tem apenas uma CPU, para dar a impressão que está executando mais de um programa em um dado momento é necessário apelar para algum artifício. No caso, trata-se do recurso denominado "time slice" (fatia de tempo), no qual a CPU e o sistema operacional administram as coisas de forma que cada programa receba a atenção da CPU por algum tempo (ou seja, fornecem-lhe uma "fatia de tempo") enquanto os outros esperam. Depois, é ele que espera até que todos os demais tenham recebido atenção. Na verdade os programas estão rodando cada um a seu tempo, um após o outro. Mas o tempo dado a cada um para usar a CPU é tão pequeno (milésimos de segundo) e a troca tão rápida, que tem-se a impressão que as coisas ocorrem simultaneamente. Há duas formas de controlar o tempo fornecido aos programas. Em uma delas, a "fatia" destinada a cada programa é variável. Quando chega sua vez, o sistema operacional passa o controle da CPU para o programa e aguarda que ele o devolva para passá-lo para o próximo. Esta técnica chama-se "multitarefa cooperativa" porque depende da cooperação de cada programa. Em outras palavras: se um programa mal feito tomar para si o controle da CPU e se recusar a devolvê-lo por um tempo demasiadamente longo, parece que os demais programas travaram. Na outra técnica, o controle da CPU é feito pelo próprio sistema operacional. Ou seja: independentemente do fato de um dado programa ter ou não terminado o que estava fazendo, esgotada sua "fatia de tempo" o sistema operacional retoma o controle da CPU (ou seja, exerce seu direito de preempção) e o repassa para o próximo da fila. Esta é a chamada "multitarefa preemptiva". Sua grande vantagem é que nenhum programa, por mais mal comportado que seja, pode se apoderar do controle da máquina e travar o sistema. Windows 3.x ainda usava multitarefa cooperativa. Já Windows NT e OS/2 usam multitarefa preemptiva.

B. Piropo