Você está na página 1de 15

Sistemas Operacionais

4.1
Mdulo 4: Processos

Conceito de Processo

Escalonamento de processos

Operaes sobre processos

Processos cooperantes

Comunicao entre processos


Sistemas Operacionais
4.2
Conceito de Processo

Um Sistema Operacional executa uma variedade de programas:


Sistemas de processamento em lotes (batch) processa
jobs
Sistemas de tempo partilhado (timeshared) roda
processos de usurios ou tarefas (tasks)

O livro texto usa os termos job e processo quase como


sinnimos

Processo: um programa em execuo

Um processo inclui:
Contador de programa (PC)
Pilha
Segmento (rea) de dados
Sistemas Operacionais
4.3
Estados de Processos

Ao executar, processo muda de estados


New: processo est sendo criado
Running: instrues do processo esto executando
Waiting: processo est esperando ocorrncia de algum
evento
Terminated: processo terminou a execuo
Sistemas Operacionais
4.4
Diagrama de Estados de Processos
Sistemas Operacionais
4.5
Process Control Block (PCB)

PCB contm informaes associadas a cada processo:


Estado do processo
Valor do PC (apontador de instrues)
rea para guardar valor dos registradores
Infos. para escalonamento de CPU (escalonamento
processos)
Infos. Para gerenciamento de memria
Infos. De contabilidade dos processos
Status das operaes de I/O (ex.: Infos. sobre arquivos
usados)
Sistemas Operacionais
4.6
Process Control Block (PCB)
Sistemas Operacionais
4.7
Troca de processos
(ou context switch)
Sistemas Operacionais
4.8
Filas para escalonamento de processos

Fila de jobs: conjunto de todos os processos no sistema

Fila de prontos (ready queue): conjunto de todos os processos


que residem na memria principal, prontos para executar mas
no esto em execuo

Filas de dispositivos: conjunto de processos esperando por um


dispositivo de I/O
Os processos migram entre as diversas
filas do sistema
Sistemas Operacionais
4.9
Fila de prontos e as diversas filas de
dispositivos de I/O
Sistemas Operacionais
4.10
Representao do escalonamento de
processos
Sistemas Operacionais
4.11
Escalonadores

Escalonador de longo prazo (Longterm scheduler) seleciona


qual processo deve ser colocado (buscado) para a fila de
prontos
por exemplo:

de uma fila de jobs batch

Escalonador de curto prazo (shortterm scheduler, CPU


scheduler) seleciona, da fila de prontos, que processo deve
ser executado a seguir (i.e. alocado CPU).
Sistemas Operacionais
4.12
Adio de um escalonador de mdio prazo
Sistemas Operacionais
4.13
Escalonadores (Cont.)

Escalonador de curto prazo invocado muito frequentemente


(milisegundos) (deve ser rpido)

Escalonador de longo prazo invocado infrequentemente


(segundos, minutos) (pode ser lento)

Escalonador de longo prazo controla o grau de


multiprogramao do sistema

Processos podem ser classificados em:


I/Obound processes delimitados pelo tempo de I/O,
gasta mais tempo fazendo I/O do que computaes, muitas
pequenas rajadas (bursts) de CPU
CPUbound processes delimitados pelo tempo de CPU,
gastam a maior parte do tempo fazendo computaes;
Poucas RAJADAS LONGAS de CPU
Sistemas Operacionais
4.14
Trocas (chaveamentos) de Contexto

Quando CPU troca processo em execuo por outro, SO deve


salvar o estado (contexto de execuo) do processo anterior e
carregar nos regs. da mquina o estado (guardado) do prximo
processo

Tempo de troca de contexto overhead; a traca til mas no


o objetivo do sistema, objetivo processar / computar jobs

Tempo de troca de contexto dependente do suporte de


hardware
Sistemas Operacionais
4.15
Criao de processos

Processo pai cria filhos (ou clones), que por sua vez criam
outros formando uma rvore de processos

Compartilhamento de recursos possveis:


Pai e filhos compartilham todos os recursos
Filhos compartilham subconjunto de recursos do pai
Pai e filhos no compartilham recursos

Execues possveis:
Pai e filhos executam concorrentemente
Pai espera at filhos terminarem
Sistemas Operacionais
4.16
Criao de Processos (Cont.)

Possibilidades para o espao de endereamento


Filho duplicata do pai (espao separado)
Filho tem programa carregado no espao do pai
(substituio)

Exemplos do UNIX
Chamada a fork cria novo processo
Chamada execve usada depois do fork (no cdigo do
clone) para substituir programa no espao do clone

Sistemas Operacionais
4.17
Uma rvore de processos em um sistema UNIX tpico
Sistemas Operacionais
4.18
Trmino de Processos

Processo executa chamada exit pedindo ao SO que termine o


processo
Dado passado de filho para pai (via wait)
Recursos do processo so dealocados pelo SO

Pai pode terminar a execuo de processos filhos (abort)


devido:
Filho excedeu uso de recursos alocados
Tarefa atribuda ao filho no mais necessria
Pai vai terminar... possibilidades so:

SO termina filho tambm

Cascateamento de trminos

Sistemas Operacionais
4.19
Processos Cooperantes

Processos Independentes no podem afetar ou serem afetados


pela execuo de outros processos

Processos Cooperantes podem afetar a execuo de outros


processos cooperantes (ou ter execuo afetada)

Vantagens da cooperao entre processos:


Compartilhamento de informaes
Aumento da velocidade de computao (speedup)
Modularidade
Convenincia
Sistemas Operacionais
4.20
Problema ProdutorConsumidor

Paradigma (padro de comportamento) para certos processos


cooperantes
Processo produtor produz informao que consumida
por outro processo (consumidor)

Comunicao entre os processos cooperantes utiliza um


buffer:
Boundedbuffer: tem tamanho fixo
Unboundedbuffer: assumese que o buffer no tem limite
de tamanho.
Sistemas Operacionais
4.21
Soluo para probl. BoundedBuffer
com memria compartilhada

Shared data
var n;
type item = ;
var buffer. array [0..n1] of item;
in, out: 0..n1;

Producer process
repeat

produce an item in nextp

while in+1 mod n = out do noop;


buffer [in] :=nextp;
in :=in+1 mod n;
until false;
Sistemas Operacionais
4.22
BoundedBuffer (Cont.)

Consumer process
repeat
while in = out do noop;
nextc := buffer [out];
out := out+1 mod n;

consume the item in nextc



until false;
Solution is correct, but can only fill up n1 buffer.
Sistemas Operacionais
4.23
Threads

Uma thread (ou lightweight process) uma unidade bsica de utilizao


de CPU

Uma thread consiste de:


Apontador de instrues (PC)
Conjunto de registradores
Espao de pilha

Thread = processo de peso leve ou, tambm, linha de execuo de um


processo

Uma thread compartilha com outras threads pares (peers):


A seo de cdigo
A seo de dados
Os recursos do SO
coletivamente tudo isso conhecido como tarefa (task)

Um processo tradicional (ou heavyweight process) igual a uma tarefa


com uma thread

OBS: para executar com threads necessrio uma pilha por thread
(uma s nao suficiente), ao contrario das reas de cdigo, vars. e
heap que podem ser compartilhadas peals threads pares.
Sistemas Operacionais
4.24
Threads (Cont.)

Em uma tarefa com mltiplas threads, enquanto uma thread est bloqueada
e esperando, uma segunda thread na mesma tarefa pode executar
Cooperao de mltiplas threads no mesmo job confere maior vazo
(throughput) e melhoria de desempenho
Aplicaes que requerem compartilhamento de dados se beneficiam ao
utilizar threads (ex. buffer comum em padro produtorconsumidor)

Threads provm um mecanismo que possibilita a um processo sequencial


fazer uma chamada bloqueante ao SO e ao memo tempo obter paralelismo
no processo

Threads podem ser suportadas pelo ncleo do SO (ex. Mach, OS/2, Linux).

Threads podem ser suportadas em espao de endereos de usurio (User


level threads);
Como uma biblioteca que roda em espao de usurio (exs. Projeto
Andrew da CMU, CThreads)
Suportado pela linguagem e respectivo compilador (ex. Modula, Java)

Abordagem hbrida implementa ambos os mtodos (ex. userlevel e kernel


level threads em Solaris 2).
Sistemas Operacionais
4.25
Mltiplas Threads dentro de uma tarefa
Sistemas Operacionais
4.26
Suporte a Threads em Solaris 2

Solaris 2 uma verso do UNIX com suporte para threads


pelo kernel ou em nvel de usurio, multiprocessamento
simtrico (SMP) e escalonamento de tempo real

LWP (lightweight process) intermedirio entre userlevel


threads e kernellevel threads

Utilizao de recursos por tipo de thread:


Kernel thread: uma pequena estrutura de dados e uma
pilha; troca de contexto entre threads pares no requer
troca de infos. de acesso memria (segmentos
compartilhados) relativamente rpido
LWP: PCB com valores de regs, infos. de contabilidade
e memria; troca entre LWPs relativamente lenta
Userlevel thread: precisa apenas uma pilha e uma
apontador de instrues (PC) por thread. Chaveamento
rpido entre threads pares (kernel v somente os LWPs,
estes que suportam as threads userlevel)
Sistemas Operacionais
4.27
Solaris 2 Threads
Sistemas Operacionais
4.28
Comunicao entre Processos (IPC)

So necessrios mecanismos comunicao entre processos e


sincronizao de suas aes

Sistema de mensagens: processos comunicam uns com os


outros sem uso de variveis compartilhadas

Mecanismo de IPC por troca de mensagens prov duas


operaes:
send(message) mensagens de tamanho fixo ou varivel
receive(message)

Se P e Q querem comunicar, eles precisam:


Estabelecer um canal de comunicao entre si
Trocar mensagens via send/receive

Implementao de um link de comunicao:


Fsico (e.g., memria compartilhada, barramento de
hardware)
lgico (e.g., propriedades lgicas)
Sistemas Operacionais
4.29
Questes de Implementao

Como os links so estabelecidos ?

Um link pode ser associado a mais de dois processos ?

Quantos links podem existir entre cada par de processos


comunicantes ?

Qual a capacidade de um link ?

O tamanho da mensagem fixo ou varivel ?

O link unidirecional ou bidirecional?

Você também pode gostar