Sistemas Operacionais
Processos e Threads – Parte I
1
Introdução aos Sistemas
Operacionais
Este material tem como base as
seguintes fontes:
– TANENBAUM. Sistemas Operacionais Modernos,
2ª Edição – Capítulo 2;
– OLIVEIRA; CARISSIMI; TOSCANI. Sistemas
Operacionais. 2ª Edição – Capítulo 2;
– Deitel, Deitel e Choffnes. Sistemas Operacionais
– Capítulos 3, 4, 5, 6 e 8.
– [Link]/tanenbaum_br
– [Link]/wiki/Sistemas_operacionais
2
Capítulo 2
Processos e Threads
2.1 Processos
2.2 Threads
2.3 Comunicação interprocessos
2.4 Problemas clássicos de IPC
2.5 Escalonamento
3
Processos
Programa x Processo
• Programa
– Entidade estática e armazenada em meio
permanente
– Seqüência de instruções
• Processo
– Entidade dinâmica e efêmera, ou temporária
– Composto por código, dados e contexto (valores)
– Armazenado em meio volátil
Fonte bibliográfica Própria 4
Processos
Pseudoparalelismo x Paralelismo real
• Pseudoparalelismo
– Apenas um processador;
– Uma fatia de tempo para cada processo;
– Ilusão de que o sistema executa vários processos
ao mesmo tempo
• Paralelismo real
– Mais de um processador rodando processos
distintos
Fonte bibliográfica Própria 5
Processos
Programa x Instância de Execução
• Cada processo é uma instância de execução
independente, possuindo seu próprio contexto
• Em algumas situações pode haver
compartilhamento de código entre processos
Fonte bibliográfica Própria 6
Processos
Componentes de um processo
• Espaço de endereçamento
– Espaço de memória para a atuação do processo
– Área de endereços válidos do processo
• Estrutura de dados de controle
– Dados mantidos no descritor de processos (PCB)
– Variáveis de controle do processo
• Contexto de execução
– Pilha, programa, dados
– O processo propriamente dito
Fonte bibliográfica Própria 7
Processos
Um processo Unix típico
• Um processo Unix típico com áreas de pilha,
dados, heap, código e espaço de endereçamento
Fonte bibliográfica Própria 8
Processos
Monoprogramação
• Apenas um processo em memória
• Qualquer chamada bloqueante longa implica em
ociosidade do processador
• Somente um programa está ativo a cada momento
Fonte bibliográfica Própria 9
Processos
Multiprogramação
• Vários programas carregados em memória
• Otimiza os recursos processador e memória
• Qualquer chamada bloqueante longa implica em
chaveamento de contexto para outro processo
• Somente um processo em execução a cada
momento
Fonte bibliográfica Própria 10
Processos
Interrupção
Esqueleto do que o nível mais baixo do SO
faz quando ocorre uma interrupção
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 11
Processos
Características da Multiprogramação
• Cada processo tem seu espaço de endereçamento,
dados, código e pilha
• Somente um programa está ativo a cada momento
• No chaveamento de contexto as variáveis dos
processos envolvidos são salvas
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 12
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
3. Solicitação do usuário para criar um novo
processo
4. Início de um job em lote
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 13
Término de Processos
Condições que levam ao término de
processos
1. Saída normal (voluntária)
2. Saída por erro (voluntária)
3. Erro fatal (involuntário)
4. Cancelamento por um outro processo
(involuntário)
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 14
Execução de Processos
• Ciclo de processador:
– Processo não está esperando por E/S;
• Ciclo de E/S:
– Processo espera pelo resultado de uma E/S.
• Primeiro ciclo é sempre do
processador
• Trocas de ciclos:
– CPU E/S: por chamada ao sistema
– E/S CPU: por interrupção
Fonte bibliográfica Própria 15
Classificação de Processos
• Quanto à utilização dos recursos
– CPU-bound: ciclo de CPU >> ciclo de E/S
– I/O-bound: ciclo de E/S >> ciclo de CPU
• Importante:
– CPU-bound x I/O-bound (intuitivo);
– Para melhorar o desempenho do sistema, o
ideal é misturar ambos
Fonte bibliográfica Própria 16
Relacionamento entre
processos (1)
• Processos independentes (Windows):
– Não apresentam hierarquia, mas interagem
entre si;
– Windows: processos são hierarquicamente
iguais, mas existe o conceito de prioridade;
– Pai x Filho: A relação pai x filho existe apenas
no momento da criação;
– Handle: O pai guarda o handle do filho, mas o
filho pode ser deserdado.
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 17
Relacionamento entre
processos (2)
• Processos organizados em grupos e
árvores (UNIX, Linux):
– Processo PAI cria processos FILHOS
– Todos pertencem ao mesmo grupo (group ID)
– Todos os grupos pertencem a uma mesma
sessão (por usuário, session ID)
– UNIX: o processo init é PAI de todos os
processos do sistema; todos os processos do
grupo recebem sinais enviados para o PAI.
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 18
Relacionamento entre
processos (3)
• Árvore de processos:
Fonte bibliográfica Própria 19
Relacionamento entre
processos (4)
• O que fazer na destruição de um
processo?
1. Toda a descendência “morre” (nunca
acontece no Windows e no UNIX);
2. A descendência é herdada pelo AVÔ;
3. Postergar a destruição do processo PAI até o
final da execução de todos os processos
FILHO.
Fonte bibliográfica Própria 20
Relacionamento entre
processos (5)
• Destruição do processo e de seus
descendentes (caso 1)
Implicaria em mau
funcionamento do
sistema. Por exemplo:
- Um terminal inicia um
browser. Se o terminal
for finalizado, o browser
também será encerrado!
Fonte bibliográfica Própria 21
Relacionamento entre
processos (6)
• A descendência é herdada pelo processo
AVÔ (UNIX)
O processo init, ou outro
imediatamente acima do
processo encerrado,
assume os processos
filhos. Por exemplo:
- Um terminal inicia um
browser. Se o terminal
for finalizado, o browser
será herdado pelo
processo init.
Fonte bibliográfica Própria 22
Relacionamento entre
processos (7)
• Só destrói processo pai depois da
conclusão dos processos filhos (Windows
e UNIX) O processo pai só será
encerrado quando os filhos
forem encerrados. Por exemplo:
- O usuário solicita um
comando tail –f em um
arquivo. O terminal gera um
processo filho para realizar a
tarefa (tail –f). Em seguida o
usuário pede para fechar o
terminal, mas as isso não
acontece enquanto o tail não
for concluído.
Fonte bibliográfica Própria 23
Estados de um processo
• O processo recém criado está pronto para
ser EXECUTADO!
• O processador (CPU) está disponível?
– Pode estar disponível ou ocupado com outro
processo!
• O que fazer???
– Executar ou esperar a vez.
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 24
Modelo simplificado a DOIS
estados (1)
• Um processo no estado “executando”;
• Os demais processos esperam em uma fila
de “aptos”;
• O escalonador decide quem será o
próximo processo a executar...
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 25
Modelo simplificado a DOIS
estados (2)
• Diagrama de estados:
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 26
Limitações do modelo
simplificado
• Dois estados são suficientes?
• Causas para um processo não
executar:
– Esperando CPU (apto)
– Esperando pela ocorrência de eventos
externos (bloqueado)
• O modelo de dois estados não
contempla processos bloqueados!
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 27
Modelo a CINCO estados (1)
• Executando (Running)
• Apto (Ready)
• Bloqueado (Blocked)
• Criação (New)
• Destruição (Exit)
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 28
Modelo a CINCO estados (2)
• Diagrama de blocos
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 29
Transições de estados (1)
• Criação ►Apto:
– O processo criado é colocado na fila de
aptos quando o SO está pronto para lidar
com um novo processo
– Existe um limite para o número de
processos aptos (tamanho máximo da fila
de aptos)
Fonte bibliográfica Própria 30
Transições de estados (2)
• Apto ►Executando:
– O escalonador de processos seleciona um
processo na fila de aptos para execução
na CPU
– O escalonador de processos gerencia a
fila de aptos e define qual será o próximo
processo a executar
Fonte bibliográfica Própria 31
Transições de estados (3)
• Executando ► Apto:
– Por expiração do tempo de execução
(sistema colaborativo)
– Para ceder a CPU a um processo de mais
alta prioridade (sistema preemptivo)
– Voluntariamente
Fonte bibliográfica Própria 32
Transições de estados (4)
• Executando ► Bloqueado:
– Quando um processo em execução solicita
algum serviço pelo qual precisa esperar
– A solicitação ocorre através de uma
chamada de sistema
Fonte bibliográfica Própria 33
Transições de estados (5)
• Bloqueado ►Apto:
– Quando o resultado da chamada de
sistema (evento concluído) está disponível
para o processo
– Acontece através de uma interrupção à
CPU
Fonte bibliográfica Própria 34
Transições de estados (6)
• Bloqueado ►Destruição:
– Quando ocorre algum erro na execução da
chamada de sistema obrigando o SO a
abortar o processo
– Exemplo: erro de leitura em disco
Fonte bibliográfica Própria 35
Considerações: memória (1)
• Pontos a ponderar:
– Memória principal é um recurso caro e
finito
– A CPU é muito mais rápida do que E/S
• Conseqüências:
– A fila de processos bloqueados cresce
muito!!! (SATURANDO A MEMÓRIA)
– A fila de processos aptos tende a zero!!!
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 36
Considerações: memória (2)
• Conseqüências:
– A memória cheia de processos bloqueados!
– Precisamos de espaço na memória primária
para processos aptos (a prioridade é deles!)
• Correção do problema:
– Necessidade de memória virtual e swap para
processos bloqueados
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 37
Considerações: memória (3)
• Correção do problema:
– Precisamos de um novo estado!
– Um processo é suspenso quando está
bloqueado na memória primária e é
movido para o disco (memória virtual)
• Surge então estado suspenso
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 38
Modelo de SEIS estados
• Contempla o estado suspenso
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 39
Razões para suspensão
• Swapping
• Solicitação de usuário
(depuradores)
• Temporização
• Processo suspende outro processo
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 40
Tipos de suspensão
• Bloqueado/Suspenso
– O processo está em disco (sofreu swap) e
esperando um evento (está bloqueado)
• Apto/Suspenso
– O processo está em disco mas a situação
que causou o seu bloqueio já está
resolvida
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 41
Modelo de SETE estados
• Evolução: contemplando os estados
suspensos
Fonte bibliográfica OLIVEIRA; CARISSIMI; TOSCANI. Sistemas Operacionais. 2ª Edição – Capítulo 2 42
Implementação do Processo
• Necessidade:
– Manter várias informações do processo
(prioridades, localização, estados, direitos de
acesso, etc)
• Bloco Descritor do Processo (PCB)
– Estrutura de dados que representa o processo
na memória
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 43
Bloco Descritor do Processo
• Informações no PCB:
– Fica na memória kernel do sistema
– Cada PCB corresponde a uma entrada na
tabela de processos gerenciada pelo kernel
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 44
PCB, Processo e Fila
• Importante:
– O PCB representa o processo
– As filas (do escalonador) contém o
identificador do PCB, não a sua estrutura de
dados
– Todo processo tem um PCB, mas nem todo
PCB possui um processo
– Alguns sistemas alocam PCBs vazios na
memória no momento do boot do sistema
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 45
Tipos de Filas de Descritores
• Livres:
– Descritores sem processos
• Aptos:
– Descritores com processos em ciclo de
CPU
• Bloqueados:
– Descritores com processos bloqueados
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 46
Tarefas Típicas no PCB durante
a CRIAÇÃO do Processo
• Iniciação do PCB:
– Alocação de áreas de memória, dados e pilha e
de estruturas de dados pelo SO
– A alocação pode ocorrer no boot ou quando o
processo é criado
• Inserção do PCB:
– O endereço PCB (ponteiro) é inserido na fila de
aptos (ou apto/suspenso)
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 47
Tarefas Típicas no PCB durante
a EXECUÇÃO do Processo
• Execução do processo:
– Realização das instruções da área de código do
processo pela CPU
– Repare que quem executa é o processo de
usuário, não o sistema operacional
• Atualização do PCB:
– Os valores do PCB são salvos pelo SISTEMA
OPERACIONAL sempre que ocorre
chaveamento de contexto
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 48
Tarefas Típicas no PCB durante
o TÉRMINO do Processo
• Destruição do processo:
– Limpeza do PCB (retirada dos recursos e
estruturas de dados do processo)
– O PCB (estrutura de dados) é reciclado
para outro processo
– Enquanto espera por outro processo, o
PCB fica em uma fila de “livres”
Fonte bibliográfica TANENBAUM. Sistemas Operacionais Modernos, 2ª Edição – Capítulo 2 49