Você está na página 1de 35

6/2/2009

2. Processos

Conceito de Processo
Processo
Entidade activa, que corresponde a um programa em execuo Cada processo tem um espao de endereamento prprio A gesto de processos da responsabilidade do sistema operativo, que utiliza estruturas de dados (process tables) que descrevem o contexto de execuo de cada processo O prprio sistema operativo tambm um conjunto de vrios processos

Programa
Sequncia de instrues sem actividade prpria no confundir com processo
2

6/2/2009

Multi-programao
Num sistema multi-programado, mesmo que s exista um processador possvel vrios processos estarem activos simultaneamente Contudo, em cada instante temporal, apenas um deles pode utilizar o processador A esta iluso de vrios processos correrem aparentemente em paralelo, d-se o nome de pseudo-paralelismo
3

Multi-programao
No devem ser feitas assunes em relao ordem de comutao do processador, devido a:
Existncia de interrupes Falta de recursos Entrada de processos prioritrios No-determinista

Depois de uma comutao do processador, o prximo processo a utiliz-lo escolhido pelo sequenciador de processos do SO

6/2/2009

Multi-programao
Exemplo: 4 processos a correr
Memria principal A B C D A B D C B A Tempo de processamento Comutaes do CPU

Multi-programao
Concorrncia
Os vrios processos competem entre si pela ateno do processador...

Cooperao
...mas tambm podem trabalhar em conjunto para a realizao de tarefas mais complexas. Esta cooperao exige ao SO a existncia de mecanismos de sincronizao e comunicao entre processos

6/2/2009

Estados de um Processo
Em Execuo
O processo est a utilizar o processador

Executvel
O processo est activo, mas est espera de ter a ateno do processador, que nesse instante est dedicado a outro processo

Bloqueado
O processo est inactivo
espera que termine uma operao de I/O espera que outro processo liberte recursos devido ocorrncia de uma page fault no possui recursos na memria principal
7

Estados de um Processo
Diagrama de estados

Executvel (ready)

Em Execuo (running)

Bloqueado (blocked)
8

6/2/2009

Criao de Processos
Inicializao do sistema
processo init no Linux processo smss.exe no Windows 2000

Um utilizador cria um novo processo ao mandar executar um programa


Clicar um cone Executar um programa a partir da shell
%> netscape

Um processo criado por outro, atravs de uma chamada ao sistema


Linux: fork() Windows 2000: CreateProcess(.)
9

Terminao de Processos
Um processo pode terminar por diferentes causas:
sada voluntria
Normal Em erro (previsto)

sada involuntria
Erro de execuo Terminado por outro processo

10

6/2/2009

Hierarquia de Processos
comum um SO estabelecer uma hierarquia nos processos que se encontram a correr
Processo pai processo que lana um novo processo Processo filho novo processo que criado pelo pai Um processo filho tem apenas um pai mas um processo pai pode ter vrios filhos
No Linux estabelecida uma hierarquia que podemos visualizar atravs do comando da shell pstree No Windows 2000 no existe uma verdadeira hierarquia, pois quando criado um novo processo, o controlo do mesmo pode ser passado para outro processo diferente do criador
11

Representao dos Processos


Internamente, o SO mantm estruturas de dados referentes a cada processo as Process Tables As vrias Process Tables so agrupadas segundo listas ou arrays de estruturas
Process Table 1 Process Table 2 Process Table 3

...

Process Table n

Cada vez que ocorre uma comutao de processos, o SO salvaguarda e actualiza informao relevante na Process Table do processo que perdeu a CPU
12

6/2/2009

Representao dos Processos


Informao nas Process Tables
Gesto de processos
Contedo dos registos da CPU (incluindo PC e SP) Estado do processo Prioridade do processo Identificao do processo PID Identificao do processo pai (PPID) Identificao do utilizador que lanou o processo Data/hora em que o processo foi iniciado Tempo de CPU utilizado pelo processo

13

Representao dos Processos


Gesto de memria
Segmento de texto (programa) Segmento de dados (heap) Segmento do stack

Gesto de ficheiros
Directrio actual (de trabalho) Directrio por defeito (e.g. root, home) Descritores dos ficheiros abertos

Etc.

14

6/2/2009

Processos LINUX
Comandos da shell
ps listar processos pstree ver hierarquia dos processos top ver informaes adicionais sobre os processos kill enviar sinal a um processo (pode ser um sinal para terminar outro processo)

Chamadas ao sistema
fork() criar um novo processo filho exit(.) terminar processo kill(.) enviar sinal a um outro processo
15

Processos Windows 2000


TaskManager
visualizar os processos que esto a correr possibilita ao utilizador a terminao de processos

Chamadas ao sistema
CreateProcess(.) criao de processos ExitProcess(.) sada voluntria TerminateProcess(.) terminao de outro processo

16

6/2/2009

Threads
Conceito de thread
Tal como os processos, as threads so tambm entidades activas Um processo pode ser composto por vrias threads que partilham o mesmo espao de endereamento Processos diferentes possuem recursos diferentes... ... mas um conjunto de threads dentro do mesmo processo partilha os mesmos recursos

17

Threads
Modelo clssico
por cada processo existe uma s thread neste caso processo e thread correspondem ao mesmo conceito Processo 1 Processo 2 Processo 3

Thread 1

Thread 2

Thread 3
18

6/2/2009

Threads
Modelo actual
por cada processo podem existir vrias threads Processo 1 Processo 2 Processo 3

Threads Cada thread tem registos, program counter, stack e estado prprios
19

Threads
Utilizao de threads Exemplos:
Processador de texto podem existir threads para:
Ler input do teclado Refrescar o cran Salvar o documento automaticamente Reformatar o documento, etc.

Web Server dois tipos de threads


dispatcher sempre que chega um pedido de pgina, a thread dispatcher lana uma thread worker worker procura a pgina pedida na cache de pginas, caso no a encontre, ter que ir busc-la ao disco

20

10

6/2/2009

Comunicao entre Processos


IPC (InterProcess Comunnication) Programao concorrente
Elaborao de tarefas mais complexas

desejvel que o SO inclua:


Mecanismos de sincronizao
Ordem no acesso aos recursos Ordem quando existe dependncia entre processos (e.g., o processo A produz dados utilizados pelo processo B)

Mecanismos de comunicao
Troca de dados entre vrios processos (atravs de mensagens ou de partilha de memria)
21

Regies Crticas e Excluso Mtua


Exemplo fila de impresso
Considere que dois processos A e B encaminham ficheiros para uma fila de impresso com vrios slots. Para gesto da fila utilizam-se duas variveis:
in varivel partilhada pelos processos e que indica o prximo slot livre na fila out varivel utilizada pelo processo printer daemon e que indica o slot do prximo trabalho a ser imprimido

22

11

6/2/2009

Regies Crticas e Excluso Mtua


Exemplo fila de impresso
Fila de impresso 0 1 2 3 4 5 ... trab.txt prog1.c contas.xls out = 1

Processo A

in = 4

Processo B

23

Regies Crticas e Excluso Mtua


Exemplo fila de impresso
cdigo utilizado pelos processos
void EnviarFicheiro(char NomeFicheiro[]) { ... ProxSlotLivre = LerPartilhada_in(); CopiarString(NomeFicheiro, ProxSlotLivre); ++ProxSlotLivre; ActualizarPartilhada_in(ProxSlotLivre); ... }

O que pode acontecer se ocorrer uma comutao de processos entre a leitura da varivel in e a actualizao do seu valor ?
24

12

6/2/2009

Regies Crticas e Excluso Mtua


Regio crtica
seco do programa onde so efectuados acessos (para leitura e escrita) a recursos partilhados por dois ou mais processos necessrio assegurar que dois ou mais processos no se encontrem simultaneamente na regio crtica excluso mtua assegura-se a excluso mtua recorrendo aos mecanismos de sincronizao fornecidos pelo SO Estas afirmaes so vlidas tambm para as threads ( ainda mais crtico, pois todas as threads dentro do mesmo processo partilham os mesmos recursos)
25

Regies Crticas e Excluso Mtua


Regras para programao concorrente
Dois ou mais processos no podem estar simultaneamente dentro de uma regio crtica No se podem fazer assunes em relao velocidade e ao nmero de CPUs Um processo fora da regio crtica no deve causar bloqueio a outro processo Um processo no pode esperar infinitamente para entrar na regio crtica

26

13

6/2/2009

Mecanismos de Sincronizao
Desactivao das interrupes
Mecanismo mais bsico, que impossibilita a comutao de processos, garantindo assim a excluso mtua
... DesactivarInts(); /* Desactivar as interrupes */ RegiaoCritica(); ActivarInts(); /* Activar as interrupes */ RegiaoNaoCritica(); ...

Problema
muito perigoso dar ao utilizador a possibilidade de desactivar as interrupes (imagina-se facilmente porqu)

27

Mecanismos de Sincronizao
Trincos lgicos (locks)
Outra ideia ter uma varivel binria, partilhada por vrios processos, que controle o acesso regio crtica
... while (lock==0); /* Em ciclo at poder entrar */ lock = 0; /* Tranca o acesso */ RegiaoCritica(); lock = 1; /* Destranca */ ...

Problemas:
Pode falhar na garantia da excluso mtua. Conduz a uma espera activa
28

14

6/2/2009

Mecanismos de Sincronizao
Espera Activa
Um processo ocupa o CPU sem realizar processamento til, at poder entrar na regio crtica.

As esperas activas devem ser evitadas porque


reduzem a eficincia do processador podem originar um problema designado por problema da inverso da prioridade
Um processo prioritrio pode dar entrada no sistema sem que outro processo liberte o acesso regio crtica, monopolizando o CPU e ficando infinitamente espera.
29

Mecanismos de Sincronizao
Instruo TSL (Test and Set Lock)
Uma instruo do processador carrega num registo o valor lido de uma posio e de seguida escreve nessa posio um valor diferente de zero (e.g. 1)
... while (TSL(lock)!=0); RegiaoCritica(); lock = 0; RegiaoNaoCritica(); ...

Problema
Resolve a excluso mtua, mas conduz tambm a uma espera activa...
30

15

6/2/2009

Mecanismos de Sincronizao
Sleep e Wakeup
Duas chamadas ao sistema que funcionam do seguinte modo:
Sleep() causa bloqueio ao processo que a invoca Wakeup(PID) desbloqueia o processo identificado por PID

A utilizao destas duas chamadas evita esperas activas, e em conjunto com outros mecanismos (e.g. TSL) consegue-se garantir a excluso mtua Problema
lost Wakeup signal um processo manda acordar o outro sem este ter adormecido ainda

31

Mecanismos de Sincronizao
Semforos
Propostos em 1965 por Dijkstra e muito utilizados hoje em dia (embora com variantes) Um semforo consiste basicamente num nmero inteiro no negativo Foram originalmente sugeridas duas operaes atmicas (indivisveis) sob o ponto de vista do SO :
UP(Sem) Incrementa em uma unidade o valor do semforo Sem DOWN(Sem) Tenta decrementar em uma unidade o semforo Sem. Caso o semforo esteja a 0, o processo que invoca DOWN bloqueia at que o valor do semforo permita o decremento e a operao seja finalizada
32

16

6/2/2009

Mecanismos de Sincronizao
Semforos proteco da regio crtica
/* S um semforo partilhado por vrios processos e inicializado com o valor 1 */ ... DOWN(S); /* Bloqueia se S estiver a 0 */ RegiaoCritica(); UP(S); /* Liberta o acesso */ RegiaoNaoCritica(); ...

33

Problema do Consumidor e Produtor


Dois processos partilham um buffer (ou array) de dimenso finita N:
processo produtor coloca elementos no buffer processo consumidor extrai elementos do buffer
/* Produtor */ while (TRUE) { Item = ProduzirItem(); DepositarItem(Item); } /* Consumidor */ while (TRUE) { Item = RetirarItem(); ConsumirItem(Item); }
34

17

6/2/2009

Problema do Consumidor e Produtor


O cdigo proposto apresenta vrios problemas...
No se impede a ocorrncia das seguintes situaes:
o consumidor tenta extrair um elemento quando o buffer est vazio o produtor tenta colocar um elemento no buffer quando este est cheio

O buffer partilhado pelos dois processos, logo o seu acesso constitui uma regio crtica no est garantida a excluso mtua Estes problemas podem ser todos resolvidos utilizando semforos
35

Problema do Consumidor e Produtor


Inicializao dos semforos Livre - inicializado com N (N a capacidade do buffer); Ocups incializado a 0; Mutex inicializado a 1; /* Produtor */ while (TRUE) { Item = ProduzirItem(); DOWN(Livres); DOWN(Mutex); DepositarItem(Item); UP(Mutex); UP(Ocups); } /* Consumidor */ while (TRUE) { DOWN(Ocups); DOWN(Mutex); Item = RetirarItem(); UP(Mutex); UP(Livres) ConsumirItem(Item); }
36

18

6/2/2009

Deadlocks (Becos sem Sada)


Quando se elabora um programa que envolvam mecanismos de sincronizao necessrio ter muito cuidado... No problema anterior, o que pode acontecer se trocarmos a ordem dos DOWNs e se considerarmos que o buffer est vazio ? Com a troca dos semforos existe a possibilidade de ambos os processos bloquearem esta situao designa-se deadlock ou beco sem sada
37

Deadlocks
Definio:
Um conjunto de processos est num deadlock se cada um dos processos est bloqueado espera de um sinal dependente de outro processo nesse conjunto.
Exemplo X,Y e Z so inicializados a 1 Processo A DOWN(X) DOWN(Y) ...
Comutaes do CPU

Processo B DOWN(Y) DOWN(Z) ... UP(Z) UP(Y)

Processo C DOWN(Z) DOWN(X) ... UP(X) UP(Z)


38

UP(Y) UP(X)

19

6/2/2009

Outros Mecanismos
Mutex
Basicamente um semforo mais simples que apenas assume os valores 0 e 1 (semforo binrio) So amplamente utilizados para sincronizao de threads

Barreiras
Um mecanismo de sincronizao utilizado em arquitecturas multiprocessador quando est envolvido processamento por fases. A barreira no deixa passar nenhum processo para a fase seguinte antes de todos os processos terem terminado a fase corrente
39

Outros Mecanismos
Monitores
Mecanismos de sincronizao de alto nvel com o objectivo de simplificar a programao concorrente A ideia consiste em definir o cdigo correspondente s regies crticas dentro de uma rotina especial designada monitor O monitor garante que apenas um processo pode estar no seu interior bloqueando todos os outros que tentem aceder antes do que l est sair Utilizados actualmente na linguagem Java (embora de uma forma diferente da definida originalmente)

40

20

6/2/2009

Comunicao - Mensagens
Dois ou mais processos distintos podem ter necessidade de trocar dados entre si Os dados que so trocados constituem uma mensagem Chamadas ao sistema do tipo
Enviar(Destino, Mensagem) Receber(Origem, &Mensagem) As chamadas ao sistema podero ser bloqueantes

41

Comunicao - Mensagens
Modelo de comunicao

Processo Emissor

Canal

Processo Receptor

Mensagem

42

21

6/2/2009

Comunicao - Mensagens
Existem vrias formas diferentes de conseguir a comunicao entre processos:
Ficheiro
Forma trivial Comunicao lenta e com muitas limitaes

Memria partilhada
Dois ou mais processos partilham um segmento de memria Comunicao rpida, mas desprovida de sincronizao

43

Comunicao - Mensagens
Caixa de correio (ou fila de mensagens)
Fila com capacidade para armazenar um nmero limitado de mensagens Permite a troca de mensagens entre diversos processos Cada mensagem poder ter um tipo associado, o que facilita a ordem no acesso s mensagens

Comunicao sncrona (Rendez-vous)


De cada vez que um processo envia uma mensagem a outro, bloqueia at que o segundo a leia, trocando-se nessa altura os dados de forma directa Poupa-se memria, mas perde-se alguma eficincia em processamento

44

22

6/2/2009

IPC Unix/Linux
No Linux existem diversos mecanismos para comunicao e sincronizao de processos
Pipes Memria Partilhada Filas de Mensagens (ou Mailboxes) Sockets (para comunicao entre processos em mquinas diferentes) Semforos

45

IPC Linux
Pipes
Mecanismo original de comunicao entre processos nos sistemas Unix Pipes half-duplex
Utilizados para estabelecer um canal de comunicao unidireccional entre processo pai e processo filho O canal de comunicao reside no ncleo do SO Limitao s podem ser utilizados entre processos relacionados hierarquicamente Os pipes na shell so tambm deste tipo
46

23

6/2/2009

IPC Linux
Pipes half-duplex
%> ps -aux | grep kde | more

Pipes

ps aux

grep kde

more

Processos

47

IPC Linux
Pipes half-duplex
Chamadas ao sistema (funes C) pipe(.) criar um pipe read(.) ler (bloqueia se o pipe est vazio) write(.) escrever no pipe (bloqueia se o pipe est cheio) close(.) fechar um dos canais do pipe popen(.) lanar processo filho e abrir pipe pclose(.) fechar pipe aps terminao do processo filho

48

24

6/2/2009

IPC Linux
Named Pipes (FIFOS)
A grande diferena em relao aos pipes half-duplex a comunicao ser efectuada atravs de um ficheiro especial FIFO o canal de comunicao passa a residir no sistema de ficheiros. mknod e mkfifo Cria-se este ficheiro especial e aps isso so utilizadas funes normais para escrita e leitura em ficheiros fopen e fclose (abrir e fechar) fgets e fputs (ler e escrever string) etc. Os pipes com nome podem ser utilizados para estabelecer a comunicao entre quaisquer processos

49

IPC Linux
Filas de mensagens
Seguem o modelo de comunicao por caixa de correio So utilizadas para comunicao entre vrios processos Chamadas ao sistema (funes C)
msgget criao ou associao msgsnd envio de mensagens (causa bloqueio se a fila estiver cheia) msgrcv recepo de mensagem (causa bloqueio se a fila no tiver nenhuma mensagem pretendida) msgctl operaes de controlo e remoo
50

25

6/2/2009

IPC Linux
Memria partilhada
Define-se um conjunto de posies de memria que partilhada por dois processos Chamadas ao sistema (funes C)
shmget criao ou associao shmat mapeamento do segmento de memria partilhada para o espao de endereamento do processo shmdt liberta o segmento do espao de endereamento do processo shmctl controlo e remoo

Ateno, pois estas chamadas ao sistema no so bloqueantes, pelo que necessria a existncia de mecanismos de sincronizao
51

IPC - Linux
Semforos
No Unix/Linux, existem algumas extenses s operaes sobre semforos atrs descritas:
Podem-se efectuar UPs e DOWNs com mais do que uma unidade Pode-se operar com semforos como se estes fossem binrios

Chamadas ao sistema (funes C)


semget criao ou associao a um grupo de semforos semop operaes sobre um grupo de semforos semctl controlo, inicializao e remoo

52

26

6/2/2009

Sequenciamento
Quando ocorre uma comutao de processos, o sequenciador (scheduler) escolhe um processo para o qual se atribui o CPU A escolha feita de acordo com um dado algoritmo de sequenciamento Aps a escolha do sequenciador, o despachante (dispatcher) encarrega-se de colocar o processo em execuo. O projecto do sequenciador de processos deve ter em conta as caractersticas do sistema em causa
Sistema batch Sistema interactivo Sistema em tempo real
53

Sequenciamento
Objectivos do sequenciamento (scheduling)
Justia garantir que todos os processos tero direito a tempo de CPU Equilbrio manter os recursos do sistema com uma taxa de ocupao equilibrada Prioridades dar maior tempo de CPU aos processos com maior importncia Previsibilidade um mesmo programa deve ser correctamente executado, independentemente da carga do sistema
54

27

6/2/2009

Sequenciamento
Objectivos do sequenciamento (scheduling)
Maximizar o n de processos concludos por unidade de tempo Maximizar a taxa de utilizao do CPU em processamento til Minimizar o tempo de resposta Maximizar o nmero de utilizadores interactivos Cumprir os deadlines (em sistemas de tempo real) Alguns dos objectivos so contraditrios...
55

Sequenciamento
Comportamento dos processos
I/O-bound Processo caracterizado por uma taxa elevada de operaes I/O face utilizao do CPU
tempo

CPU

I/O

Compute-bound Processo caracterizado por uma taxa elevada de utilizao do CPU face a operaes de I/O
CPU I/O

tempo
56

28

6/2/2009

Sequenciamento
Sequenciamento com preempo (Preemptive scheduling)
O algoritmo de sequenciamento corre
Quando o processo que ocupa o CPU bloqueia Em instantes temporais pr-determinados (interrupo do relgio) Quando entra um processo prioritrio (em sistemas de tempo-real)

Sequenciamento sem preempo (Non-preemptive scheduling)


O algoritmo de sequenciamento s corre aps o bloqueio do processo que ocupa o CPU
Operao de I/O Bloqueio num semforo Ocorrncia de Page fault, etc.
57

Algoritmos de Sequenciamento
First-come, first-served (ou FIFO)
O CPU atribudo aos processos pela sua ordem de chegada Cada processo monopoliza o CPU at terminar, ou at bloquear numa operao de I/O Caractersticas:
Algoritmo muito simples No aplicvel para processamento interactivo, mas pode ser utilizado em conjunto com outros algoritmos Utilizado em sistemas batch,

58

29

6/2/2009

Algoritmos de Sequenciamento
Round-robin
Cada processo tem direito a um certo tempo de CPU o quantum Aps o fim do quantum colocado no fim da fila dos processos executveis
D
Fim do quantum

CPU

CPU

Caractersticas
Trata todos os processos de modo igual Permite interactividade Utilizado em conjunto com outros algoritmos
59

Algoritmos de Sequenciamento
Round-robin
O dimensionamento do quantum pode ter um impacto muito forte no desempenho do sistema
Quantum pequeno o CPU perde rendimento... Quantum grande aumenta o rendimento, mas perde-se interactividade...
Quantum Overhead tempo
Rendimento = Tempo de processame nto til Quantum = Tempo de processame nto total Quantum + Overhead

Overhead tempo necessrio para o SO actualizar estruturas quando ocorre uma comutao de processos
60

30

6/2/2009

Algoritmos de Sequenciamento
Prioridades
Existem processos mais importantes do que outros
A cada processo atribudo um valor de prioridade O sequenciador ordena os processos por ordem de prioridade O CPU atribudo ao processo com maior prioridade

Para evitar que processos prioritrios monopolizem o CPU, a prioridade poder ter duas componentes
Prioridade = prioridade base + prioridade dinmica Base valor fixo, correspondendo prioridade com que o processo iniciado Dinmica valor varivel ao longo do tempo, calculada pelo sequenciador em certos instantes temporais
61

Algoritmos de Sequenciamento
Prioridades
Prioridades dinmicas (exemplo de algoritmo simples)
Definir a prioridade dinmica com base na fraco de tempo do quantum f que um processo utilizou antes de iniciar uma operao de I/O Prioridade dinmica = 1/f Com este algoritmo beneficiam-se os processos I/O-bound

Quantum = 10 ms Bloqueio ao fim de 1 ms => prior. din. = 10 Bloqueio ao fim de 2 ms => prior. din. = 5 Bloqueio ao fim de 5 ms => prior. din. = 2
62

31

6/2/2009

Algoritmos de Sequenciamento
Multifila
Algoritmo que utiliza vrias filas round-robin (ou FIFO) com prioridades e quantuns diferentes em cada uma
Quantuns pequenos para prioridades altas Quantuns grandes para prioridades baixas

Em cada comutao um processo baixa a prioridade mas aumenta o seu quantum


Processos I/O-bound ficaro com prioridades altas e quantuns pequenos Processos compute-bound ficaro com prioridades baixas, mas correm de um modo mais eficiente com quantuns altos
63

Algoritmos de Sequenciamento
Multifila
Exemplo
Prioridade 4 3 2 1 Processos A C D G E F B Quantum = q Quantum = 2q Quantum = 4q Quantum = 8q

Calcular quantas comutaes seriam necessrias para um processo cujo tempo de execuo seja de 20q. Supondo que o overhead de q/5, calcule o rendimento e compare com o obtido se o quantum fosse sempre q.
64

32

6/2/2009

Sequenciamento UNIX (caso geral)


Baseado em filas de prioridades divididas em modo ncleo (negativas) e modo utilizador (positivas) Algoritmo round-robin em cada fila de prioridade
Maior prioridade Modo ncleo
... -4 -3 -2 -1 0 1 2 3 4 ... ... Disco I/O Terminal output Terminal input Terminao do filho Prioridade 0 Prioridade 1 Prioridade 2 Prioridade 3 Prioridade 4 ... 65

Modo utilizador

Menor prioridade

Sequenciamento UNIX (caso geral)


Prioridades em modo ncleo
Vrias filas com prioridades negativas, cada uma delas correspondendo sada de um bloqueio causado por uma dada situao em particular
Espera pela terminao do filho Espera por input do terminal Etc.

O objectivo deste esquema consistem em


acelerar pedidos de I/O dos processos I/O-bound; servir rapidamente processos interactivos; libertar rapidamente os processos do modo ncleo.

66

33

6/2/2009

Sequenciamento UNIX (caso geral)


Prioridades em modo utilizador
Prioridades dinmicas que visam lidar com processos computebound A prioridade calculada de acordo com
Prioridade = Prioridade base + k*T_CPU + Nice T_CPU (utilizao do CPU) pode ser calculada do seguinte modo:

T_CPUi =

T _ CPUi1 + T 2

Deste modo, no se penaliza tanto um processo compute-bound

67

Sequenciamento - LINUX
Funcionamento do algoritmo
A escolha do sequenciador feita segundo a goodness de cada thread escolhe o que obter goodness mais alta
if (classe == realtime) goodness = 1000 + prioridade; if (classe == timesharing && quantum>0) goodness = quantum + prioridade; if (classe == timesharing && quantum==0) goodness = 0;

Valores de prioridade entre 1 e 40 (40 a mais elevada) 20 o valor por defeito O quantum medido em clock ticks (chamados jiffys). Cada jiffy corresponde a 10ms (por defeito) Em cada clock tick, o valor do quantum decrementado em uma unidade
68

34

6/2/2009

Sequenciamento LINUX
Uma thread perde o processador se:
O seu quantum chegar a 0; Bloquear (semforo, I/O, etc.) Uma thread com maior goodness desbloquear

Nessa altura calculado um novo valor para os quantuns (em jiffys) de todas as threads (activas e bloqueadas)
Novo quantum = quantum que sobrou / 2 + prioridade

O objectivo beneficiar threads I/O-bound


I/O-bound o quantum tende para o dobro do valor da prioridade, consequentemente aumentando a goodness compute-bound o quantum tende para um valor igual ao da prioridade
69

35