Você está na página 1de 14

4 Gerenciamento de Processos

4.1 Introduo aos Processos Processo Definio: uma abstrao do sistema operacional para representar as informaes necessrias na execuo de um programa (definio tradicional do UNIX); um programa em execuo; Conceitos relacionados: programa - esttico; job - programa batch em execuo; tarefa (task) - unidade atmica de computao; thread - processo leve (compartilha cdigo). Composto pelo cdigo (seqencial) e estados (registradores, memria, recursos). Por que processos? Simplicidade: permite vrias operaes independentes em um sistema; permite a decomposio de um processo em muitos; Velocidade: se um processo bloqueia executa outro;

78

Sistemas Operacionais permite um uso mais eficiente do processador; Segurana: permite associar diferentes direitos para cada processos

Gerenciamento de Processos processos diferentes; em determinado instante apenas um processo detm a UCP; ocorre uma rpida comutao entre processos.

79

Alguns tipos de processos: Interativos (Foreground): processos que necessitam de interao com o usurio; Batch / Segundo Plano (Background - &): processos que
Processos A B C D

no necessitam de interao com o usurio; Daemons: Processos que executam constantemente em segundo plano e esto sempre disponveis; Normalmente realizam servios do sistema. Execuo de Processos possvel a execuo de vrios processos tanto em monoprocessadores como multiprocessadores;

tempo

Figura 4.1 Alguns processos em execuo com timesharing

A tempo de troca de contexto

Processos

Pseudoparalelismo (utlizando o timesharing): permite que sistemas monoprocessados executem vrios processos em um determinado intervalo de tempo; UCP ao longo do tempo trabalha com vrios

tempo

Figura 4.2 Tempo adicional da troca de contexto

80

Sistemas Operacionais

Gerenciamento de Processos Novo (New): o processo est sendo criado;

81

Paralelismo: Terminado (Terminated): processo encerrou a execuo. em sistemas multiprocessados processos executam simultaneamente; mesmo assim, normalmente empregado o timesharing para permitir um uso mais eficiente dos processadores. Escalonador Decide a ordem e o tempo da execuo de cada processo; Permite que vrios processos compartilhem uma UCP; Existem vrios algoritmos; Deve priorizar processos com muita E/S (I/O-bound) sobre processos com muito processamento (CPU-bound). Estados de Processos Executando (Running): usando a UCP naquele instante; Pronto (Ready): executvel, porm parado temporariamente para outro processo executar; Bloqueado (Waiting/Blocked): impossibilitado de executar por causa de eventos externos (ex.: operao de E/S); Figura 4.3 Transies entre os estados de processos 4.2 Implementao de Processos Tabela de Processos Armazena informaes que variam de um processo para outro; Existe uma entrada na tabela por processo; Cada entrada chamada de PCB (Process Control Block) ou bloco de controle de processo;
trmino de evento

Apenas um processo pode estar executando a cada momento entretanto vrios podem estar bloqueados ou prontos; Processos bloqueados no executam nem com a UCP livre.
novo
admitido deciso do escalonador fim de execuo

terminado

pronto
deciso do escalonador

executando

espera de evento (E/S)

esperando

82 Informaes contidas na PCB:

Sistemas Operacionais

Gerenciamento de Processos Troca de Contexto Revista


processo A

83

estado do processo: determina como o processo se encontra no sistema. Um dentre os cinco estados apresentados (varia de um SO para outro); contador de programas (PC); registradores da UCP: outros registradores que no o PC; informaes para escalonamento; informaes para gerncia de memria; informaes para contabilizao; status de E/S: arquivos em uso, dispositivos utilizados, etc.
ponteiro estadodo processo

processo B

executando
salva contexto na PCB de A

livre

restaura contexto da PCB de B

livre

executando

salva contexto na PCB de B

livre executando
restaura contexto da PCB de A

Figura 4.5 Troca de Contexto entre processos 4.3 Operaes com Processos Criao MS-DOS: criao ocorre na carga do programa, processo suspenso quando ocorre uma interrupo (monoprogramado); UNIX: criao feita atravs da chamada de sistema fork: processo criador chamado de pai (parent);

nmero do processo contador de programa registradores lista de arquivos abertos


. . .

Figura 4.4 Um bloco de controle de processo (PCB)

84

Sistemas Operacionais processo criado chamado de filho (children); origina uma hierarquia de processos (tree); duas possibilidades em termos de execuo: processo pai executa concorrentemente ao filho; processo pai espera at o(s) filho(s) terminarem, usa chamada de sistema wait. duas possibilidades em termos de espao de endereamento:

Gerenciamento de Processos

85

int pid; pid = fork(); if (pid == 0) { execve (prog_filho.out, argv, 0); printf(Erro na execuo!); exit (0); } /* cdigo do proc. pai*/ wait(...);

Figura 4.7 Criao de processo filho e carga de novo cdigo Terminao Executa ltima instruo ou chama exit; Pode enviar dados para o pai via wait;

processo filho uma duplicao do processo pai; processo filho tem um programa carregado nele utilizando a chamada de sistema execve. Razes para o processo filho ser terminado: processo filho excedeu recursos alocados;
int pid; pid = fork(); if (pid == 0) { /* cdigo do proc. filho */ exit (0); } /* cdigo do proc. pai*/ wait(...);

Um processo pode causar a terminao de outro (via chamada de sistemas abort). Normalmente somente o pai a utiliza;

tarefa solicitada ao processo filho no mais necessria; no UNIX caso o processo pai termine, todos os processos filhos so automaticamente encerrados.

Figura 4.6 Criao de processo filho como duplicao do pai

86 4.4 Threads (Processos Leves) Unidade bsica de utilizao de UCP Componentes: Contador de programas (PC);

Sistemas Operacionais

Gerenciamento de Processos bloqueantes.

87

TAREFA cdigo

Trs threads . Cada uma com seus prprios registradores, pilha e contador de programas.

Conjunto de valores de registradores; Pilha.


dados

Uma thread compartilha com outras: Cdigo, dados e recursos do sistema operacional. Um conjunto de threads compartilhando informaes (cdigo, dados e recursos do sistema operacional) forma uma tarefa. Um processo tradicional semelhante a uma tarefa com uma thread. Em uma tarefa com vrias threads, enquanto uma est bloqueada, outra thread na mesma tarefa pode executar: Cooperao de threads na mesma tarefa prov um maior throughput e aumenta o desempenho; Aplicaes que necessitam compartilhar dados so beneficiadas pelas threads. Controle de Threads: Threads possibilitam que processos seqenciais executem atravs de pseudoparalelismo enquanto realizam chamadas Sncrono: uma thread na mesma tarefa s pode executar Figura 4.8 Uma tarefa com threads Implementao de Threads: suportadas pelo kernel ou biblioteca. Threads suportada pelo kernel: Sistema operacional prov um conjunto de system calls para que o programador utilize as threads. Threads como biblioteca em nvel de usurio: Bibliotecas para utilizao de threads.
recursos do sistema operacional

88 se outra passar o controle;

Sistemas Operacionais

Gerenciamento de Processos sempre presente em sistemas timesharing; executa com alta freqncia; seleciona um processo dentre os prontos para executar.

89

Assncrono: alguma thread escolhida; Exemplos de Sistemas que suportam Threads: Windows 98, Windows NT, Solaris, Linux e OS/2. 4.5 Escalonamento

Alguns sistemas timesharing, possuem tambm um nvel intermedirio de escalonamento, que: executa com freqncia mdia; troca processos entre memria e disco. Filas de Escalonamento: Em sistemas batch processos entram no sistema e so colocados na fila de jobs (job queue); Em sistemas timesharing processos que residem na memria principal e esto em estado pronto so colocados em uma fila de espera da UCP (ready queue); Processos esperando por E/S esto na fila do dispositivo (device queue). Cada dispositivo possui sua prpria fila. Motivos para processo deixar o processador: requisio de E/S; deciso de escalonamento (expirao do tempo);

4.5.1 Funcionamento Decidir a ordem e o tempo de execuo dos processos. O escalonamento feito pelo escalonador. Deve ser realizado periodicamente pelo sistema operacional (ex.: a cada interrupo de clock). Quando o escalonador entra em ao decide se o processo em execuo deve continuar ou deve ser suspenso. Escalonadores (scheduleres) Escalonador de Jobs: normalmente presente em sistemas batch; define o grau de multiprogramao (quantidade de processos na memria); executa com baixa freqncia. Escalonador do Processador:

90 criao de processo filho;

Sistemas Operacionais

Gerenciamento de Processos

91

Escolher qual processo da fila de espera do processador ir executar. Escalonamento pode ocorrer quando:
swap out

resultado de uma interrupo.


swap in
processos parcialmente executados armazenados no disco

1. Processo bloqueia (ex.: requisio de E/S);


fim

novo

fila de espera do processador

processador

2. Processo passa do estado executando para pronto (ex.: ocorrncia de interrupo);

E/S

fila de espera dos dispositivos d e E/S

3. Processo passa do estado bloqueado para pronto (ex.: trmino de operao de E/S);
fim

Figura 4.9 Filas de escalonamento no sistema timesharing


fila de espera do processador processador

4. Processo termina. Escalonamento Preemptivo (UNIX, Windows NT)

expirao da fatia de tempo fila de espera dos dispositivos d e E/S

Processo executando pode ser suspenso para outro executar. Cada processo tem um tempo (time-slice) mximo de execuo associado; Ocorre nas quatro situaes citadas anteriormente;

E/S

requisio de E/S

execuo do filho

execuo de processo fillho espera de interrupo

ocorrncia da interrupo

Escalonamento No-preemptivo (Windows 3.11 / 95/ 98) Figura 4.10 Diagrama de filas do escalonamento Funes do escalonador da UCP: Mis de um processo pronto S.O deve decidir qual ir executar primeiro; Processo executa at o fim (run to completion); Processo mantm a UCP at terminao ou bloqueio; Ocorre nas situaes 1 e 4, dentre as anteriores;

92

Sistemas Operacionais

Gerenciamento de Processos 4.5.3 Algoritmos de Escalonamento First-Come, First-Served (FCFS)

93

4.5.2 Critrios de Escalonamento Alguns critrios foram criados para comparao entre escalonadores. Os principais so: Justia cada processo recebe uma parcela igual da UCP; Eficincia (Utilizao da UCP) manter a UCP ocupada o mximo possvel;

Manter uma fila do tipo FIFO (First In First Out), isto , primeiro a chegar o primeiro a ser atendido; Processos so executados por ordem de entrada na ready queue; Quando a UCP est livre alocada para o processo que est na cabea da ready queue; Criado como um algoritmo no-preemptivo;

Tempo de Resposta Ex.: Suponha trs processos com seus respectivos tempo entre a submisso e a primeira resposta; Tempo de Turnaround intervalo entre a submisso e o termino da execuo de um trabalho; Throughput Nmero de trabalhos completos por unidade de tempo. Escalonadores que favorecem determinado critrio, normalmente desfavorecem outro. Em sistemas timesharing importante minimizar a varincia no tempo de resposta. tempos de execuo: P1 (24), P2 (3), P3 (3). O tempo mdio de resposta para os processos : TmR = (0+24+27)/3= 17ms

simples de implementar e entender

tempo mdio de resposta alto Menor Job Primeiro SJF (Shortest Job First) Selecionar sempre o processo com o menor tempo de uso da UCP; Algoritmo no-preemptivo (pode ser adaptado para suportar preempo);

94

Sistemas Operacionais Usado freqentemente em escalonamento de jobs; Ex: P1 (24), P2 (3), P3 (3). TmR = (6+0+3)/3 = 3ms.

Gerenciamento de Processos no preemptivo;

95

possvel priorizar processos (mais E/S, mais importantes)

algoritmo pode ser timo (quando todos jobs esto disponveis antecipadamente e seus tempos de execuo so conhecidos)

processos de baixa prioridade podem no ser executados (preterio indefinida ou starvation) Pode ser utilizada tcnica de alterao dinmica de prioridade (aging) para garantir a execuo de processos de baixa prioridade: gradualmente aumentar prioridade de processos que esperam por muito tempo (ex.: a cada interrupo de tempo).

difcil de determinar o tempo de uso da UCP por job O tempo de execuo dos processos pode ser previsto atravs de estimativas baseadas no comportamento passado (ex.: soma ponderada de tempos anteriores). Escalonamento com Prioridade Cada processo possui uma prioridade associada;

Ex: P1(10, prioridade 3), P2 (1, prioridade 1), P3 (2, Processo com maior prioridade executa primeiro; Processos de prioridade igual so escolhidos por FCFS; No existe um padro de quantidade de prioridades ou se a prioridade zero a maior ou menor. UNIX considera zero como sendo uma prioridade alta, maior que prioridades positivas; Prioridade pode ser esttica (no varia durante a execuo do processo) ou dinmica; Escalonamento com prioridade pode ser preemptivo ou Similar ao FCFS, porm com preempo; Associa aos processos um intervalo de tempo mximo para execuo (quantum); Mantm a ready queue como uma fila circular e prioridade 3), P4(1, prioridade 4) e P5 (5, prioridade 2). TmR = 8.2 ms Escalonamento Circular (Round-Robin) Criado para sistemas timesharing (preemptivos);

96

Sistemas Operacionais possibilita a execuo de um processo at 1 quantum; Quando o quantum acaba processo executando vai para o fim da ready queue e ocorre a preempo; Quando o processo bloqueia ou termina deixa a ready queue; O tamanho do quantum varia normalmente de 10 a 100 ms. Desempenho depende deste e do tempo de troca de contexto; algoritmo justo

Gerenciamento de Processos fila do sistema); outra possibilidade determinar uma poro da UCP por fila (Ex.: 40% para fila do sistema, 30% para fila de processos

97

interativos, 20&% para processos de edio e 40% para processos batch);


alta prioridade
processos do sistema

processos interativos

todos processos so equivalentes (no possvel priorizar determinado processo)

processos interativos com edio

processos batch

tempo mdio de resposta normalmente lento Escalonamento por Mltiplas Filas til em situaes as quais processos so facilmente classificveis em diferentes grupos (Ex.: interativos e batch); cada fila pode ter diferentes necessidades de escalonamento (algoritmo diferente); as filas possuem ordem absoluta de prioridade (Ex.: conforme Figura 4.11 primeiro executa os processos da

baixa prioridade

Figura 4.11 Exemplo de mltiplas filas Escalonamento por Mltiplas Filas com Realimentao Semelhante ao anterior, porm processos movem-se de uma fila para outra; Separa processos com diferentes usos da UCP; Processos que utilizam muito a UCP so movidos para uma fila de baixa prioridade;

98

Sistemas Operacionais Similarmente, processos que esperam muito em uma fila de baixa prioridade podem subir;

Gerenciamento de Processos 4.5.4 Tpicos Especiais Escalonamento em Multiprocessadores Problema atual e desafiante; No existe uma soluo ideal; Escalonamento pode ser distribudo, centralizado, hierrquico, mestre/escravo, dentre outros. Escalonamento em Sistemas de Tempo Real Escalonamento Garantido: o escalonador sabe exatamente o tempo

99

prioriza processos com muito E/S (I/O bound)

algoritmo mais geral (fcil de adaptar a vrias situaes)

algoritmo mais complexo de implementar Normalmente definido por: nmero de filas, algoritmo de escalonamento para cada fila, mtodos utilizado para elevar/ baixar processos nas filas e mtodo para determinar ponto de entrada de processos.

necessrio para realizar cada operao do sistema operacional; cada operao deve ter um tempo mximo de

quantum = 8

execuo garantido. Hard Real-Time: classe de escalonamento na qual

quantum = 16

necessrio que os tempos de execuo dos processos sejam rigorosamente cumpridos, caso contrrio o sistema todo falha. Normalmente implementado em software e

FCFS

hardware dedicados; Soft Real-Time: classe de escalonamento em que processos crticos so executados o mais rapidamente possvel. Classe menos restritiva que a anterior.

Figura 4.12 Exemplo de mltiplas filas com realimentao

100

Sistemas Operacionais

Gerenciamento de Processos perde um crdito;

101

Avaliao de Algoritmos de Escalonamento Avaliao analtica: determinar cargas fictcias e avaliar o desempenho com vrios algoritmos. Simples e Rpida; Simulao: programar um modelo do sistema de computao; Implementao: implantar a poltica criada em um SO real. Difcil e demorada, porm precisa. 4.5.5 Escalonamento no Linux Dois algoritmos: um timesharing (escalonamento preemptivo) e outro de tempo real (escalonamento com prioridade absoluta);

Quando o crdito do processo em execuo atinge zero, este suspenso; Caso nenhum processo em estado pronto possua crdito, o Linux faz uma redistribuio de crditos (recreditamento); O recreditamento feito para todos os processos, independente do estado, da seguinte forma: crditos = crditos + prioridade 2

essa frmula mistura dois fatores: a histria do Cada processo define a classe de escalonamento que deve utilizar (s administrador pode criar processos da classe de tempo real); sistema prioriza processos com muito E/S, pois Classes de escalonamento definidas pelo padro POSIX. Algoritmo Timesharing Baseado no uso de crditos com prioridade; Cada processo executa um certo nmero de crditos; Na escolha de uma nova tarefa, aquela com o maior crdito selecionada; A cada interrupo de tempo, o processo em execuo esses tendem a acumular crditos nos recreditamentos enquanto esto suspensos; a prioridade permite um ajuste fino e compatibilidade com o mecanismo padro do UNIX (nice). Algoritmo de Tempo Real Executa o processo com a prioridade mais alta; processo (mantendo metade de seus crditos) e a prioridade;

102

Sistemas Operacionais Implementa duas classes: FIFO e Round Robin (timesharing entre processos de igual prioridade); Soft real-time.

Gerenciamento de Processos ela tem sua prioridade aumentada dependendo do motivo do bloqueio (Ex.: espera pelo teclado causa alto aumento; espera pelo disco causa mdio aumento);

103

bons tempos de resposta para processos interativos 4.5.6 Escalonamento no Windows NT Duas classes: tempo real (prioridades altas de 16 a 31) e varivel (prioridade baixa de 0 a 15); Utiliza mltiplas filas por prioridade, round robin em cada fila e realimentao na classe varivel; Soft real-time; Atravessa as filas da primeira (mais alta prioridade) at ltima. Pula threads prontas com afinidades de processadores no contempladas; Cada thread aps ter executado uma vez em determinado processador, durante algum tempo, possui uma afinidade com esse. Caso nenhuma thread seja encontrada a thread ociosa executada; Quando o quantum de uma thread esgota na classe varivel, a prioridade decrementada. A menor prioridade possvel zero; Quando uma thread na classe varivel sai do estado bloqueado Janela ativa tambm ganha aumento de prioridade; Threads prontas com prioridade da classe tempo real causam preempo imediata, pois so sempre executadas o mais rpido possvel.

Você também pode gostar