Вы находитесь на странице: 1из 53

Sistemas de Computadores

Processos
Maria Joo Viamonte
Luis Lino Ferreira
Fevereiro de 2014
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
2
Processo
Fluxo de actividade autnomo que executa um
conjunto de aces que so determinadas por
um programa
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
3
Conceito de Processo
Pode ser definido como:
Uma instncia de um programa em execuo
No entanto um programa pode ser constitudo por n processos
Unidade de trabalho de um sistema operativo multi-processo
Portanto, um processo contm:
Cdigo executvel
Dados (variveis globais)
Estado do Processador (registos, stack, program counter)
Ficheiros abertos
Tempo de CPU consumido

07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
4
O Sistema Operativo
Um SO multi-tarefa deve:
Alternar a execuo de processos de forma a maximizar a
utilizao da CPU
Fornecer tempo de resposta razovel
Alocar recursos a processos
Suportar a criao de processos pelo utilizador
Suportar a comunicao entre processos
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
5
Diagrama de Estados
terminated
ready running
despacho
admisso
libertado
(a) Diagrama de transio de estado
new
waiting
interrompido
evento
ocorre
espera
evento
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
6
Estados de um Processo
New
O processo est a ser criado
Ready
O processo est pronto para ser executado
Espera que lhe seja atribudo o (um) processador
Running
O cdigo referente a um processo est a ser executado
Sistemas multi-processador podem executar vrios processo em paralelo, um em
cada processador
Waiting
O processo est espera que um evento especfico ocorra
por ex. operao de I/O ou recepo de um sinal
Terminated
O processo finalizou a sua execuo
Nota:
Em mquinas com apenas uma CPU s um processo pode estar no
estado running, no entanto pode haver vrios processos no estado
ready e no estado waiting
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
7
Diagrama de Estados: Possvel implementao
despacho
interrompido
sai
fila dos proc. ready
CPU
fila evento 2
fila evento 1
espera evento 1
espera evento 2
ocorre evento 1
ocorre evento 2
admisso
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
8
Estados de um Processo em Linux
Zombie
O processo j terminou mas os recursos ainda no foram
totalmente libertados
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
9
Estados de um Processo em Windows
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
10
Estados de um Processo em Windows
Estados dos processos/threads
Ready: pronta para ser executada
Standby: o escalonador decidiu que esta seria a prxima thread a ser
escalonada
aguarda apenas por um processador livre
Running: a ser executada num processador
Waiting: espera de um operao de I/O. Pode passar para running se a sua
prioridade for elevada
Transition: parte da informao sobre a thread foi guardada em fora da
memria principal, fica espera que a CPU v buscar esses dados
Terminated: estado em que o SO limpa os dados da thread
Initialized: usado internamente enquanto a thread criada
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
11
Estados de um Processo em Windows
threads
Thread, ou linha de execuo em portugus, uma forma de
um processo dividir a si mesmo em duas ou mais tarefas que
podem ser executadas simultaneamente. O suporte a threads
fornecido pelo prprio sistema operativo (SO) ou implementada
atravs de uma biblioteca de uma determinada linguagem
Os sistemas que suportam apenas uma nica thread de
execuo so chamados de monothread e aqueles sistemas
que suportam mltiplas threads so chamados de multithread
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
12
Comutao de Processos
Os algoritmos de escalonamento definem em
cada momento quais os processos que se
encontram o estado de Running.
Isto implica a troca de processos em execuo
A Comutao de Processos
a operao que permite retirar um processo em
execuo e substitui-lo por outro, implica saber:
Quais os processos a trocar
Os atributos do processo
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
13
Comutao entre Processos
Fases:
Salvaguarda do estado do processo que perde a CPU
Restaurao do estado do processo que ganha a CPU
A troca de contexto no corresponde a uma
actividade til (overhead)
O nmero de trocas contexto deve ser minimizado
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
14
Comutao entre Processos
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
15
Representao do Processo
Cada processo representado perante o SO por
uma estrutura contendo a sua informao, o
Process Control Block (PCB)
O PCB o conjunto de atributos do processo e
pode ser dividido em trs partes:
Identificao do processo
Informao de estado do processador
Informao de controle do processo
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
16
Representao do Processo
Identificao do Processo - Composta por identificadores
numricos que incluem:
Identificador do processo (PID)
Identificador do processo que o criou
Identificador do utilizador
Informao de Estado do Processador - Contida nos
registos do processador:
Registos visveis pelo utilizador
Registos de controle de estado
Apontadores de pilha
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
17
Representao do Processo
Informao de controle do processo:
Estado e escalonamento, de acordo com a mquina de estados definida
anteriormente, que inclui:
Estado do processo (por ex. ready)
Prioridade
Suporte ao escalonamento (por ex. h quanto tempo est espera)
Evento (por ex. identificao do evento que o processo est espera)
Estrutura dos dados, por ex. relao pai-filho
Comunicao entre processos
Privilgios, por ex. tipos de instrues que podem ser executadas
Gesto da memria
Valores do registo base e limite
ponteiro para a tabela de pginas
Propriedade e uso de recursos, por ex. ficheiros abertos
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
18
Process Control Block (PCB)
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
19
PCB em Linux
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
20
Exemplos
Lanar Processos
Uma forma de lanar processos executar
comandos numa shell
Exemplo: > ls
A shell cria um novo processo que executa o programa
ls, espera que termine e volta a aceitar comandos
Exemplo: > ls &
A shell cria um novo processo que executa o programa
ls e retorna imediatamente para aceitar comandos
O processo lanado em background
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
21
Exemplos
Consultar Processos
O comando ps mostra os processos existentes:
Exemplo: > ps u
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1050 893 892 0 75 0 - 1758 rt_sig pts/1 00:00:00 tcsh
0 R 1050 1653 893 0 76 0 - 634 - pts/1 00:00:00 ps
PID: identificador do processo
TTY: terminal
S: estado do processo
- R running, S sleeping, D uninterruptible sleep
TIME: tempo de processador j consumido
O comando top mostra estatsticas gerais do sistema e
processos com maior actividade
Exemplo: > top
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
22
Exemplos
Parar ou suspender Processos
O comando kill permite enviar um sinal
assncrono ao processo
Exemplo: > kill -9 143
Existem combinaes de teclas que enviam sinais
especficos:
CTRL+C signal interrupt (sigint)
CTRL\ signal quit (sigquit)
CTRL+Z signal stop (sigstop)
> bg coloca o processo suspenso a executar-se em
segundo plano
> fg coloca o processo suspenso a executar-se em
primeiro plano
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
23
Exemplos
Redireccionar entradas e sadas
Cada processo tem os seguintes canais de comunicao:
Stdin standard input entrada de dados
Stdout standard output sada de dados normal
Stderr standard error sada de dados de erro
possvel direccionar ficheiros para estes canais:
> ls > resultado.txt
> telnet > script.txt
tambm possvel direccionar a sada de um processo
para a entrada de outro, atravs de um pipe:
> ls | grep lista
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
24
Escalonamento
Escalonamento de processos (Scheduling)
Uma das principais funes do SO fazer a gesto da CPU
Recurso critico do SO
Um dos objectivos da multi-programao a maximizao da utilizao
da CPU
A sua relao com os restantes sistemas importante
Exemplo, gesto da memria
Responsvel pela transio readyrunning e runningready
Decide qual o prximo processo a ser executado em funo dos seus
parmetros
Note-se que em sistema mono-processador apenas pode ser executado
um processo de cada vez
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
25
Gesto de Processos
Principais operaes suportadas pelo SO
Criao de um processo
create_process()
ou fork()
Execuo de um programa
Terminao de um processo
Obter informao sobre um processo
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
26
Criao de Processos
O processo criador referido como processo pai
e o processo criado o processo filho
Os processos filhos podem criar outros
processos filhos, criando uma rvore de
processos
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
27
rvore de Processos (UNIX)
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
28
Criao de Processos
Diferente hipteses de implementao
Modos de execuo:
Pai e filho(s) executam concorrentemente
Pai espera at que o(s) filho(s) terminem
Ocupao da memria
O filho duplica o espao do pai
O filho carrega um novo programa
Partilha de recursos:
Pai e filho(s) partilham todos os recursos
Filho(s) partilham um subconjunto dos recursos do pai
Pai e filho(s) no partilham quaisquer recursos
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
29
Criao de Processos (Linux)
A chamada ao sistema fork() cria um processo
novo
O pai e o filho executam concorrentemente
O filho duplica o espao de memria do pai (mas no
pode aceder aos dados do pai)
Pai e filho partilham alguns recursos
Ficheiro abertos
Objectos para comunicao inter-processos
Etc.
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
30
Criao de Processos (Linux)
fork()
O processo criador, processo pai cria uma rplica quase
idntica de si prprio o processo filho
Caso a execuo da funo decorra sem erros, ao processo
filho retornado o valor 0 e ao processo pai retornado o PID
do filho que acabou de ser criado
Esta funo retorna -1 em caso de erro e atribui varivel
errno o erro que ocorreu
Um forma de obter a descrio do erro que ocorreu recorrer funo
perror()
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
31
Criao de Processos (Linux)
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
main()
{
pid_t pid;
pid = fork(); /* Cria um PROCESSO */
if (pid < 0)
{
perror("Erro ao criar o processo:");
exit(-1);
}
else
{ if (pid >0) /* Cdigo do PAI */
printf("Pai: Eu sou o PAI\n");
}
else /* Cdigo do FILHO */
{
printf("Filho:Processo Filho\n");
}
exit(0);
} /* fim main */
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
32
Criao de Processos (Linux)
pid_t pid;
int a;
a = 1;
pid = fork(); /* Cria um PROCESSO */
if (pid < 0)
{
perror("Erro ao criar o processo:");
exit(-1);
}
else
{
if (pid >0) /* Cdigo do PAI */
{
printf("Pai: Eu sou o PAI\n");
printf("Pai: a=%d\n", a);
a = a + 1;
printf("Pai:a+1=%d\n", a);
}
else /* Cdigo do FILHO */
{
printf("Filho:Processo Filho\n");
printf("Filho:a=%d\n", a);
a = a + 1000;
printf("Filho:a+1000=%d\n", a);
}
}
exit(0);
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
33
Terminao de um Processo (Linux)
Terminao normal: um processo termina quando acaba a
execuo da sua ltima instruo, e pede ao SO para elimin-lo
via a chamada ao sistema exit().Nesta altura:
O processo devolve eventualmente dados ao seu progenitor
atravs da evocao da funo wait()
O SO liberta todos os recursos utilizados pelo processo (filho)
Terminao abrupta: o pai pode terminar a execuo dos
processos filhos atravs da chamada ao sistema abort()
Filho excedeu os recursos que lhe foram reservados
A tarefa atribuda ao filho no mais necessria
O pai est a terminar o que obriga os filhos a terminar
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
34
Criao de Processos (Linux)
Funes wait() e waitpid()
Quando um processo termina o seu pai informado desse
facto atravs do sinal SIGCHLD. Este evento assncrono, por
isso o pai pode receber este sinal em qualquer altura da sua
execuo
Juntamente com o sinal, o SO armazena o valor de retorno
do processo filho, assim como, outra informao relativa ao
estado de sada do processo filho. O pai pode optar por
ignorar o sinal (situao por defeito) ou indicar uma funo
que ir ser chamada quando um filho terminar
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
35
Criao de Processos (UNIX)
Funes wait() e waitpid()
Ao chamar as funes wait() ou waitpid(), o processo
evocador poder ter um dos seguintes comportamentos:
ficar bloqueado at que o filho termine
retornar imediatamente, caso o filho j tenha terminado
retornar imediatamente, com um erro, caso j no existam
mais filhos em execuo
A funo wait() espera at que qualquer filho termine
A funo waitpid() espera at que um processo filho
especfico termine, alm disso, esta funo tambm
permite esperar por um filho sem bloquear o processo pai
Join de processos

pid=fork();
if (pid<0) exit(-1);
if (pid > 0) /* Cdigo do Pai */ {
printf("Pai\n");
do {
aux = waitpid(pid, &status, WNOHANG);
if (aux == 0) {
printf(".\n");
sleep(1);
}
} while (aux == 0);
if (WIFEXITED(status)) {
printf("Pai: o filho retornou o valor:%d\n", WEXITSTATUS(status));
}
}
else /* Cdigo do filho */ {
printf("Filho\n");
sleep(5);
printf("Filho a sair\n");
exit(5);
}
exit(0);

}
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
36
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
37
Join de processos (c/ controlo de erros)
pid=fork();
if (pid<0)
{
perror("Erro ao cria o processo\n");
exit(-1);
}
else
{
if (pid > 0) /* Cdigo do Pai */
{
printf("Pai\n");
do
{
aux = waitpid(pid, &status, WNOHANG);
if (aux==-1)
{
perror("Erro em waitpid");
exit(-1);
}
if (aux == 0)
{
printf(".\n");
sleep(1);
}
} while (aux == 0);
if (WIFEXITED(status))
{
printf("Pai: o filho retornou o valor:%d\n", WEXITSTATUS(status));
}
else /* Cdigo do filho */
{
printf("Filho\n");
sleep(5);
printf("Filho a sair\n");
exit(5);
}
exit(0);
}
}
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
38
Processo Cooperativos
Os processos podem ser classificados como:
Independentes: no afecta nem afectado pela
execuo de outros processos
Cooperativos: interagem com outros processos
de modo a executar uma tarefa, pelo que afectam
e podem afectar outros processos
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
39
Processo Cooperativos
Razes para a cooperao
Partilha de informao
De modo a requerer servios a outros processos
Performance
O programa partido em vrios processos executadas em
paralelo (vrios processadores)
Modularidade
Separar o programa em mdulos diferentes. Por ex. separar a
interface grfica das rotinas do programa
Convenincia
Por ex. de modo a que seja possvel realizar vrias tarefas em
simultneo
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
40
Paradigma Produtor/Consumidor
O processo produtor produz informao
O processo consumidor consome essa
informao
A comunicao entre os processo pode ser
feita atravs de:
Unbounded-buffer: o buffer utilizado para a troca
de dados no tm qualquer limite de tamanho
Bounded-buffer: o buffer utilizado para a troca
de dados tm um tamanho limitado
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
41
Paradigma Produtor/Consumidor
Soluo com bounded-buffer
Dados em memria partilhada:
#define BUFFER_SIZE 10
Typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0; //pos. de escrita
int out = 0; //pos. de leitura
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
42
Paradigma Produtor/Consumidor
Produtor
item nextProduced;
while (1) {
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
Resto inteiro da diviso
Prximo item a ser
produzido
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
43
Soluo pouco eficiente dado
que o consumidor fica em
espera activa!!!
Paradigma Produtor/Consumidor
Consumidor
item nextConsumed;
while (1) {
while (in == out)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
Prximo item a ser
consumido
Se in==out significa que no
existem elementos no buffer
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
44
Comunicao entre Processos
Atravs de mensagens
Permite a comunicao entre processos atravs
das primitivas de mensagens:
send(): envia mensagem
receive(): recebe mensagem
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
45
Comunicao entre Processos
Directa
Os processos tm que explicitamente indicar o destino ou a
fonte
send(p, msg), p processo de destino
receive(q, msg), q processo fonte
Propriedades
A ligao entre os pares estabelecida automaticamente
A ligao est associada apenas a dois processos
A ligao pode ser unidireccional ou bidireccional
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
46
Comunicao entre Processos
Indirecta
As mensagens so enviadas para caixas de correio
send(mailboxA, msg), coloca uma mensagem na caixa de correio
A
receive(mailboxA, msg), l uma mensagem na caixa de correio A
Propriedades
No existe ligao entre processos, apenas ligao caixa
A caixa de correio pode estar associada a mais do que 1
processo
A caixa de correio pode ser unidireccional ou bidireccional
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
47
Sincronizao
As primitivas de send e receive tambm podem
servir para sincronizar dois processos, isto , um
processo pode ficar espera que exista uma
mensagem na caixa do correio
As primitivas podem ser bloqueantes (blocking) ou no
bloqueantes (nonblocking)
As primitivas bloqueantes so tambm classificadas como
sncronas
As primitivas no bloqueantes so tambm classificadas
como assncronas
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
48
Buffering
Fila de mensagens associadas a uma ligao;
implementada numa das trs formas:
Capacidade nula 0 mensagens. O emissor tem
de esperar pelo receptor (rendezvous)
Capacidade limitada comprimento finito de n
mensagens. O emissor tem de esperar se a
ligao est saturada
Capacidade ilimitada comprimento infinito. O
emissor nunca espera
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
49
Escalonadores
Um processo migra entre vrias filas de
escalonamento durante o seu tempo de vida
O SO deve seleccionar processos destas filas com
base em algum mtodo ou algoritmo
H trs tipos de escalonadores:
curto prazo
mdio prazo
longo prazo
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
50
Escalonadores
Os processos podem ser caracterizados como ou:
I/O-bound process despende mais tempo a fazer
operaes I/O do que clculos na CPU; consequentemente,
h bastantes CPU bursts de curta durao
CPU-bound process despende mais tempo a fazer clculos
na CPU; consequentemente, h poucos CPU bursts de longa
durao
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
51
Escalonadores
Escalonador de longo-prazo (ou escalonador de processos):
Selecciona os processos que devem ser levados para a fila
Ready de modo a que existe uma mistura equilibrada entre
processos I/O bound e CPU bound
Escalonador de longo-prazo invocado com pouca frequncia
(segundos, minutos) (pode ser lento)
Escalonador de longo-prazo controla o grau de
multiprogramao
Utilizado essencialmente em sistema batch
Pode estar ausente (por ex: no Linux e no Windows)
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
52
Escalonadores
Escalonador de curto-prazo (ou escalonador da
CPU):
Selecciona que processos devem ser executados de
seguida e reserva, consequentemente, a CPU
Escalonador de curto-prazo invocado com bastante
frequncia
(milli-segundos) (ser rpido)
Exemplos:
Linux
Windows
07/08
Sistemas de Computadores
Lus Lino Ferreira, Maria Joo Viamonte
53
Escalonadores
Escalonador de mdio-prazo
Permite remover processos da memria
Mais tarde pode ser retomada a execuo destes programas
(Swapping)
Devido a falta de memria ou para uniformizar o conjunto de
processos em execuo

Вам также может понравиться