Você está na página 1de 17

Processos

Unidade II

Sistemas de Informao GEAD


Grupo Unis-MG

Processos
Chaves de Sistemas Distribudos
Programas em execuo
Os processos so organizados na
memria e o ncleo do sistema elege
quem ser executado.

Estados de Processo
executando (running)
pronto (ready)
bloqueado (blocked)

Transio de estados de
Processo

Identificao de Processos
Sistema cria um processo e associa a este um nmero de identificao,
pid (process identifier), colocando-o no final da fila de processos
prontos. Em outras palavras, o estado inicial de um processo o estado
pronto. Suponha que o pid deste processo 5 (P5). Em um
determinado tempo de execuo, a fila de prontos e o processo sendo
executado pela CPU pode ser como mostrado na figura abaixo. Perceba
que o processo P5 o prximo processo a ser executado.

Implementao de
Processos
Para implementar o modelo de processo, comum a criao e
manuteno de uma tabela que organize as informaes relativas aos
processos. Esta tabela chamada de tabela de processos e
usualmente implementada sob a forma de um vetor de estruturas ou
uma lista ligada de estruturas. Cada processo existente corresponde a
uma entrada nesta tabela, e cada entrada da tabela denominada PCB
(Process Control Block ou Bloco de Controle de Processo). O PCB possui
todas as informaes necessrias para que a execuo do processo
possa ser iniciada, interrompida e retomada conforme determinao do
SO, sem prejuzo para o processo. A figura seguinte mostra a tabela de
processos, implementada como um vetor de estruturas, e os PCBs

Implementao de
Processos

Implementao de
Processos
- identificador de processo (pid);
- estado atual do processo;
- cpia do contedo do registrador contador de programa (PC
Program Counter Contem informaes sobre a alocao de memria
onde se encontra a prxima instruo a ser executada);
- tempo em que o processo iniciou;
- tempo utilizado do processador;

Comunicao entre
Processos
A comunicao entre processos (IPC Interprocess Communication)
uma situao comum em sistemas de computao, que ocorre
quando dois ou mais processos precisam se comunicar, ou seja,
quando os processos precisar compartilhar ou trocar dados entre si. A
comunicao entre processos pode ocorrer em vrias situaes
diferentes, tais como:
- redirecionamento de sada (resultados) de um comando para
outro;
- envio de arquivos para impresso;
- transmisso de dados pela rede, entre outras.
Tal comunicao ocorre, geralmente, por meio da utilizao de
recursos comuns, como a memria do sistema, aos processos
envolvidos na comunicao. Devido complexidade e limitaes de
desempenho, as interrupes no so usadas para este tipo de
comunicao. A seguir sero abordados alguns tpicos associados
comunicao entre processos.

Condies de corrida
- Spooler de Impresso
Considere que o diretrio de spooler possui um nmero grande de
slots (0, 1, 2, ...) cada qual sendo capaz de armazenar um nome de
arquivo que dever ser impresso. Tambm considere que existem
duas variveis compartilhadas, na memria principal, tais que:
- prox: aponta para o prximo arquivo para ser impresso;
- livre: aponta para o prximo slot livre no diretrio.

Condies de corrida
Processo
Processo
Processo
Processo
.
.
.
Processo
Processo
Processo
Processo

A
B
B
B

slot_livre = livre (7)


l livre (7)
escreve o nome do arquivo (outro.c) no slot 7
livre = livre + 1 (8)

A
A
A
A

verifica slot_livre (7)


escreve o nome do arquivo (isto.pdf) no slot 7
slot_livre = slot_livre + 1 (8)
livre = 8

Condies de corrida
O Problema de Espao na Geladeira
Hora

Pessoa A

Pessoa B

6:00

Olha a geladeira: sem leite

6:05

Sai para a padaria

6:10

Chega na padaria

Olha a geladeira: sem leite

6:15

Sai da padaria

Sai para a padaria

6:20

Chega em casa: guarda o leite

Chega na padaria

6:25

Sai da padaria

6:30

Chega em casa: Ops!

Race Condition Condies


de Corrida
Qualquer processo
que queira imprimir
precisa colocar o seu
documento na fila de
impresso
(compartilhada). O
processo de impresso
retira os documentos
na ordem em que
chegaram na fila
enviando-os
impressora.

Conceito de Operaes
Atmicas
Operaes Atmicas so operaes que
no podem ser interrompidas.
No possvel ver as "partes" de uma
operao atmica, mas apenas seu
efeito final. Ou seja, no possvel ver a
operao "em progresso".
Ex.:

Regies Crticas
Objetivo: proibir que mais de um processo acesse o dado compartilhado ao mesmo
tempo (i.e. excluso mtua).
A implementao de excluso mtua essencial para sistemas operacionais
multiprogramados.
Diviso do processo:
processamento local;
manipulao de dados compartilhados.
A parte do programa cujo processamento, por manipular dados compartilhados, pode
levar ocorrncia de condies de corrida chamada REGIO CRTICA.
Objetivo: nunca permitir que dois processos entrem simultaneamente em suas regies
crticas correspondentes (i.e. referentes mesma varivel compartilhada).

Excluso Mtua com


Espera Ocupada
a) Inibio de Interrupes
b) Variveis de Travamento
c) Estrita alternncia
vez": varivel compartilhada, inicialmente valendo 0. Se h dois processos (A) e (B), sendo
que vez==0 indica a vez do processo (A) entrar em sua regio crtica e vez==1, a vez do
processo (B):
(A)(B)
while(1) {
while(vez != 0)
/* espera */;
regiao_critica();
vez = 1;
regiao_nao_critica();
} while (1) {
while (vez != 1)
/* espera */;
regiao_critica();
vez = 0;
regiao_nao_critica();
}

Excluso Mtua com


Bloqueio e Desbloqueio
O problema com a espera ocupada que ela gasta desnecessariamente tempo do
processador. A soluo seria bloquear a execuo do processo quando a sua entrada na
regio crtica no for permitida. Para isso, existem duas primitivas (chamadas ao
sistemas):

sleep(): bloqueia o processo (para de do estado "rodando" para "bloqueado") que a


chamou at que outro processo o "acorde".

wakeup(pid): acorda o processo cujo identificador pid.