Você está na página 1de 15

Sistemas Operacionais

Mdulo 4: Processos

Conceito de Processo

"

Escalonamento de processos

"

Operaes sobre processos

"

Processos cooperantes

"

Comunicao entre processos

4.1

Sistemas Operacionais

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

4.2

Sistemas Operacionais

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

4.3

Sistemas Operacionais

Diagrama de Estados de Processos

4.4

Sistemas Operacionais

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)

4.5

Sistemas Operacionais

Process Control Block (PCB)

4.6

Troca de processos
(ou context switch)

Sistemas Operacionais

4.7

Sistemas Operacionais

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

4.8

Fila de prontos e as diversas filas de


dispositivos de I/O

Sistemas Operacionais

4.9

Representao do escalonamento de
processos

Sistemas Operacionais

4.10

Sistemas Operacionais

Escalonadores

"

Escalonador de longo prazo (Longterm scheduler) seleciona


qual processo deve ser colocado (buscado) para a fila de
prontos
por exemplo:
I 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).

4.11

Sistemas Operacionais

Adio de um escalonador de mdio prazo

4.12

Sistemas Operacionais

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
4.13

Sistemas Operacionais

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

4.14

Sistemas Operacionais

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

4.15

Sistemas Operacionais

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

4.16

Sistemas Operacionais

Uma rvore de processos em um sistema UNIX tpico

4.17

Sistemas Operacionais

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:
I SO termina filho tambm
I Cascateamento de trminos

4.18

Sistemas Operacionais

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

4.19

Sistemas Operacionais

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.

4.20

Soluo para probl. BoundedBuffer


com memria compartilhada

Sistemas Operacionais

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;
4.21

Sistemas Operacionais

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.

4.22

Sistemas Operacionais

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.

4.23

Sistemas Operacionais

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


4.24
level threads em Solaris 2).

Sistemas Operacionais

Mltiplas Threads dentro de uma tarefa

4.25

Sistemas Operacionais

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)
4.26

Sistemas Operacionais

Solaris 2 Threads

4.27

Sistemas Operacionais

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)
4.28

Sistemas Operacionais

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?

4.29

Você também pode gostar