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

Sistemas Operativos

Processos
Processos ee Threads
Threads
Ibria Medeiros
Licenciatura Informtica: Redes e Multimdia
Departamento de Matemtica
Universidade dos Aores
2011/2012

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos eThreads

Sumrio

Sumrio

Conceito de Processo
Escalonamento de Processos
Operaes sobre Processos
Cooperao entre Processos
Gesto de Processos em Linux
Threads

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Sumrio

Sumrio

Conceito de Processo
Escalonamento de Processos
Operaes sobre Processos
Cooperao entre Processos
Gesto de Processos em Linux
Threads

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Processo

Conceito de Processo
Um Sistema Operativo executa uma variedade de programas:

Sistemas batch - jobs

Sistemas em tempo repartido (time sharing) processos

Utilizaremos job ou processo de forma indiferente


Processo um programa em execuo de forma sequencial
A um processo esto associados:

UA

Espao de Endereamento

Cdigo Executvel

Seco de Dados

Pilha (Stack)

Contexto

Instruction Pointer

Etc...

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Processo

Estados de um Processo
Um processo ao ser executado passa por vrios estados:

UA

Novo (new): acaba de ser criado

Pronto (ready): espera de lhe ser atribudo processador

Correr (running): est a ser executado pelo processador

Bloqueado (waiting): espera que algum evento acontea

Terminado (terminated): terminou execuo

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Processo

Bloco de Controle de um Processo (PCB)


Toda a informao associada a cada
processo est contida no Process Control
Block (PCB):

Estado do Processo

Instruction Pointer (Program Counter)

Cpias dos Registos do CPU

UA

Informao sobre o escalonamento do


CPU
Informao sobre o seu Espao de
Endereamento Memria
Informao sobre todas as operaes
de I/O do processo
Informao sobre a sua actividade

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Sumrio

Sumrio

Conceito de Processo
Escalonamento de Processos
Operaes em Processos
Cooperao entre Processos
Gesto de Processos em Linux
Threads

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Escalonamento de Processos

Escalonamento
Os processos necessitam de recursos
H tipicamente mais processos que recursos
Portanto: os processos competem por recursos
O sistema operativo deve fazer o escalonamento dos processos
Os recursos devem ser atribudos pela ordem correspondente s polticas de
escalonamento

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Escalonamento de Processos

Escalonamento

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Escalonamento de Processos

Filas de espera de Escalonamento


O sistema mantem vrias filas de espera para processos:

job queue: todos os processos do sistema


ready queue: todos os processos em memria prontos e espera de
executar
device queues: contem os processos espera de I/O num dispositivo (uma
para cada dispositivo)

Os processos migram entre as vrias filas de espera

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Escalonamento de Processos

Ready Queue e I/O Queues

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Escalonamento de Processos

Ciclo de Vida do Processo

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Escalonamento de Processos

Comutao de Processos
Comutao de Processos

Quando o scheduler retira um processo do estado running e o substitui


por outro

Mudana de Contexto

UA

Quando h comutao entre dois processos, o sistema deve


salvaguardar o estado do antigo processo e carregar o estado do novo
processo
Esta operao fundamental para que os processos possam voltar a
passar para o estado running sem perder o contexto de execuo
O tempo de mudana de contexto overhead: o sistema no est a fazer
nada de til para o utilizador durante a comutao

Depende do suporte fornecido pelo hardware

MMU, hyperthreading, etc...

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Escalonamento de Processos

Comutao entre Processos

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Sumrio

Sumrio

Conceito de Processo
Escalonamento de Processos
Operaes sobre Processos
Cooperao entre Processos
Gesto de Processos em Linux
Threads

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Operaes em Processos

Criao de Processos
Um processo pode criar novos processos durante a sua execuo.
Os novos processos so designados processos filhos (children) do processo
que os criou.
Os novos processo criados desta forma vo necessitar de recursos (tempo de
CPU, memria, ficheiros, dispositivos de IO, etc.).
Os novos processos podem obter estes recursos do sistema operativo ou do
processo que os criou (pai).

Quando um processo cria um processo:

continua a executar em paralelo com o processo filho

pode esperar que o seu processo filho termine (ex: wait)

Quanto ao espao de endereamento do novo processo criado:

UA

o filho um duplicado do processo pai (fork)

carregado um programa novo para o processo filho (exec)

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Operaes em Processos

Criao de Processos
Chamada ao sistema fork cria filho
fork retorna duas vezes, no pai e no filho
Ambos continuam a executar o mesmo programa
Filho herda duplicado do pai mas continua independentemente: com a sua
memoria, . . .
Para substituir o programa a executar usa-se exec; muda o programa mas
continua o processo corrente

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Operaes em Processos

Terminar Processos
Um processo termina quando acaba de executar a sua ltima instruo e pede
ao sistema operativo que o 'apague' atravs da system call exit().
Nessa altura o processo pode retornar umcdigo de resultado para o processo
pai.
Todos os recursos do processo so libertados pelo sistema operativo
(memria, ficheiros, perifricos, etc.).

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Operaes em Processos

rvore de Processos (Solaris)

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Operaes em Processos

rvore de Processos Linux

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Operaes em Processos

rvore de Processos Windows XP

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Sumrio

Sumrio

Conceito de Processo
Escalonamento de Processos
Operaes sobre Processos
Cooperao entre Processos
Gesto de Processos em Linux
Threads

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Cooperao entre Processos

Cooperao entre Processos


Processos independentes no podem ser afectados pela execuo uns dos
outros
processos cooperantes podem afectar ou ser afectados pela execuo uns
dos outros
Vantagens da cooperao entre processos

Partilha de informao

Aumento de performance de computao

Modularidade

Convenincia

Cooperao entre processos necessita da Comunicao entre processos (IPC


- Interprocess Communication
Dois modelos de IPC

UA

Memria partilhada

Comunicao por mensagens

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Sumrio

Sumrio

Conceito de Processo
Escalonamento de Processos
Operaes sobre Processos
Cooperao entre Processos
Gesto de Processos em Linux
Threads

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em linux
A criao de um processo no Linux efectuada atravs da duplicao do
processo actual atravs da system call fork.

Quando um processo duplicado o processo pai e o processo filho so


idnticos em todos os aspectos excepo dos seus PIDs

o cdigo, dados e stack do processo filho so iguais aos do processo pai e


ambos continuam a executar o mesmo cdigo.

Um processo filho pode substituir o seu cdigo pelo cdigo de outro


programa(ficheiro executvel). Desta forma o processo filho pode-se
diferenciar do processo pai.

Isso efectuado atravs da system call exec.

Quando um processo filho termina a sua 'morte' comunicada ao processo


pai.
UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em linux

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em linux
Obter PIDs:

getpid() - obter pid do processo

Getppid() - obter pid do processo pai

Terminar um processo:
Quando um processo filho termina (exit), enviado um sinal SIGCHLD para o
pai do processo. O processo filho fica espera que o pai aceite o sinal
enviado (ou seja, que o pai aceite o cdigo de retorno - status). Um processo
neste estado designado de processo zombie.
A forma que o processo pai tem para aceitar o status do processo filho
atravs do wait.

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em linux - wait


O wait retorna o identificador (PID) do processo filho que terminou e retorna
tambm o cdigo de termino do processo filho como parmetro.

A codificao desse parmetro (um inteiro de 16 bits) a seguinte:

UA

Se o byte mais direita zero ento o byte da esquerda contem os oito


bits menos significativos do valor retornado pela instruo exit do processo
filho.
Se o byte mais direita diferente de zero, ento os sete bits mais
direita representam o sinal que fez com que o processo filho terminasse e
o oitavo bit 1 se o processo filho produziu um core dump.
Se o processo que executa o wait no tem filhos ento o wait retorna
imediatamente -1.

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em linux - exec


Um processo pode substituir o seu cdigo, dados e stack pelos valores de
outro executvel atravs do exec.

Quando um processo utiliza o exec o seu PID e PPID permanecem iguais


(apenas alterado o cdigo que o processo est a executar).

Existem vrias verses do exec cujo objectivo permitir vrias formas de


passagem de parmetros.

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em Unix - Exemplos


//processo filho: cpia do processo pai (cdigo e dados)
//processo pai e processo filho executam-se concorrentemente
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int n=0;
if (fork()== -1) {
perror(argv[0]);
exit(1);
}
n++;
printf("hello: %d\n", n);
}

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em Unix - Exemplos


//processo filho: cpia do processo pai (cdigo e dados)
//processo pai e processo filho executam-se concorrentemente
#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[]) {
int pid;
if ((pid = fork()) == -1) {
perror(argv[0]);
exit(1);
}
if (pid == 0) { /* Processo filho */
printf("Filho: PID do filho = %d, PID do pai = %d\n", getpid(), getppid());
exit(0);
} else { /* Processo pai */
printf("Pai: PID do filho = %d, PID do pai = %d\n", pid, getpid());
sleep(1);
exit(0);
}
}
UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em Unix - Exemplos


//processo filho: carrega outro programa
//processo pai espera at filho terminar
#include <stdio.h>
#include <stdlib.h>
int main() {
pid_t pid;
pid = fork();
if (pid < 0) {
perror("main");
exit(-1);
}
else if (pid == 0) { /* child process */
execlp("/bin/ls", "ls", NULL);
}
else { /* parent will wait for the child to complete */
wait (NULL);
printf ("Child Complete\n");
exit(0);
}
UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em Unix - Exemplos


//processo pai espera que o filho termine. O proc. pai recebe o valor de exit do filho
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <wait.h>
main(int argc, char *argv[]) {
int pid;
pid = fork();
if (pid == -1) {
perror(argv[0]);
exit(1);
}
if (pid == 0) {
int x;
srandom(time(NULL));
x = random()%100;
printf("O filho gerou o numero: %d e vai envia-lo para o pai.\n", x);
sleep(1);
exit(x);
} else { /* Processo pai */
int result;
wait(&result);
if (WIFEXITED(result)) {
printf("Valor recebido no processo pai: %d.\n", WEXITSTATUS(result));
}
}
}
UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Gesto de Processos em Linux

Processos em Unix - Exemplos


//Quantos processo so criados ?
#include <stdio.h>
#include <stdlib.h>
main () {
char nome[15];
FILE *fd;

UA

fork(); fork(); fork();


fd = fopen ("proc.txt", "a");
sprintf(nome, "pid = %d", getpid() );
fprintf(fd,"%s\n", nome);
fclose(fd);

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Sumrio

Sumrio

Conceito de Processo
Escalonamento de Processos
Operaes sobre Processos
Cooperao entre Processos
Gesto de Processos em Linux
Threads

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Necessidades de MultiThreading

Grande parte das aplicaes interactivas e distribudas precisa de gerir


diversos fluxos de execuo simultneos
Interactividade com utilizador (Browser) ou gesto de vrias conexes
simultneas (Web server)
A utilizao de vrios processos distintos no boa, pois implica overhead na
comunicao de dados e comutao de contexto
UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Processos: uma ou mais threads

No modelo multithreaded, em cada processo existem vrios fluxos de


execuo ou threads (actividades)
As vrias threads de um processo partilham o espao de endereamento, mas
tm contextos de execuo distintos
UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Vantagens do uso de threads


Aumento de desempenho

Aplicaes com utilizao intensiva de CPU vs aplicaes que realizam muitas


entradas/sadas

Usufrui das arquitecturas multiprocessador

Partilha de recursos

Mais rpido criar threads do que processos

Memria

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Dificuldades do uso de threads


Diviso de actividades

Tarefas concorrentes

Balanceamento (equilbrio na diviso do trabalho)

Necessidade de sincronizao

Testes e debbug

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Escalonamento Clssico

O Scheduler atribui o CPU a cada processo, criando um fluxo de execuo, ou


thread
No modelo clssico, em cada processo existe um nico fluxo de execuo
UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Multi-threaded Scheduling

No modelo multithreaded, cada processo pode ter vrios fluxos de execuo


A unidade de scheduling deixa de ser o processo e passa a ser a thread
UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Implementao do Conceito de Thread


A implementao do conceito de Thread (ou actividade) pode ser feito de
vrias formas:

Implementao em modo utilizador numa biblioteca, ligada ao executvel


da aplicao

Threads POSIX (pthreads) na implementao inicial

Threads Java

Fibers Windows

Implementadas no sistema operativo, e invocadas atravs de uma API


especfica que utiliza os system calls

Linux

Windows XP/2000

Solaris

Mac OS X

Frequentemente, a mesma biblioteca de threads pode suportar as duas


implementaes, com desempenhos diferentes

UA

Threads POSIX (pthreads)

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Conceito de Thread
Existem situaes em que seria interessante a possibilidade de partilha de
recursos (acesso concorrente) entre dois processos.
Ou seja, a possibilidade de 'lanar' uma nova sequncia de execuo (thread)
num processo (um novo program counter...).
Grande parte dos sistemas operativos modernos suporta este mecanismo.
Este novo conceito designado de thread.

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Conceito de Thread
Uma thread (algumas vezes designada de lightweight process - LWP) uma
unidade bsica de utilizao de CPU e consiste num program counter, num
conjunto de registos e numa stack.
Uma thread partilha com as outras threads do processo:

Seco de cdigo

UA

Seco de dados

Recursos do Processo (ficheiros, etc.)

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

Captulo III Processos e Threads

Conceito de Thread

Conceito de Thread
Comentar:
Com as threads os processos deixam de ser necessrios.
Quando temos threads no faz sentido termos Processos nos estados
waiting, ready e running.

UA

2011 Ibria Medeiros. Todos os direitos reservados

Sistemas Operativos

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