Você está na página 1de 13

Sistemas Operacionais

Processos

Processos

n Conceito de Processo
n Escalonamento de Processo
n Operações em Processos
n Threads

Eduardo Nicola F. Zagari 2 Processos


Conceito de Processo
n Um sistema operacional executa uma variedade de programas:
l Sistemas Batch – jobs
l Sistemas time-sharing – programas processo
de usuários ou tasks (tarefas)
n Processo
l programa em execução

somente um programa era executado


Primeiros sistemas computacionais em cada momento (dominando todos
os recursos)

vários programas executando


concorrentemente (multiprogramação),
Sistemas atuais exigindo maior controle e
compartimentalização dos vários
programas

Eduardo Nicola F. Zagari 3 Processos

Conceito de Processo (Cont.)


n Processo é mais do que o código do programa:
l contador de programa (PC),
l registradores do processador,
l pilha (parâmetros de subrotinas, endereço de retorno, variáveis
temporárias),
l variáveis globais

Programa (passivo) x Processo (ativo)

n Vários processos podem estar associados a um único programa

Eduardo Nicola F. Zagari 4 Processos


Estados de um Processo

n Em um SO com multiprogramação, um processo, du-


rante sua existência, passa por uma série de estados
n Basicamente, os estados de um processo são:
l novo: o processo é criado
l em execução/rodando: se está associado a um
processador que está executando suas instruções
l pronto para execução: se o processo aguarda sua vez
para executar (processador indisponível)
l bloqueado/espera: se o processo aguarda que ocorra
algum evento para continuar a executar (término de E/S,
recepção de sinal)
l término: o processo terminou sua execução

Eduardo Nicola F. Zagari 5 Processos

Transições de Estados de um Processo

n Desde o instante que um processo é iniciado, o seu estado


passa pelas seguintes transições:
1. uma CPU fica disponível para o processo, que passa do estado de
pronto para o de execução
2. o processo necessita de algo que não está disponível para
continuar a ser executado, assim, passa de em execução para
bloqueado, aguardando a satisfação de sua necessidade
3. a necessidade do processo é satisfeita, podendo então passar de
bloqueado/espera para pronto para execução
4. o uso da CPU exclusivamente por um só processo deve ser evitado,
para isso pode existir um tempo máximo em exe-cução contínua,
após o qual o processo passa de em execução para pronto,
permitindo que outro processo use a CPU

Eduardo Nicola F. Zagari 6 Processos


Diagramas de Estado de um Processo
(Simplificado)

novo
escalonado
início
pronto execução

interrupção
E/S ou evento espera por
E/S ou fim
bloqueado evento

término

Eduardo Nicola F. Zagari 7 Processos

Bloco de Controle de Processo (BCP)

n BCP representa o processo no SO, mantendo a informação


associada com cada um:
l estado do processo: pronto, bloqueado, em execução, ...
l PC: endereço da próxima instrução
l registradores da CPU: variam em no e tipo dependendo da
arquitetura
l informação de escalonamento da CPU: prioridade, ponteiro para
fila de escalonamento, etc
l informação de gerência de memória: registradores base e limite
de memória, tab. de páginas e/ou tab. de segmentos
l informação sobre recursos: quantidade de CPU usada, limite de
tempo de uso, no processo, no do job
l informação de estado de E/S: lista de dispositivos alocados, lista
de arquivos abertos, ...

Eduardo Nicola F. Zagari 8 Processos


Bloco de Controle de Processo (Cont.)

PID
Estado do processo
PC
Registradores
Limites de memória
Lista de arquivos abertos
..
.

Eduardo Nicola F. Zagari 9 Processos

Troca de Processos na CPU


P0 SO P1
executando interrupção ou chamada de sistema

salva contexto em BCP 0


.. ocioso
.
carrega contexto de BCP 1

ocioso interrupção ou chamada de sistema executando

salva contexto em BCP 1


.. ocioso
.
carrega contexto de BCP 0

executando

Eduardo Nicola F. Zagari 10 Processos


Escalonamento de Processos
n Objetivo da multiprogramação: maximizar utilização da CPU
n Filas de escalonamento:
l fila de pronto: lista ligada com todos os processos no estado de
pronto (organizada segundo uma política de seleção)
l filas de dispositivos: listas dos processos que fizeram requisição de
E/S e aguardam a liberação do dispositivo
n Em seu ciclo de vida, o processo migra de uma fila para outra
(ação do escalonador)

Eduardo Nicola F. Zagari 11 Processos

Filas de Escalonamento
BCP7 BCP2
início PID PID
Fila de
pronto registradores registradores
fim
.. ..
. .
Fita início
magnética
fim
BCP3 BCP14 BCP6
início PID PID PID
Unidade
de disco 0 registradores registradores registradores
fim
.. .. ..
. . .
BCP5
PID
Unidade início
registradores
terminal 0
fim ..
.

Eduardo Nicola F. Zagari 12 Processos


Representação do Escalonamento de
Processos

fila de pronto CPU

E/S fila de E/S requisição de E/S

time slice
expirado

filho executa
termina filho fork

ocorre aguarda uma


interrupção interrupção

Eduardo Nicola F. Zagari 13 Processos

Escalonadores

n Escalonador age sobre a fila de processos prontos de maneira a


escolher qual é o próximo a ser executado
n Escalonador de CPU (ou escalonador de curto prazo): seleciona
qual processo deve ser o próximo a ser executado e aloca a
CPU para ele.
l Executado freqüentemente (milisegundos)
l Deve ser rápido
n Escalonador de job (ou escalonador de longo prazo): seleciona
qual processo deve ser trazido para a fila de pronto.
l Executado pouco freqüentemente (segundos, minutos)
l Pode ser lento
l Controla o grau de multiprogramação

Eduardo Nicola F. Zagari 14 Processos


Adição do Escalonamento de Médio Prazo

Eduardo Nicola F. Zagari 15 Processos

Tipos de Processos
n Processos podem ser descrito de acordo com o tipo de
processamento que executam:
l CPU-bound (ligado à CPU): passa a maior parte do tempo no
estado fazendo cálculos (em execução) e realiza poucas
operações de E/S (aplicações matemáticas e científicas)
4 Poucas e longas ‘rajadas’ de uso de CPU
l I/O-bound (ligado à E/S): passa a maior parte do tempo no estado
bloqueado, pois realiza muitas operações de E/S (aplicações
comerciais e interativas)
4 Muitas e curtas ‘rajadas’ de uso de CPU

I/O I/O

CPU CPU

tempo tempo

Eduardo Nicola F. Zagari 16 Processos


Chaveamento (troca) de Contexto
n Quando a posse da CPU é atribuída a outro processo, o sistema
deve salvar o estado do processo antigo e carregar o estado do
processo novo
n O tempo de troca de contexto é uma sobrecarga
l O sistema não realiza trabalho útil enquanto realiza o chaveamento
n O tempo depende do hardware

Eduardo Nicola F. Zagari 17 Processos

Operações em Processos: Criação


n Um processo (dito Processo Pai) pode criar novos processos
(ditos Processos Filhos) via chamada de sistema
l Um processo filho, por sua vez, pode criar outros processos,
formando uma árvore de processos
l usuário pode solicitar a criação a um shell, que entende o pedido do
usuário através de uma linguagem dita de controle (textual, gráfica,
por eventos)
n Compartilhamento de Recursos (memória, arquivos, dispositivos
de E/S)
l Pai e filh
ocompartilham todos os recursos
l Filho compartilha um subconjunto dos recursos do pai
l Pai e filho não compartilham recursos
n Execução
l Pai e filho executam concorrentemente
l Pai espera até o término do filho

Eduardo Nicola F. Zagari 18 Processos


Criação de Processos (Cont.)
n Espaço de endereçamento do novo processo
l Processo filho é uma cópia do processo pai
l Processo filho tem um programa carregado nele
n Exemplo de chamadas de sistema do UNIX
l fork(): cria um novo processo
l exec(): usado depois de um fork() para substituir o espaço de
memória do processo por um novo programa
main() {
int pid;
pid = fork();
if (pid < 0) {
/* fork failure */
} else if (pid > 0) {
/* parent code */
} else {
/* child code */
}

Eduardo Nicola F. Zagari 19 Processos

Exemplo de Programa C para Criação de


Processos
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int pid;
/* fork another process */
pid = fork();
if (pid < 0) { /* error occurred */
fprintf(stderr, "Fork Failed");
exit(-1);
}
else if (pid == 0) { /* child process */
execlp("/bin/ls","ls",NULL);
}
else { /* parent process */
/* parent will wait for the child to complete */
wait(NULL);
printf("Child Complete");
exit(0);
}
}

Eduardo Nicola F. Zagari 20 Processos


Árvore de Processos em um
Sistema UNIX

Eduardo Nicola F. Zagari 21 Processos

Operações em Processos: Terminação


n Processo executa sua última instrução e pede ao SO para
terminá-lo (exit)
l Dados de saída do filho para o pai (via wait)
l exit(): todos os recursos do processo são liberados pelo SO
n Um processo pai pode terminar a execução de um processo filho
via chamada de sistema
l Filho excedeu os recursos alocados
l A tarefa atribuída ao filho não é mais necessária
l Se o pai está terminando
4 Alguns sistemas operacionais não permitem que o filho continue
se o pai terminou
– Todos os filhos terminam – terminação em cascata

Eduardo Nicola F. Zagari 22 Processos


Threads
n Uma thread (ou lightweight process, isto é, um processo leve) é
a unidade básica de utilização da CPU. Ela consiste de:
l Contador de programa (PC)
l Conjunto de registradores
l Espaço de pilha
n Uma thread compartilha com suas threads parceiras suas:
l Seção de código
l Seção de dados
l Recursos do sistema operacional
Coletivamente conhecidas como uma tarefa (processo).
n Um processo tradicional (ou heavyweight process) é igual a uma
tarefa com uma única thread
n As threads operam como processos: estado/criam outras
threads, etc

Eduardo Nicola F. Zagari 23 Processos

Threads (Cont.)
n Em um processo multithread, enquanto uma thread servidora
está bloqueada e esperando, uma segunda thread do mesmo
processo pode executar.
l A cooperação de múltiplas threads de um mesmo processo
confere a ele melhor desempenho (redução do tempo de troca de
contexto).
l Aplicações que requerem o compartilhamento de um buffer
comum (i.e., produtor-consumidor) se beneficiam da utilização de
threads.
n Threads provêem um mecanismo que permite a processos
seqüenciais fazerem chamadas de sistema bloqueantes
enquanto também alcançam paralelismo.

Eduardo Nicola F. Zagari 24 Processos


Threads (Cont.)
n Threads podem ser:
l Suportadas pelo Kernel (Mach, OS/2, WinXP/200, Linux 2.6).
l Nível de usuário, suportadas acima do kernel, via uma biblioteca de
funções (Project Andrew da CMU, POSIX (Linux 2.4), Java, Win32).
l Abordagem híbrida, que implementa ambas (Solaris 2).

Eduardo Nicola F. Zagari 25 Processos

Processo de Thread Única


e Processos Multithread

Eduardo Nicola F. Zagari 26 Processos

Você também pode gostar