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