Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008...

34
Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 1 de 34 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 – [email protected] Professor: Luis Rodrigo – [email protected]

Transcript of Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008...

Page 1: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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]

Page 2: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 3: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 4: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

Curso de Sistemas OperacionaisPetrópolis 13 de Maio de 2008

Página: 4 de 34

Escalonamento :Escalonamento :

Rodando

ProntoBloqueado

Escalonamento/Escalonador

Page 5: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 6: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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)

Page 7: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 8: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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)

Page 9: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

+

-

Page 10: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 11: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 12: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 13: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 14: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 15: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 16: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 17: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 18: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 19: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 20: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 21: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 22: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 23: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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 ();}

Page 24: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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 );

}

Page 25: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 26: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 27: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 28: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 29: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 30: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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.

Page 31: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 32: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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

Page 33: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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;

Page 34: Sistemas Operacionais - LNCC · Curso de Sistemas Operacionais Petrópolis 13 de Maio de 2008 Página: 3 de 34 Escalonamento : Escalonamento (schedulling): Conjunto de Regras utilizada

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