Beruflich Dokumente
Kultur Dokumente
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
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
...
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
13
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
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.
20
10
6/2/2009
Mecanismos de comunicao
Troca de dados entre vrios processos (atravs de mensagens ou de partilha de memria)
21
22
11
6/2/2009
Processo A
in = 4
Processo B
23
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
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.
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
17
6/2/2009
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
18
6/2/2009
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
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
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
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)
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
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
Modo utilizador
Menor prioridade
66
33
6/2/2009
T_CPUi =
T _ CPUi1 + T 2
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
35