Sei sulla pagina 1di 6

3.

4 A competio entre processos


Uma tarefa importante de um sistema operacional a alocao dos recur-
sos de uma mquina para os processos no sistema. Aqui, estamos usando o
termo recurso em um sentido amplo, incluindo os dispositivos perifricos
da mquina e as caractersticas dentro da mquina propriamente dita. O
gerenciador de arquivos aloca acesso aos arquivos assim como aloca espa-
o de armazenamento em massa para a construo de novos arquivos; o
gerenciador de memria aloca espao em memria; o escalonador aloca
espao na tabela de processos; e o despachante aloca fatias de tempo. As-
sim como com muitos problemas em sistemas computacionais, essa tarefa
de alocao pode parecer simples primeira vista. Por trs dela, no entan-
to, residem diversas sutilezas que podem levar a erros de funcionamento
em um sistema pobremente projetado. Lembre-se, uma mquina no pen-
sa por si s; ela meramente segue instrues. Logo, para construir siste-
mas operacionais confiveis, devemos desenvolver algoritmos que cubram
cada contingncia possvel, independentemente de quo minscula ela
possa parecer.

Semforos
Vamos considerar um sistema operacional de compartilhamento de tempo
e de multiprogramao que controla as atividades de um computador com
uma nica impressora. Se um processo precisar imprimir seus resultados,
ele deve solicitar que o sistema operacional de a ele acesso ao controlador
de dispositivo da impressora. Neste ponto, o sistema operacional deve de-
cidir se aceita ou no essa requisio, dependendo de a impressora j estar
sendo usada por outro processo. Se ela no estiver, o sistema operacional
deve permitir o acesso e deixar que o processo continue; caso contrrio, o
sistema operacional deve negar a requisio e talvez classificar o processo
como um processo em espera at que a impressora fique disponvel. Afinal,
se for dado a dois processos acesso simultneo impressora do computador,
os resultados seriam inteis para ambos.

Gerenciador de tarefas da Microsoft


Voc pode ter alguma ideia da atividade interna de um sistema operacional Windows, da Micro-
soft, ao executar o programa utilitrio Gerenciador de Tarefas. (Pressione as teclas Ctrl, Alt e De-
lete simultaneamente.) Ao selecionar a aba de Processos na janela do Gerenciador de Tarefas,
voc pode ver a tabela de processos. Realize um experimento: olhe a tabela de processos antes
de ativar qualquer programa aplicativo. (Voc ficar surpreso com a quantidade de processos
que j esto na tabela. Eles so necessrios para a operao bsica do sistema.) Agora, ative
uma aplicao e confirme que um processo adicional entrou na tabela. Voc tambm ser capaz
de ver quanto espao de memria foi alocado para o processo.
Para controlar o acesso impressora, o sistema operacional deve
acompanhar se a impressora foi alocada. Uma abordagem para essa tarefa
seria usar uma varivel de controle, que nesse contexto refere-se a um bit
em memria cujos estados so frequentemente referidos como configurado
e limpo, no lugar de 1 e 0. Uma varivel de controle limpa (valor 0) indica
que a impressora est disponvel, e uma varivel de controle configurada
(valor 1) indica que a impressora est atualmente ocupada. primeira vis-
ta, esta abordagem parece ser bem fundamentada. O sistema operacional
simplesmente verifica a varivel de controle a cada vez que uma requi-
sio de acesso impressora for feita. Se ela estiver limpa, a solicitao
atendida e o sistema operacional configura a varivel de controle. Se a
varivel de controle estiver configurada, o sistema operacional faz com
que o processo solicitante espere. Cada vez que um processo termina o
uso da impressora, o sistema operacional ou aloca a impressora para um
processo em espera ou, se no existir nenhum processo, meramente limpa
a varivel de controle.
Entretanto, este sistema de varivel de controle simples tem um pro-
blema. A tarefa de testar e, possivelmente, configurar a varivel de contro-
le requer diversas instrues de mquina. (O valor da varivel de controle
deve ser obtido da memria principal, manipulado dentro da CPU e, por fim,
armazenado novamente na memria.) Dessa forma, possvel que uma ta-
refa seja interrompida aps uma varivel de controle ter sido detectada, mas
antes de a varivel de controle ter sido configurada. Em particular, suponha
que a impressora esteja atualmente disponvel, e um processo requeira seu
uso. A varivel de controle obtida da memria principal e verifica-se que
ela estava limpa, indicando que a impressora est disponvel. Entretanto,
neste momento, o processo interrompido e outro processo inicia sua fatia
de tempo. Ele tambm requer o uso da impressora. Mais uma vez, a varivel
de controle obtida da memria e ainda permanece limpa, pois o processo
anterior foi interrompido antes que o sistema operacional tivesse tempo de
configurar a varivel de controle na memria principal. Consequentemen-
te, o sistema operacional permite que o segundo processo inicie o uso da
impressora. Posteriormente, o processo original continua sua execuo de
onde ele parou, que imediatamente aps o sistema operacional descobrir
que a varivel de controle estava limpa. Logo, o sistema operacional con-
tinua configurando a varivel de controle na memria principal e dando
acesso impressora ao processo original. Dois processos esto agora usando
a mesma impressora.
A soluo para esse problema insistir que a tarefa de testar e, pos-
sivelmente, configurar a varivel de controle seja terminada sem inter-
rupes. Uma abordagem usar as instrues para desabilitar e habilitar
interrupes fornecidas na maioria das linguagens de mquina. Quando
executada, uma instruo que desabilita faz com que as interrupes futuras
sejam bloqueadas, enquanto que uma instruo de habilitao de interrup-
es faz com que a CPU volte a responder aos sinais de interrupo. Logo, se
o sistema operacional comea a rotina de teste de varivel de controle com
uma instruo para desabilitar interrupes e termina com uma instruo
de habilitao de interrupes, nenhuma outra atividade pode interromper
a rotina uma vez que ela tenha iniciado.
Outra abordagem usar a instruo testar-e-configurar, que est dis-
ponvel em muitas linguagens de mquina. Esta instruo guia a CPU de
forma que ela obtenha o valor de uma varivel de controle, veja o valor
recebido e, ento, configure a varivel de controle tudo dentro de uma
nica instruo de mquina. A vantagem que como a CPU sempre com-
pleta uma instruo antes de reconhecer uma interrupo, a tarefa de testar
e configurar a varivel de controle no pode ser quebrada quando estiver
sendo implementada como uma nica instruo.
Uma varivel de controle implementada apropriadamente, como des-
crito no pargrafo anterior, chamada de semforo, em referncia aos
sinais de ferrovias usados para controlar o acesso aos trilhos. Na verdade,
os semforos so usados em sistemas de software praticamente da mesma
maneira que so usados em sistemas de ferrovias. Correspondente seo
da ferrovia que pode conter apenas um trem por vez est uma sequn-
cia de instrues que deveria ser executada por apenas um processo por
vez. Tal sequncia de instrues chamada de regio crtica. O requisito
de que se deve permitir a execuo de apenas um processo em um dado
momento do tempo conhecido como excluso mtua. Em resumo,
uma maneira comum de obter excluso mtua para uma regio crtica
proteg-la com um semforo. Para entrar na regio crtica, um processo
deve encontrar o semforo limpo e, ento, configurar o semforo antes de
entrar na regio crtica; ao sair da regio crtica, o processo deve limpar o
semforo. Se o semforo for encontrado em seu estado configurado, o pro-
cesso que estiver tentando entrar na regio crtica deve esperar at que o
semforo tenha sido limpo.

Impasses (Deadlocks)
Outro problema que pode surgir durante a alocao de recursos so os
impasses, que ocorrem quando dois ou mais processos so impedidos
de progredir porque cada um est esperando um recurso alocado para o
outro. Por exemplo, um processo pode ter acesso impressora do com-
putador, mas estar esperando para acessar o tocador de CDs, enquanto
outro processo tem acesso ao tocador de CDs, mas est esperando pela
impressora. Outro exemplo ocorre em sistemas nos quais se permite que
os processos criem novos processos (uma ao chamada de ramificao
no vernculo do UNIX) para realizarem subtarefas. Se o escalonador no
tiver mais espao adicional na tabela de processos e cada processo no
sistema deve criar um processo adicional antes de poder completar sua
tarefa, nenhum processo pode continuar. Tais condies, como em outras
configuraes (Figura 3.7), podem prejudicar severamente o desempe-
nho de um sistema.
Anlises de impasses tm revelado que eles no podem ocorrer a me-
nos que todas as trs condies a seguir sejam satisfeitas:
1. Existe competio por recursos no compartilhveis.
Figura 3.7 Um impasse resultante da competio por intersees ferrovirias no com-
partilhveis.

2. Os recursos so solicitados de maneira parcial; ou seja, tendo recebido


alguns recursos, um processo retornar posteriormente para requisitar
mais.
3. Uma vez que um recurso tenha sido alocado, no pode ser obtido for-
a.
O objetivo de isolar essas condies que o problema do impasse
pode ser resolvido atacando qualquer uma das trs. Tcnicas que atacam
a terceira condio caem na categoria conhecida como deteco de im-
passes e esquemas de correo. Nestes casos, a ocorrncia de um impasse
considerada to remota que nenhum esforo feito para evitar o pro-
blema. Em vez disso, a abordagem baseada na deteco de ocorrncia
e em sua correo por meio da obteno forada de alguns dos recursos
alocados. Nosso exemplo de uma tabela de processos cheia pode encaixar-
-se nesta classe. Se um impasse ocorrer duvido a uma tabela cheia, roti-
nas dentro do sistema operacional (ou talvez um administrador huma-
no usando seus poderes como superusurio) podem remover (o termo
tcnico matar) alguns dos processos. Isso libera espao na tabela de
processos, quebrando o impasse e permitindo que os processos remanes-
centes continuem suas tarefas.
Tcnicas que atacam as duas primeiras condies so conhecidas
como esquemas de preveno de impasses. Um, por exemplo, ataca a se-
gunda condio, requerendo que cada processo requisite todos os seus re-
cursos de uma vez s. Outro esquema ataca a primeira condio, no por
meio da remoo da competio diretamente, mas convertendo recursos
no compartilhveis em recursos compartilhveis. Por exemplo, suponha
que o recurso em questo seja uma impressora, e que diversos processos
requisitem seu uso. Cada vez que um processo requisitar a impressora, o
sistema operacional poderia aceitar a requisio. Entretanto, em vez de
Sistemas operacionais de mltiplos ncleos
Sistemas de compartilhamento de tempo/multitarefas tradicionais do a iluso de executarem
muitos processos de uma vez s por meio de trocas rpidas entre fatias de tempo, mais rpidas
do que um humano poderia perceber. Os sistemas modernos continuam a ter multitarefas des-
sa maneira, mas, alm disso, as ltimas CPUs de mltiplos ncleos so genuinamente capazes
de executar dois, quatro ou mais processos simultaneamente. Diferentemente de um grupo de
computadores de ncleo nico trabalhando juntos, uma mquina de mltiplos ncleos contm
mltiplos processadores independentes (nesse caso chamados de ncleos) que compartilham
os perifricos, a memria e outros recursos do computador. Para um sistema operacional que
oferece suporte a mltiplos ncleos, isso significa que o despachante e o escalonador devem
considerar quais processos so executados em cada ncleo. Com diferentes processos sendo
executados em cada ncleo, o tratamento da competio entre processos torna-se mais desa-
fiador, pois desabilitar interrupes em todos os ncleos sempre que um deles entrar em uma
regio crtica seria altamente ineficiente. A cincia da computao tem muitas reas de pesqui-
sa relacionadas construo de mecanismos de sistema operacional mais adequados para os
mltiplos ncleos.

conectar o processo ao controlador de dispositivo da impressora, o sistema


operacional iria conectar-se a um controlador de dispositivo que armaze-
nasse a informao a ser impressa em armazenamento em massa, ao invs
de envi-lo para a impressora. Logo, cada processo, pensando que tem
acesso impressora, poderia ser executado de maneira normal. Posterior-
mente, quando a impressora estivesse disponvel, o sistema operacional
poderia transferir os dados do armazenamento em massa para a impresso-
ra. Desta maneira, o sistema operacional faria com que o recurso que no
pode ser compartilhado parecesse que pode por meio da iluso de mais de
uma impressora. Esta tcnica de manter dados para uma sada posterior
em um momento mais conveniente chamada de spooling.
Apresentamos spooling como uma tcnica para dar acesso, a diversos
processos, a um recurso comum tema que possui muitas variaes. Por
exemplo, um gerenciador de arquivos poderia conceder acesso ao mesmo
arquivo a diferentes processos se os processos estiverem meramente lendo
dados do arquivo, mas podem ocorrer conflitos se mais de um processo ten-
tar alterar um arquivo ao mesmo tempo. Logo, um gerenciador de arquivos
pode alocar o acesso a arquivos de acordo com as necessidades dos proces-
sos, permitindo que diversos processos tenham permisso de leitura, mas
que apenas um tenha permisso de escrita. Outros sistemas podem dividir
o arquivo em pedaos, de forma que diferentes processos possam alterar
partes diferentes do arquivo simultaneamente. Cada uma dessas tcnicas,
no entanto, possui sutilezas que devem ser resolvidas para obter um sistema
confivel. Como, por exemplo, estes processos com acesso apenas de leitura
a um arquivo poderiam ser notificados quando um processo com permisso
de escrita o altera?
Questes e exerccios
1. Suponha que os processos A e B estejam compartilhando tempo na mesma mquina, e que
cada um deles precisa do mesmo recurso no compartilhvel por breves perodos de tem-
po. (Por exemplo, cada processo pode estar imprimindo uma srie de relatrios pequenos e
independentes.) Cada processo pode, ento, repetidamente adquirir o recurso, liber-lo e,
posteriormente, requisit-lo de novo. Cite uma das desvantagens de controlar o acesso ao
recurso da seguinte maneira:
Inicie atribuindo o valor 0 para a varivel de controle. Se o processo A requisitar o recurso e a va-
rivel de controle for 0, conceda o acesso. Caso contrrio, faa com que o processo A espere. Se
o processo B requisitar o recurso e a varivel de controle for 1, conceda o acesso. Caso contrrio,
faa com que o processo B espere. Cada vez que o processo A terminar de usar o recurso, modifique
a varivel de controle para 1. Cada vez que o processo B terminar de usar o recurso, modifique a
varivel de controle para 0.

2. Suponha que uma estrada de duas pistas converta-se em uma, de forma a passar em um tnel.
Para coordenar o uso do tnel, o seguinte sistema de sinalizao foi instalado:
Um carro entrando em qualquer uma das extremidades do tnel faz com que as luzes vermelhas
sobre o tnel se acendam. Quando o carro sai do tnel, as luzes so desligadas. Se um carro que
est chegando encontra uma luz vermelha ligada, ele espera at que a luz seja desligada antes de
entrar no tnel.

Qual a falha desse sistema?


3. Suponha que as seguintes solues tenham sido propostas para solucionar o impasse em
uma ponte de pista nica quando dois carros se encontram. Identifique qual condio de
impasse dada no texto solucionada por cada soluo.
a. No deixar um carro passar na ponte at que a ponte esteja vazia.
b. Se os carros se encontrarem, fazer com que um d a volta.
c. Adicionar uma segunda pista ponte.
4. Suponha que representssemos cada processo em um sistema de multiprogramao com
um ponto e desenhssemos uma flecha de um ponto a outro se o processo representado
pelo primeiro ponto estivesse esperando por um recurso (no compartilhvel) sendo usado
pelo segundo. Os matemticos chamam a figura resultante de um grafo dirigido. Que pro-
priedade do grafo dirigido equivalente ao impasse no sistema?

Potrebbero piacerti anche