Sistemas Operacionais
Sistemas Operacionais
Unidade III – Gerência de Processos
Unidade III – Gerência de Processos
http://www.lncc.br/~lrodrigo
http://www.lncc.br/~lrodrigo
Professor: Luis Rodrigo – lrodrigo@lncc.br
Professor: Luis Rodrigo – lrodrigo@lncc.br
Unidade III: Gerência de Processos
Unidade 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
Escalonamento de Processos
Threads
Comunicaçã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
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
Escalonamento :
Escalonamento :
Rodando Pronto Bloqueado Escalonamento/EscalonadorEscalonamento :
Escalonamento :
Tipos de Escalonamento
Tipos de Escalonamento
✔ Não Preemptivo:Não Preemptivo:
➢ eventos voluntárioseventos voluntários ✔ Preemptivo:Preemptivo:
➢ eventos não voluntárioseventos não voluntários
Escalonamento :
Escalonamento :
Escalonamento não Preemptivo
Escalonamento não Preemptivo
todos usam um única fila
todos 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.
Escalonamento :
Escalonamento :
Escalonamento Preemptivo
Escalonamento Preemptivo
Ação de eventos voluntários involuntários
Açã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 | E Pronto Preempção p/Tempo
Escalonamento :
Escalonamento :
Escalonamento Preemptivo
Escalonamento 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 escalonamento
que 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)
Escalonamento :
Escalonamento :
Por múltiplas filas
Por 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 +
-Escalonamento :
Escalonamento :
Por múltiplas filas e com realimentação
Por 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
prioridade
prioridade
➢ 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 atual
prioridade “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
Escalonamento :
Escalonamento :
Tempo real
Tempo real
➢ Prioridade EstáticaPrioridade Estática
Com multiplos processadores
Com 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
Unidade III: Gerência de Processos
Unidade 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
Threads
Comunicação entre Processos
Comunicaçã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
Threads
Threads
Conceitos Básicos
Conceitos 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 si
interagir com o sistema e entre si
✔
Um processo pode ser composto por várias threads
Um processo pode ser composto por várias threads
✔
Cada processo possui seu próprio conjunto de recursos
Cada 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 individualizados
de recursos, podem possuir recursos individualizados
Threads
Threads
Modelo Clássico
Modelo Clássico
:
:
✔
para cada processo há um e somente uma thread
para cada processo há um e somente uma thread
✔
neste caso a thread e o processo são a mesma entidade
neste caso a thread e o processo são a mesma entidade
Processo 1 Processo 2 Processo 3
Threads
Threads
Modelo Atual
Modelo Atual
:
:
✔
um processo pode ser composto de uma ou várias threads
um 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 pilha
Processo 1 Processo 2 Processo 3
Unidade III: Gerência de Processos
Unidade 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 Processos
Comunicaçã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
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
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
Regiões Críticas :
Regiões Críticas :
Parte do código que leva às condições de corrida
Parte 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 tempo
ao mesmo tempo
Os mecanismos de controle devem
Os 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 processadores
processos 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
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 recurso
acessem 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-lo
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ítica
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 1
atualiza-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ítica
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 (); }
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=2 int 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 ); }
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 nulo
memó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; RET enter_region ENDP leave_region PROC mov lock, #0; ret; leav_region ENDP
Sem Espera Ocupada :
Sem Espera Ocupada :
Evita que o loop de espera
Evita que o loop de espera
Problema de inversão de prioridade
Problema 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âmica
Solução utiliza política de prioridade dinâmica
●Processo na RC deve ter a maior prioridade
Processo 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
Sem Espera Ocupada :
Sem Espera Ocupada :
Sleep e Wakeup
Sleep 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 wakeup
recebe 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 recebeu
Sem Espera Ocupada :
Sem Espera Ocupada :
Semáforo
Semá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 TSL
Sem Espera Ocupada :
Sem Espera Ocupada :
Semáforo
Semá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
Sem Espera Ocupada :
Sem Espera Ocupada :
Semáforo
Semáforo
program exemplo_semaforo var ativo : semaphore;
procedure processo_um; begin while true do begin algumas_funcoes_um down (ativo) regiao_critica_um up (ativo) outras_funcoes_um end end; procedure processo_dois; begin while true do begin algumas_funcoes_dois down (ativo) regiao_critica_dois up (ativo) outras_funcoes_dois end end; begin inicializa_semaforo (ativo, 1); parbegin processo_um; processo_dois parend end.
Sem Espera Ocupada :
Sem Espera Ocupada :
Contadores de Evento
Contadores 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
Sem Espera Ocupada :
Sem Espera Ocupada :
Monitores
Monitores
✔ 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
Sem Espera Ocupada :
Sem Espera Ocupada :
Monitores
Monitores
✔ 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;