O documento discute conceitos fundamentais sobre processos em sistemas operacionais, incluindo:
1) A definição de processo e como eles são abstrações de programas em execução;
2) Como processos são criados, executados e terminados em sistemas operacionais;
3) Como processos se comunicam entre si e os desafios relacionados à condição de disputa.
2. Processo
— Uma
abstração
de
um
programa
em
execução;
— Pseudoparalelismo
é
a
ilusão
de
que
é
possível
executar
dois
ou
mais
programas
ao
mesmo
tempo
em
uma
máquina
monoprocessada
;
— Multiprogramação:
divisão
da
memória
para
que
ocorra
uma
troca
rápida
de
processos
na
CPU;
— Multiprocessadores
é
quando
se
tem
mais
de
um
processador
para
realizar
um
processamento
paralelo
verdadeiro;
— Para
ambos,
a
necessidade
é
de
executar
mais
de
um
programa
(processo)
por
vez.
terça-feira, 13 de março de 12
3. Processos
O Modelo de Processo
— Nesse modelo os softwares, inclusive o SO, são
organizados em processos seqüenciais;
— Um processo é um programa em execução
acompanhado dos valores:
— Contador de programa;
— Registradores;
— Variáveis.
— Modelo de processo é baseado em 2 conceitos
independentes: agrupamento de recursos e execução.
3
terça-feira, 13 de março de 12
4. Processos
O Modelo de Processo
— (a) Multiprogramação de quatro programas
— (b) Modelo conceitual de 4 processos sequenciais,
independentes
— (c) Somente um programa está ativo a cada momento
— A taxa na qual o processo realiza sua computação não será
uniforme e provavelmente nem reproduzível mesmo que seja
4
na mesma ordem outra vez.
terça-feira, 13 de março de 12
5. Analogia:
Programa
e
Processo
— Exemplo:
Cientista
da
computação
com
dotes
culinários
e
o
filho
picado
de
abelha;
— Processo:
constitui
uma
atividade;
— Possui
programa,
entrada,
saída
e
um
estado.
— Um
único
processador
pode
ser
compartilhado
por
vários
processos;
— O
escalonador
(algoritmo)
determina
quando
trocar
um
processo
pelo
outro.
terça-feira, 13 de março de 12
6. Processos
Necessários
— Em
sistemas
simples
(apenas
uma
aplicação
-‐
microondas):
todos
os
processos
são
necessários
quando
o
sistema
é
ligado;
— Em
sistemas
de
propósito
geral:
é
necessário
criar
e
terminar
processos
durante
a
operação.
terça-feira, 13 de março de 12
7. Criação de Processos
Principais eventos que levam à criação de
processos
1. Início do sistema;
2. Execução de chamada ao sistema de
criação de processos por um processo
em execução;
3. Solicitação do usuário para criar um
novo processo;
4. Início de um job em lote.
7
terça-feira, 13 de março de 12
8. Criação de Processos
— Alguns
processos
criados
ficam
em
primeiro
plano
(interagindo
com
o
usuário)
e
outros
em
segundo
(apresentam
função
específica);
— Para
ver
a
lista
de
processos:
— No
UNIX
e
LINUX
digite
ps
na
linha
de
comando;
— No
Windows
digite
CTRL+ALT+DEL;
— Nos
dois
sistemas
é
possível
ter
várias
janelas
abertas
ao
mesmo
tempo
e
cada
uma
executando
um
processo;
— Em
um
sistema
em
lote
(comp.
de
grande
porte),
quando
o
SO
tiver
todos
os
recursos,
ele
criará
um
novo
processo
e
executará
o
próximo
job
da
fila.
terça-feira, 13 de março de 12
9. Criação
de
Processo
— Todo
o
processo
é
criado
por
um
processo
existente
executando
uma
chamada
ao
sistema
de
criação
de
processo;
— Tanto
no
Windows
como
no
Unix,
depois
de
um
processo
filho
criado,
o
pai
e
o
filho
têm
seus
próprios
e
distintos
espaços
de
endereçamento;
— É
possível
o
compartilhamento
de
recursos
entre
o
pai
e
o
filho.
terça-feira, 13 de março de 12
10. Término de Processos
Condições que levam ao término de processos
1. Saída normal (voluntária)
Ex.: Quando termina o que tinha que fazer
2. Saída por erro (voluntária)
Ex.: Tenta compilar um programa e o arquivo não
existe
3. Erro fatal (involuntário) causado pelo processo,
erro de programa
Ex.: Referência à memória inexistente ou divisão
por zero
4. Cancelamento por um outro processo
(involuntário)
10
terça-feira, 13 de março de 12
11. Hierarquias de Processos
— Pai cria um processo filho, processo filho pode criar
seu próprio processo
— Formam uma hierarquia
— UNIX chama isso de “grupo de processos”
— Windows não possui o conceito de hierarquia de
processos
— Todos os processos são criados iguais
11
terça-feira, 13 de março de 12
12. Estados de Processos (1)
— Possíveis estados de processos
— em execução
— bloqueado
— pronto
— Mostradas as transições entre os estados
12
terça-feira, 13 de março de 12
13. Estados de Processos (2)
— Camada mais inferior de um SO estruturado por
processos
— trata interrupções, escalonamento
— Acima daquela camada estão os processos
sequenciais
13
terça-feira, 13 de março de 12
14. Implementação de Processos (1)
Tabela de Processos ou Blocos de Controle de Processos
Campos da entrada de uma tabela de processos
14
terça-feira, 13 de março de 12
15. Implementação de Processos (2)
Esqueleto do que o nível mais baixo do SO faz
quando ocorre uma interrupção
15
terça-feira, 13 de março de 12
16. Threads
— Thread é um fluxo de controle;
— São fluxos de controle
independentes que podem ser
executados quase em
paralelo;
— Mantém o mesmo espaço de
endereçamento;
16
terça-feira, 13 de março de 12
17. Threads
O Modelo de Thread (1)
(a) Três processos cada um com um thread
(b) Um processo com três threads
17
terça-feira, 13 de março de 12
18. O Modelo de Thread (2)
— Items compartilhados por todos os threads em um
processo
— Itens privativos de cada thread
18
terça-feira, 13 de março de 12
19. O Modelo de Thread (3)
Cada thread tem sua própria pilha
19
terça-feira, 13 de março de 12
20. Uso de Thread (1)
Um processador de texto com três threads
20
terça-feira, 13 de março de 12
21. Uso de Thread (2)
Um servidor web com múltiplos threads
21
terça-feira, 13 de março de 12
22. Comunicação
Interprocessos
— Freqüentemente
processos
precisam
se
comunicar
com
outros
processos;
— Há
3
tópicos
que
devem
ser
abordados:
— Como
um
processo
passa
informações
para
o
outro;
— Como
garantir
que
2
ou
mais
processos
não
invadam
uns
aos
outros
quando
envolvidos
em
atividades
críticas;
— Seqüência
adequada
quando
existirem
dependências.
— Os
mesmos
problemas
e
soluções
se
aplicam
aos
threads.
terça-feira, 13 de março de 12
23. Condição
de
Disputa
— Situações
nas
quais
2
ou
mais
processos
estão
lendo
ou
escrevendo
algum
dado
compartilhado
e
cujo
resultado
final
depende
das
informações
de
quem
e
quando
executa
precisamente.
terça-feira, 13 de março de 12
24. Comunicação Interprocesso
Condições de Disputa
Dois processos querem ter acesso simultaneamente à memória
compartilhada
24
terça-feira, 13 de março de 12
25. Exclusão
Mútua
— O
que
fazer
para
evitar
condições
de
disputa?
— A
resposta
pra
evitar
esse
problema
é
impedir
que
mais
de
um
processo
leia
e
escreva
ao
mesmo
tempo
na
memória
compartilhada;
— Precisa-‐se
de
exclusão
mútua:
modo
de
assegurar
que
outros
processos
sejam
impedidos
de
usar
uma
variável
ou
um
arquivo
compartilhado
que
já
estiver
em
uso
por
um
outro
processo.
terça-feira, 13 de março de 12
26. Região
CríAca
—Exemplo:
Parte
do
programa
em
que
há
acesso
à
memória
compartilhada;
terça-feira, 13 de março de 12
27. Regiões Críticas (1)
Quatro condições necessárias para prover exclusão
mútua:
1. Nunca dois processos simultaneamente em
uma região crítica
2. Nenhuma afirmação sobre velocidades ou
números de CPUs
3. Nenhum processo executando fora de sua
região crítica pode bloquear outros processos
4. Nenhum processo deve esperar eternamente
para entrar em sua região crítica
27
terça-feira, 13 de março de 12
28. Regiões Críticas (2)
Exclusão mútua usando regiões críticas
28
terça-feira, 13 de março de 12