Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 1 de 34
Sistemas OperacionaisSistemas OperacionaisUnidade III – Gerência de ProcessosUnidade III – Gerência de Processos
http://www.lncc.br/~lrodrigohttp://www.lncc.br/~lrodrigo
Professor: Luis Rodrigo – [email protected]: Luis Rodrigo – [email protected]
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 2 de 34
Unidade III: Gerência de ProcessosUnidade III: Gerência de Processos
Conceito de Processo Materialização do Processo Estados do processo Mudanças de Estado Tipos de processo
Escalonamento de ProcessosEscalonamento de Processos ThreadsComunicação entre Processos
Exclusão mútua e região crítica Soluções de software para exclusão mútua Concorrência e Sincronização de Processos
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 3 de 34
Escalonamento :Escalonamento :
Escalonamento (schedulling):Escalonamento (schedulling):✔ Conjunto de Regras utilizada pelo S.O.Conjunto de Regras utilizada pelo S.O.
✔ Define o ordem e o mecanismos de execução dos processosDefine o ordem e o mecanismos de execução dos processos
Escalonador:Escalonador:✔ Componente do Kernel responsável pelo escalonamento;Componente do Kernel responsável pelo escalonamento;
✔ Deve impedir o “Starvation”Deve impedir o “Starvation”
✔ Fatores relevantes:Fatores relevantes:
➢ utilização da CPUutilização da CPU
➢ throughputthroughput
➢ turnaroundturnaround
➢ tempo de respostatempo de resposta
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 4 de 34
Escalonamento :Escalonamento :
Rodando
ProntoBloqueado
Escalonamento/Escalonador
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 5 de 34
Escalonamento :Escalonamento :
Tipos de EscalonamentoTipos de Escalonamento✔ Não Preemptivo:Não Preemptivo:
➢ eventos voluntárioseventos voluntários
✔ Preemptivo:Preemptivo:
➢ eventos não voluntárioseventos não voluntários
➢ escalonador pode interromper os processosescalonador pode interromper os processos
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 6 de 34
Escalonamento :Escalonamento :
Escalonamento não PreemptivoEscalonamento não Preemptivo
todos usam um única filatodos usam um única fila✔ FIFO – First-in-first-outFIFO – First-in-first-out
➢ processos CPU-Bound (menor prioridade) prejudicam os processos processos CPU-Bound (menor prioridade) prejudicam os processos
IO-Bound (maior prioridade)IO-Bound (maior prioridade)
✔ SJF - Shortest-jof-first:SJF - Shortest-jof-first:
➢ processos com menor tempo de execução são tratados primeiroprocessos com menor tempo de execução são tratados primeiro
➢ não é simples determinar o tempo para a conclusão do processonão é simples determinar o tempo para a conclusão do processo
✔ Cooperativo:Cooperativo:
➢ fila de mensagensfila de mensagens
➢ sem intervenção do S.O.sem intervenção do S.O.
➢ processo pode não liberar o processador (núcleo)processo pode não liberar o processador (núcleo)
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 7 de 34
Escalonamento :Escalonamento :
Escalonamento PreemptivoEscalonamento Preemptivo
Ação de eventos voluntários involuntáriosAção de eventos voluntários involuntários✔ Circular – Round RobinCircular – Round Robin
➢ uma única fila de prontouma única fila de pronto
➢ atendidos pela ordem de chegadaatendidos pela ordem de chegada
➢ preempção por tempopreempção por tempo
➢ uso de time-slice (quantum)uso de time-slice (quantum)
Rodando
Bloqueado
A | B | C | D | EPronto
Preempção p/Tempo
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 8 de 34
Escalonamento :Escalonamento :
Escalonamento PreemptivoEscalonamento Preemptivo✔ Por PrioridadePor Prioridade
➢ uma única fila de prontouma única fila de pronto
➢ Prioridade : (i) definida pelo SO, (ii) estática ou dinâmicaPrioridade : (i) definida pelo SO, (ii) estática ou dinâmica
➢ Ao final do time slice / inicio do escalonamento:Ao final do time slice / inicio do escalonamento:
➢ Arruma lista de processosArruma lista de processos
➢ Se o 1º processo da fila de pronto possui prioridade maior ou igual ao Se o 1º processo da fila de pronto possui prioridade maior ou igual ao
que está sendo executa ocorre o escalonamentoque está sendo executa ocorre o escalonamento
➢ Senão processo que está sendo executado continua por mais um Senão processo que está sendo executado continua por mais um
time-slice;time-slice;
➢ Prioridade dinâmica pode ser usada para compensar os processos que Prioridade dinâmica pode ser usada para compensar os processos que
ficam na fila de pronto (fila de espera pela CPU)ficam na fila de pronto (fila de espera pela CPU)
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 9 de 34
Escalonamento :Escalonamento :
Por múltiplas filasPor múltiplas filas➢ Várias filas de pronto;Várias filas de pronto;
➢ Cada fila possui uma prioridadeCada fila possui uma prioridade
➢ Processo não pode mudar de prioridadeProcesso não pode mudar de prioridade
➢ Processos ganham a CPU quando não á processo de maior prioridadeProcessos ganham a CPU quando não á processo de maior prioridade
Rodando
Bloqueado
Pronto
A | B | C | D | E
A | B | C | D | E
A | B | C | D | E
A | B | C | D | E
A | B | C | D | E
+
-
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 10 de 34
Escalonamento :Escalonamento :
Por múltiplas filas e com realimentaçãoPor múltiplas filas e com realimentação➢ Várias filas de pronto;Várias filas de pronto;
➢ Cada fila possui uma prioridadeCada fila possui uma prioridade
➢ Processo pode mudar de prioridade Processo pode mudar de prioridade
➢ Mecanismo adaptativo :Mecanismo adaptativo :
➢ Quando criado o processo é colocado no final da fila de maior Quando criado o processo é colocado no final da fila de maior
prioridadeprioridade
➢ Se ocorrer preempção por prioridade ou pelo S.O., o processo volta ao Se ocorrer preempção por prioridade ou pelo S.O., o processo volta ao
final da fila de origem (prioridade n)final da fila de origem (prioridade n)
➢ Se ocorrer preempção por tempo processo vai para o final de Se ocorrer preempção por tempo processo vai para o final de
prioridade “n-1”, onde “n” é a prioridade atualprioridade “n-1”, onde “n” é a prioridade atual
➢ Quando vai para a fila de bloqueados volta com prioridade “n+1”Quando vai para a fila de bloqueados volta com prioridade “n+1”
➢ Quanto maior a prioridade menor o time-sliceQuanto maior a prioridade menor o time-slice
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 11 de 34
Escalonamento :Escalonamento :
Tempo realTempo real➢ Prioridade EstáticaPrioridade Estática
Com multiplos processadoresCom multiplos processadores➢ Sistema fortemente acoplado (memória compartilhada)Sistema fortemente acoplado (memória compartilhada)
➢ Fila únicaFila única
➢ Escalonado para o primeiro processador livreEscalonado para o primeiro processador livre
➢ Sistema fracamente acoplado (memória distribuída)Sistema fracamente acoplado (memória distribuída)
➢ cada processador usa seu próprio algoritmocada processador usa seu próprio algoritmo
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 12 de 34
Unidade III: Gerência de ProcessosUnidade III: Gerência de Processos
Conceito de Processo Materialização do Processo Estados do processo Mudanças de Estado Tipos de processo
Escalonamento de Processos ThreadsThreadsComunicação entre ProcessosComunicação entre Processos
Exclusão mútua e região críticaExclusão mútua e região crítica Soluções de software para exclusão mútuaSoluções de software para exclusão mútua Concorrência e Sincronização de ProcessosConcorrência e Sincronização de Processos
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 13 de 34
Threads Threads
Conceitos BásicosConceitos Básicos::✔ Assim como os processos, são elementos ativos que podem Assim como os processos, são elementos ativos que podem
interagir com o sistema e entre siinteragir com o sistema e entre si
✔ Um processo pode ser composto por várias threadsUm processo pode ser composto por várias threads
✔ Cada processo possui seu próprio conjunto de recursosCada processo possui seu próprio conjunto de recursos
✔ As threads de um processo compartilham um mesmo conjunto As threads de um processo compartilham um mesmo conjunto
de recursos, podem possuir recursos individualizadosde recursos, podem possuir recursos individualizados
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 14 de 34
Threads Threads
Modelo ClássicoModelo Clássico::✔ para cada processo há um e somente uma threadpara cada processo há um e somente uma thread
✔ neste caso a thread e o processo são a mesma entidadeneste caso a thread e o processo são a mesma entidade
Processo 1 Processo 2 Processo 3
Thread 1 Thread 2 Thread 3
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 15 de 34
Threads Threads
Modelo AtualModelo Atual::✔ um processo pode ser composto de uma ou várias threadsum processo pode ser composto de uma ou várias threads
✔ cada thread individualiza:cada thread individualiza:➢ os registradores; os registradores;
➢ o apontador de Instruçãoo apontador de Instrução
➢ a pilhaa pilhaProcesso 1 Processo 2 Processo 3
Threads
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 16 de 34
Unidade III: Gerência de ProcessosUnidade III: Gerência de Processos
Conceito de Processo Materialização do Processo Estados do processo Mudanças de Estado Tipos de processo
Escalonamento de Processos Threads Comunicação entre ProcessosComunicação entre Processos
Exclusão mútua e região críticaExclusão mútua e região crítica Soluções de software para exclusão mútuaSoluções de software para exclusão mútua Concorrência e Sincronização de ProcessosConcorrência e Sincronização de Processos
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 17 de 34
Comunicação entre processos :Comunicação entre processos :
IPC (InterProcess Comunnication)IPC (InterProcess Comunnication)
Programação Distribuída (Concorrente/Paralela)Programação Distribuída (Concorrente/Paralela) Dividir para conquistar Dividir para conquistar
Redundância / Validação de resultadosRedundância / Validação de resultados
Recursos que o S.O. deveria fornecer:Recursos que o S.O. deveria fornecer: Mecanismos de SincronizaçãoMecanismos de Sincronização
Mecanismos de ComunicaçãoMecanismos de Comunicação
Memória CompartilhadaMemória Compartilhada
Troca de MensagensTroca de Mensagens
Serialização / sequencializaçãoSerialização / sequencialização
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 18 de 34
Condições de Corrida :Condições de Corrida :
Ocorrem quando 2 ou + processos necessitam utilizar Ocorrem quando 2 ou + processos necessitam utilizar
o mesmo recurso: o mesmo recurso: arquivos em discoarquivos em disco
variáveis compartilhadasvariáveis compartilhadas
spool de impressãospool de impressão
E a ordem no acesso do recurso pode alterar o E a ordem no acesso do recurso pode alterar o
resultado final:resultado final: obter saldo && realizar um depositoobter saldo && realizar um deposito
obter saldo && realizar um saqueobter saldo && realizar um saque
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 19 de 34
Regiões Críticas :Regiões Críticas :
Parte do código que leva às condições de corridaParte do código que leva às condições de corrida
Para protege-las foram definidos mecanismos que Para protege-las foram definidos mecanismos que
impedem que 2 ou + processos acessem a mesma R.C. impedem que 2 ou + processos acessem a mesma R.C.
ao mesmo tempoao mesmo tempo
Os mecanismos de controle devemOs mecanismos de controle devem Permitir a entrada de apenas um processo na RCPermitir a entrada de apenas um processo na RC
Não deve-se fazer consideração quanto a velocidade de execução dos Não deve-se fazer consideração quanto a velocidade de execução dos
processos e processadoresprocessos e processadores
Processos fora da RC não podem bloquear processos dentro da RCProcessos fora da RC não podem bloquear processos dentro da RC
Nenhum processo pode esperar indefinidamente para entrar na RCNenhum processo pode esperar indefinidamente para entrar na RC
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 20 de 34
Exclusão mútua :Exclusão mútua :
Há duas formas de evitar as condições de corrida e Há duas formas de evitar as condições de corrida e
proteger as regiões criticas:proteger as regiões criticas: Exclusão Mútua com espera ocupada Exclusão Mútua com espera ocupada
Exclusão Mútua sem espera ocupadaExclusão Mútua sem espera ocupada
Elas devem impedir que processos concorrentes Elas devem impedir que processos concorrentes
acessem ao mesmo tempo um determinado recursoacessem ao mesmo tempo um determinado recurso
Demais processos devem esperar o encerramento da Demais processos devem esperar o encerramento da
operação sobre o recurso antes de utiliza-looperação sobre o recurso antes de utiliza-lo
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 21 de 34
Espera Ocupada :Espera Ocupada :
Inibição de Interrupções:Inibição de Interrupções:✔ desabilitar todas as interrupções ao entrar na região críticadesabilitar todas as interrupções ao entrar na região crítica
✔ inclusive interrupção do clockinclusive interrupção do clock
✔ só funciona em máquinas com um único processador / núcleosó funciona em máquinas com um único processador / núcleo
✔ pode causar DOS, caso as interrupções continuem desativadas ao pode causar DOS, caso as interrupções continuem desativadas ao
finalizar a região críticafinalizar a região crítica
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 22 de 34
Espera Ocupada :Espera Ocupada :
Variáveis de travamento:Variáveis de travamento:✔ variável compartilhada, que pode assumir 0 ou 1variável compartilhada, que pode assumir 0 ou 1
✔ quando 0 o processo pode entrar na RCquando 0 o processo pode entrar na RC
✔ falha quando um processo obtém o valor 0 mas não tem tempo para falha quando um processo obtém o valor 0 mas não tem tempo para
atualiza-lo para 1atualiza-lo para 1
✔ também falha quando o processo não altera seu valor para 0 ao sair da também falha quando o processo não altera seu valor para 0 ao sair da
Região CríticaRegião Crítica
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 23 de 34
Espera Ocupada :Espera Ocupada :
Escrita alternada:Escrita alternada:✔ TURN - Variável inteira compartilhada TURN - Variável inteira compartilhada
✔ O valor contido na variável define de quem é a vez de entrar na RCO valor contido na variável define de quem é a vez de entrar na RC
✔ Realiza um teste contínuo sobre o valor da variávelRealiza um teste contínuo sobre o valor da variável
Processo A...while (true) { while (TURN != 0) regiaoCritica (); TURN++; regiaoNaoCritica ();}
Processo B...while (true) { while (TURN != 1 ) regiaoCritica (); TURN=0; regiaoNaoCritica ();}
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 24 de 34
Espera Ocupada :Espera Ocupada :
Solução de Peterson:Solução de Peterson:✔ Duas Variáveis: travamento e intençãoDuas Variáveis: travamento e intenção
✔ Duas Funções:Duas Funções:
✔ enterRegion ( int proc) enterRegion ( int proc)
✔ leaveRegion ( int proc )leaveRegion ( int proc )
#include “prototype.h”#define FALSE=0#define TRUE=1#define N=2int turn;int interested (N);
void leaveRegion (int proc) {
interested[proc] = FALSE;
}
void enterRegion (int proc) {
int other; other=1-proc; interested[proc] = TRUE; turn=proc;
while (turn == proc && interested[other] == TRUE );
}
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 25 de 34
Espera Ocupada :Espera Ocupada :
Instruções TSL:Instruções TSL:✔ Test and Set Lock (instrução atômica)Test and Set Lock (instrução atômica)
✔ Transfere o conteúdo da memória para o contado e armazena na Transfere o conteúdo da memória para o contado e armazena na
memória um valor não nulomemória um valor não nulo
✔ Desabilita acesso a memória aos demais processadoresDesabilita acesso a memória aos demais processadores
✔ Evita a chegada de interrupções no meio da atualizaçãoEvita a chegada de interrupções no meio da atualização
✔ Suportado apenas em AssemblySuportado apenas em Assembly
✔ Falha quando o processo que está na RC é abortadoFalha quando o processo que está na RC é abortado
enter_region PROC_loop: TSL register, lock; CMP lock,0; JNE _loop; RETenter_region ENDP
leave_region PROC mov lock, #0; ret;leav_region ENDP
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 26 de 34
Sem Espera Ocupada :Sem Espera Ocupada :
Evita que o loop de esperaEvita que o loop de espera
Problema de inversão de prioridadeProblema de inversão de prioridade✔ processo “H” com alta prioridade e for a de RC, impede que o processo processo “H” com alta prioridade e for a de RC, impede que o processo
“L” com baixa prioridade rode e execute a RC“L” com baixa prioridade rode e execute a RC
● Pode gerar um Deadlock (abraço mortal)Pode gerar um Deadlock (abraço mortal)
● Solução utiliza política de prioridade dinâmicaSolução utiliza política de prioridade dinâmica
● Processo na RC deve ter a maior prioridadeProcesso na RC deve ter a maior prioridade✔ comparado com aqueles que está concorrendocomparado com aqueles que está concorrendo
✔ ao sair da RC volta a prioridade normalao sair da RC volta a prioridade normal
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 27 de 34
Sem Espera Ocupada :Sem Espera Ocupada :
Sleep e WakeupSleep e Wakeup✔ sleep () : coloca o processo para dormir (fila de bloqueado)sleep () : coloca o processo para dormir (fila de bloqueado)
✔ wakeup (proc) : acorda o processo que estava na fila de bloqueadowakeup (proc) : acorda o processo que estava na fila de bloqueado
✔ Falha quando um processo que ainda não foi para a fila de bloqueados Falha quando um processo que ainda não foi para a fila de bloqueados
recebe um sinal de wakeuprecebe um sinal de wakeup
✔ Solução: uso de “n” bits para contar a quantidade de wakeups que um Solução: uso de “n” bits para contar a quantidade de wakeups que um
processo recebeuprocesso recebeu
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 28 de 34
Sem Espera Ocupada :Sem Espera Ocupada :
SemáforoSemáforo✔ Variáveis inteiras não negativas protegidasVariáveis inteiras não negativas protegidas
✔ Valor inicial = 0 Valor inicial = 0 → não há sinal armazenado→ não há sinal armazenado
✔ Valores positivos indicam sinais pendentesValores positivos indicam sinais pendentes
✔ Operações Atômicas para sincronização de processos:Operações Atômicas para sincronização de processos:
✔ UP : incrementa contadorUP : incrementa contador
✔ Down : decrementa contadorDown : decrementa contador
✔ Resolve o problema de perda de sinaisResolve o problema de perda de sinais
✔ Quando há mais de um processador a variável do semáforo deve ser Quando há mais de um processador a variável do semáforo deve ser
protegida por instruções TSLprotegida por instruções TSL
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 29 de 34
Sem Espera Ocupada :Sem Espera Ocupada :
SemáforoSemáforo✔ Tipos:Tipos:
✔ Binários : podem assumir 0 ou 1Binários : podem assumir 0 ou 1
✔ Contadores e/ou Genéricos : valores inteiro não negativosContadores e/ou Genéricos : valores inteiro não negativos
✔ CódigoCódigo
def down (S) :
if ( S > 0 ) :S = S – 1
else#espera no semáforo
def up (S) :
if ( processo esperando:ocorde_um_processo ( )
else S = S + 1
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 30 de 34
Sem Espera Ocupada :Sem Espera Ocupada :
SemáforoSemáforoprogram exemplo_semaforo
var ativo : semaphore;
procedure processo_um;begin
while true dobegin
algumas_funcoes_umdown (ativo)regiao_critica_umup (ativo)outras_funcoes_um
endend;
procedure processo_dois;begin
while true dobegin
algumas_funcoes_doisdown (ativo)regiao_critica_doisup (ativo)outras_funcoes_dois
endend;
begininicializa_semaforo (ativo, 1);parbegin
processo_um;processo_dois
parendend.
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 31 de 34
Sem Espera Ocupada :Sem Espera Ocupada :
Contadores de EventoContadores de Evento✔ Variáveis especiais, que permitem as operações:Variáveis especiais, que permitem as operações:
✔ read (E) : obtém o valor de “E”read (E) : obtém o valor de “E”
✔ advande (E) : incrementa o valor de “E”advande (E) : incrementa o valor de “E”
✔ await (E,N) : espera até que “E” tenha o valor “N”await (E,N) : espera até que “E” tenha o valor “N”
✔ Valores iniciados com 0 Valores iniciados com 0
✔ Valores apenas podem ser incrementadosValores apenas podem ser incrementados
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 32 de 34
Sem Espera Ocupada :Sem Espera Ocupada :
MonitoresMonitores✔ Simples de serem utilizadosSimples de serem utilizados
✔ Controlados pelo S.O.Controlados pelo S.O.
✔ S.O. garante que apenas um processo está dentro do monitorS.O. garante que apenas um processo está dentro do monitor
✔ Devem ser suportados pelo compiladorDevem ser suportados pelo compilador
✔ Primitivas de alto nível implementadas como:Primitivas de alto nível implementadas como:
✔ conjunto de procedimentosconjunto de procedimentos
✔ estrutura de dados e variáveisestrutura de dados e variáveis
✔ Formam módulos especiais que podem ser chamados pelos processosFormam módulos especiais que podem ser chamados pelos processos
✔ Não podem ser alteradosNão podem ser alterados
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 33 de 34
Sem Espera Ocupada :Sem Espera Ocupada :
MonitoresMonitores✔ Funções internas não podem ser acessadas de fora do monitorFunções internas não podem ser acessadas de fora do monitor
✔ O compilador deve implementar a exclusão mútua na entrada dos O compilador deve implementar a exclusão mútua na entrada dos
monitores;monitores;
✔ Assim como as demais soluções funciona apenas em sistemas de memória Assim como as demais soluções funciona apenas em sistemas de memória
compartilhada.compartilhada.
monitor exemplo;var
i: integer;c: condition;
procedure produtor (x: integer);begin ...end;
procedure consumidor ( x : integer);begin...end;
end monitor;
Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008
Página: 34 de 34
[email protected]@lncc.brhttp://lrodrigo.lncc.brhttp://lrodrigo.lncc.br
Top Related