sistemas operacionais - lrodrigo.sgs.lncc.br · curso de sistemas operacionais petrópolis 22 de...
TRANSCRIPT
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 1 de 55
Sistemas OperacionaisSistemas OperacionaisUnidade II – Gerência de ProcessosUnidade II – Gerência de Processos
http://www.lncc.br/~lrodrigohttp://www.lncc.br/~lrodrigo
Professor: Luís Rodrigo – [email protected]: Luís Rodrigo – [email protected]
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 2 de 55
Conceito de Processo :Conceito de Processo :
✔ Em um Em um ambiente multitarefa, o que está sendo executando
no processador muda constantemente
✔ Dando a impressão de que a máquina está a disposição de
somente aquele usuário/tarefa.
✔ A esses “pedaços” de programas/tarefas ora estão:
1. Sendo executados pela CPU
2. Fazendo acesso de E/S
3. Aguardando para execução na CPU
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 3 de 55
Conceito de Processo :Conceito de Processo :
✔ Ou seja: estes vários “pedaços” de código “disputam” os
recursos (CPU, E/S, memória)
✔ Logo, um “processo” é a representação de cada “pedaço”
de programa/tarefa que acessa concorrente aos recursos do
sistema.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 4 de 55
Conceito de Processo :Conceito de Processo :
✔ Ao deixar a CPU o estado atual do processo tem que ser
salvo, de forma a retornar sua execução como se não
tivesse sido interrompido.
✔ O estado completo define o ambiente de execução
✔ Um processo é o ambiente:
➢ Onde se executa um programa;
➢ Que mantem a estrutura contendo as informações
necessárias para a execução.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 5 de 55
Materialização do Processo :Materialização do Processo :
✔ PCB (Process Control Block) ou
TCB (task control block)
✔ Define o ambiente completo de execução de cada
processo
✔ Materializam o conceito de processo
✔ Contém todos os detalhes necessários para definição do
processo.
✔ Varia de S.O. para S.O.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 6 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
✔ A PCB, pode ser decomposta em:
1. ponteiro para outro(s) elementos
2. endereço inicial de memória e tamanho,
3. nome e estado do processo
4. usuário que o criou, grupo de usuário
5. registradores (PC, SP, etc.) e a pilha
6. Prioridade e classe de escalonamento
7. lista de arquivos abertos
8. quando o processo foi iniciado
9. tempo acumulado de execução, etc.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 7 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
✔ Os elementos da PCB podem ser divididos em 3 grupos:
1. Contexto de Hardware
2. Contexto de Software
3. Espaço de Endereçamento
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 8 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Contexto de Hardware:
✔ É aquele copiado para o hardware (CPU)
✔ Basicamente são os registradores:
1. PC (endereço da próxima instrução)
2. SP (stack pointer, topo da pilha)
3. Registrador de estado (PSW).
✔ Toda a pilha contendo os pontos de retorno das funções
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 9 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Contexto de Software:
✔ Características que vão influir na execução.
✔ Define 3 grupos de informações :
1. Identificação
2. Cotas
3. Privilégios
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 10 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Contexto de Software - Identificação:
✔ Todo processo recebe uma identificação uníca
✔ PID (Process IDentification = identificação do processo).
✔ Redebe a identificação do usuário (UID) que o criou
✔ A identificação do grupo de usuários (GID) aos quais é
permitido o acesso a arquivos, processos, etc.
✔ GID e UID estão relacionado ao modelo de segurança
✔ Identificação do processo “pai” PPID (Parent Process
IDentification), para que o filho possa retornar ao pai.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 11 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Contexto de Software - Cotas:
✔ Define os limites de utilização dos recurso
✔ Determinados durante a criação do processo.
✔ Basicamente são:
1. Número máximo de arquivos abertos
2. Quantidade máxima de memória que pode alocar
3. Quantidade máxima de operações de E/S pendentes
4. Tamanho máximo de buffers para o acesso de E/S
5. Quantidade máxima de subprocessos
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 12 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Contexto de Software - Privilégios:
✔ O que o processo pode ou não fazer em relação ao
sistema e aos outros processos.
✔ Básicamente associado à:
✔ Segurança
✔ Operação do Sistema
✔ Gerência do Sistema.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 13 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Espaço de Endereçamento:
✔ A área da memória onde reside o processo.
✔ Carregados em endereços adjacentes, da seguinte forma:
1.Bloco de instruções
2.Bloco de dados que serão utilizados pelo programa.
3.Pilha de dados/execução.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 14 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Troca de contextos:
✔ Intervalo de tempo varia, com as especificações do
hardware, basicamente:
✔ Tamanho da memória
✔ número de registradores
✔ e velocidade da CPU.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 15 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Troca de contextos:
✔ Pode produzir um gargalo (bottleneck)
✔ Possível solução para esse problema: threads.
✔ Que visa diminuir o tempo gasto na criação/eliminação
de um PCB para cada subprocesso.
✔ Threads compartilham o mesmo espaço de
endereçamento
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 16 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Estado do Processo:
✔ A quantidade e os nomes podem variar
✔ Tipos Clássicos:
1. Pronto (Read)
2. Executando (Runnig)
3. Bloqueado (Wait)
✔ Processos organizados em listas encadeadas
✔ As listas podem ser baseadas em prioridades
✔ O término do processo requer uma chamada de sistema,
que o remove da lista e desaloque o seu PCB.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 17 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Mudança de Estado:
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 18 de 55
Materialização do Processo e a PCB :Materialização do Processo e a PCB :
Tipo de Processo:
✔ CPU-bound (ligado à CPU)
✔ maior parte do tempo no estado de execução
✔ realiza poucas operações de E/S.
✔ I/O-bound (ligado à E/S)
✔ maior parte do tempo no estado de espera
✔ elevado número de operações de E/S.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 19 de 55
Escalonamento :Escalonamento :
Escalonameto Escalonameto
de Processosde Processos
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 20 de 55
Escalonamento :Escalonamento :
✔ Escalonamento (schedulling):Escalonamento (schedulling):✔ Conjunto de Conjunto de regrasregras utilizada pelo S.O. utilizada pelo S.O.
✔ Define Define ordemordem e o mecanismos de execução do proc. e o mecanismos de execução do proc.
✔ Escalonador:Escalonador:✔ Componente do Componente do KernelKernel responsável pelo escalonamento; responsável pelo escalonamento;
✔ Deve impedir o “Deve impedir o “StarvationStarvation””
✔ Fatores relevantes:Fatores relevantes:
✔ utilizaçãoutilização da CPU da CPU
✔ throughputthroughput
✔ turnaroundturnaround
✔ tempo de respostatempo de resposta
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 21 de 55
Escalonamento :Escalonamento :
Rodando
ProntoBloqueado
Escalonamento/Escalonador
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 22 de 55
Escalonamento :Escalonamento :
Tipos de EscalonamentoTipos de Escalonamento
✔ Não PreemptivoNão Preemptivo::
✔ Ocorre devido eventos voluntáriosOcorre devido eventos voluntários
✔ Processo solicita a saída da CPUProcesso solicita a saída da CPU
✔ Não existe a figura de um escalonadorNão existe a figura de um escalonador
✔ PreemptivoPreemptivo::
✔ eventos não voluntárioseventos não voluntários
✔ escalonador pode interromper os processosescalonador pode interromper os processos
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 23 de 55
Escalonamento :Escalonamento :
Escalonamento não PreemptivoEscalonamento não Preemptivo
✔ Geralmente usam uma Geralmente usam uma únicaúnica fila de processo fila de processo
✔ Classificações:Classificações:
✔ FIFOFIFO – First-in-first-out – First-in-first-out
✔ SJFSJF – Shortest-jof-first – Shortest-jof-first
✔ CooperativoCooperativo
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 24 de 55
Escalonamento :Escalonamento :
FIFO – First-in-first-outFIFO – First-in-first-out
✔ Primeiro Primeiro procproc a chegar é o primeiro a ser atendido a chegar é o primeiro a ser atendido
✔ Não há prioridadeNão há prioridade
✔ Processos CPU-Bound (menor prioridade) Processos CPU-Bound (menor prioridade)
prejudicam os processos IO-Bound (maior prioridade)prejudicam os processos IO-Bound (maior prioridade)
SJF - Shortest-jof-first:SJF - Shortest-jof-first:
✔ Menor tempo de execução é tratado primeiroMenor tempo de execução é tratado primeiro
✔ Difícil determinar o tempo para a conclusão do Difícil determinar o tempo para a conclusão do
processoprocesso
✔ Não priorizam os processos IO-BoundNão priorizam os processos IO-Bound
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 25 de 55
Escalonamento :Escalonamento :
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 22 de Setembro de 2008
Página: 26 de 55
Escalonamento :Escalonamento :
Escalonamento PreemptivoEscalonamento Preemptivo
✔ Ação de eventos voluntários e involuntáriosAção de eventos voluntários e involuntários
✔ Circular – Round RobinCircular – Round Robin
✔ Fila de pronto Fila de pronto únicaúnica
✔ Atendidos pela Atendidos pela ordem de chegadaordem de chegada
✔ Preempção por Preempção por tempotempo
✔ Uso de Uso de time-slicetime-slice ( (quantumquantum))
Rodando
Bloqueado
A | B | C | D | EPronto
Preempção p/Tempo
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 27 de 55
Escalonamento :Escalonamento :
Por PrioridadePor Prioridade✔ Fila de pronto Fila de pronto únicaúnica
✔ Prioridade: Prioridade:
✔ definida pelo SOdefinida pelo SO
✔ estática ou dinâmicaestática ou dinâmica
✔ Prioridade Prioridade dinâmicadinâmica pode ser usada para compensar os pode ser usada para compensar os
processos que ficam na fila de pronto (fila de espera pela processos que ficam na fila de pronto (fila de espera pela
CPU)CPU)
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 28 de 55
Escalonamento :Escalonamento :
Por PrioridadePor Prioridade✔ Ao final do Ao final do time slicetime slice / / inícioinício do escalonamento: do escalonamento:
✔ Arruma a lista de processosArruma a lista de processos
✔ Se Se 1º1º processo da fila de pronto possui prioridade processo da fila de pronto possui prioridade
maior ou igualmaior ou igual ao que está sendo executado ao que está sendo executado
✔ Então ocorre o escalonamentoEntão ocorre o escalonamento
✔ Senão processo que está sendo executado continua Senão processo que está sendo executado continua
por mais um time-slice;por mais um time-slice;
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 29 de 55
Escalonamento :Escalonamento :
Por múltiplas filas (prioridade estática)Por múltiplas filas (prioridade estática)
✔ VáriasVárias filas de pronto; 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
✔ Ganha a CPU quando não há outro de maior prioridadeGanha a CPU quando não há outro 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 22 de Setembro de 2008
Página: 30 de 55
Escalonamento :Escalonamento :
Com múltiplas filas e com realimentaçãoCom 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
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 31 de 55
Escalonamento :Escalonamento :
Com múltiplas filas e com realimentaçãoCom múltiplas filas e com realimentação✔ Mecanismo adaptativo :Mecanismo adaptativo :
✔ Processo é colocado no final da fila de Processo é colocado no final da fila de > prioridade> prioridade
✔ Na preempção por Na preempção por prioridadeprioridade ou pelo ou pelo S.O.S.O., o processo , o processo
volta ao final da volta ao final da fila de origemfila de origem (prioridade (prioridade nn))
✔ Na preempção por Na preempção por tempotempo processo vai para o final da sila processo vai para o final da sila
de prioridade “de prioridade “n-1n-1””
✔ Quando volta da fila de Quando volta da fila de bloqueadosbloqueados ganha prioridade ganha prioridade
““n+1n+1””
✔ QuantoQuanto maior a prioridade menor o time-slice maior a prioridade menor o time-slice
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 32 de 55
Escalonamento :Escalonamento :
Tempo realTempo real✔ Prioridade EstáticaPrioridade Estática
Com multiplos processadoresCom multiplos processadores✔ Sistema fortemente acopladoSistema fortemente acoplado (memória compartilhada) (memória compartilhada)
Fila únicaFila única
Escalonado para o primeiro processador livreEscalonado para o primeiro processador livre
✔ Sistema fracamente acopladoSistema fracamente acoplado (memória distribuída) (memória distribuída)
cada processador usa seu próprio algoritmocada processador usa seu próprio algoritmo
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 33 de 55
Gerência de Processos :Gerência de Processos :
ThreadThread
(PWL)(PWL)
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 34 de 55
Threads Threads
Conceitos Básicos:Conceitos Básicos:✔ Assim como os processos, são Assim como os processos, são elementos ativoselementos ativos que que
podem podem interagirinteragir com o com o sistemasistema e entre e entre sisi
✔ Um Um processoprocesso pode ser composto por pode ser composto por várias threadsvárias threads
✔ Cada Cada processoprocesso possui seu próprio possui seu próprio conjuntoconjunto de recursos de recursos
✔ As As threadsthreads de um processo de um processo compartilhamcompartilham um um mesmo mesmo
conjuntoconjunto de recursos, podem possuir recursos de recursos, podem possuir recursos
individualizadosindividualizados
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 35 de 55
Threads Threads
Modelo Clássico:Modelo Clássico:✔ para cada processo há para cada processo há umauma e somente uma e somente uma threadthread
✔ 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 22 de Setembro de 2008
Página: 36 de 55
Threads Threads
Modelo Atual:Modelo Atual:✔ um processo pode ser composto de um processo pode ser composto de uma ou váriasuma ou várias threads 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
Threads
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 37 de 55
Gerência de Processos :Gerência de Processos :
ComunicaçãoComunicação
entre Processosentre Processos
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 38 de 55
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
✔ Message Passing Interface (Message Passing Interface (MPIMPI) )
✔ Recursos que o S.O. deveria fornecer:Recursos que o S.O. deveria fornecer:✔ Mecanismos de Mecanismos de SincronizaçãoSincronização
✔ Mecanismos de Mecanismos de ComunicaçãoComunicação
✔ Memória CompartilhadaMemória Compartilhada
✔ Troca de MensagensTroca de Mensagens
✔ SerializaçãoSerialização / / sequencializaçãosequencialização
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 39 de 55
Condições de Corrida :Condições de Corrida :
✔ 2 ou + processos tentam usar o mesmo recurso2 ou + processos tentam usar o mesmo recurso: :
✔arquivosarquivos em disco em disco
✔variáveisvariáveis compartilhadas compartilhadas
✔spoolspool de impressão de impressão
✔ Ordem no acesso pode alterar o resultado finalOrdem no acesso pode alterar o 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 22 de Setembro de 2008
Página: 40 de 55
Regiões Críticas :Regiões Críticas :
✔ Região do código que leva às condições de corrida Região do código que leva às condições de corrida
✔ Foram definidos mecanismos que Foram definidos mecanismos que impedemimpedem a entrada a entrada
de 2 ou + processos em uma de 2 ou + processos em uma R.C.R.C. ao ao mesmo tempomesmo tempo
✔ Os mecanismos de controle devemOs mecanismos de controle devem
✔Permitir a entrada de Permitir a entrada de apenas umapenas um processo na RC processo na RC
✔Não deve-se fazer consideração quanto a Não deve-se fazer consideração quanto a velocidadevelocidade de de
execução dos processos e processadoresexecução dos processos e processadores
✔Processos Processos fora da RCfora da RC não podem não podem bloquearbloquear processos processos
dentro da RCdentro da RC
✔Nenhum processo pode Nenhum processo pode esperar indefinidamenteesperar indefinidamente para para
entrar na RCentrar na RC
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 41 de 55
Exclusão mútua :Exclusão mútua :
✔ Duas formas para evitar as Duas formas para evitar as C.C.C.C.s e proteger as s e proteger as R.C.R.C.s:s:✔ Exclusão Mútua Exclusão Mútua comcom espera ocupada espera ocupada
✔ Exclusão Mútua Exclusão Mútua semsem espera ocupada espera ocupada
✔ Deve impedir que processos concorrentes acessem ao Deve impedir que processos concorrentes acessem ao
mesmo tempo um determinado recurso mesmo tempo um determinado recurso (Bloqueio)(Bloqueio)
✔ Esperar o encerramento da operação sobre o recurso Esperar o encerramento da operação sobre o recurso
antes de utiliza-lo antes de utiliza-lo (Liberação)(Liberação)
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 42 de 55
Com espera ocupada :Com espera ocupada :
Inibição de Interrupções:Inibição de Interrupções:✔ desabilitardesabilitar todas as todas as interrupçõesinterrupções ao entrar na região crítica ao entrar na região crítica
✔ inclusive interrupção do inclusive interrupção do clockclock
✔ só funciona em máquinas só funciona em máquinas monoprocessadasmonoprocessadas
✔ pode causar pode causar D.O.S.D.O.S., caso as interrupções continuem , caso as interrupções continuem
desativadas ao finalizar a região críticadesativadas ao finalizar a região crítica
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 43 de 55
Espera Ocupada :Espera Ocupada :
Variáveis de travamento:Variáveis de travamento:✔ variável variável compartilhadacompartilhada, que pode assumir , que pode assumir 00 ou ou 11
✔ quando quando 0,0, processo pode entrar na RC processo pode entrar na RC
✔ falhafalha quando: quando:
(I) um processo (I) um processo obtém o valorobtém o valor 0 0 mas nãomas não tem tempo para tem tempo para
atualizaatualiza-lo para 1-lo para 1
(ii) o processo (ii) o processo não alteranão altera seu valor seu valor para 0para 0 ao sair da R.C. ao sair da R.C.
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 44 de 55
Espera Ocupada :Espera Ocupada :
Escrita alternada:Escrita alternada:✔ TURNTURN - Variável inteira - Variável inteira compartilhadacompartilhada
✔ O valor contido na variável define de quem é a vez de O valor contido na variável define de quem é a vez de
entrar na RCentrar na RC
✔ Realiza um Realiza um teste contínuoteste contínuo sobre o valor da variável 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 22 de Setembro de 2008
Página: 45 de 55
Espera Ocupada :Espera Ocupada :
Solução de Peterson:Solução de Peterson:✔ Duas Variáveis: Duas Variáveis: travamento e intençãotravamento e intenção
✔ Duas Funções: Duas Funções:
✔ enterRegionenterRegion (int proc) (int proc)
✔ leaveRegionleaveRegion (int proc) (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 22 de Setembro de 2008
Página: 46 de 55
Espera Ocupada :Espera Ocupada :
Instruções TSL:Instruções TSL:✔ Test and Set LockTest and Set Lock (instrução atômica) (instrução atômica)
✔ Transfere o conteúdo Transfere o conteúdo da memória para o contadorda memória para o contador e e
armazena na memória um valor não nuloarmazena na memória um valor não nulo
✔ DesabilitaDesabilita acesso a memória aos demais processadores acesso a memória aos demais processadores
✔ Evita a Evita a chegada de interrupçõeschegada de interrupções no meio da atualização no meio da atualização
✔ Suportado apenas em Suportado apenas em AssemblyAssembly
✔ Falha quando o processo que está na RC é Falha quando o processo que está na RC é abortadoabortado
enter_region PROC_loop: TSL register, lock; CMP register,0; JNE _loop; RETenter_region ENDP
leave_region PROC mov lock, #0; ret;leav_region ENDP
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 47 de 55
Sem Espera Ocupada :Sem Espera Ocupada :
✔ NãoNão há perda de ciclos no loop de espera há perda de ciclos no loop de espera
✔ InversãoInversão de prioridade de prioridade✔ processo “processo “HH” com alta prioridade e ” com alta prioridade e forafora da da RCRC, , impedeimpede que que
o processo “o processo “LL” com baixa prioridade rode e execute a ” com baixa prioridade rode e execute a RCRC
✔ Pode gerar um Pode gerar um DeadlockDeadlock (abraço mortal) (abraço mortal)
✔ Solução utiliza política de Solução utiliza política de prioridade dinâmicaprioridade dinâmica
✔ Processo na RC deve ter a Processo na RC deve ter a maior prioridademaior 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 22 de Setembro de 2008
Página: 48 de 55
Sem Espera Ocupada :Sem Espera Ocupada :
Sleep e WakeupSleep e Wakeup✔ sleep ()sleep () : coloca o processo para dormir (fila de bloqueado) : coloca o processo para dormir (fila de bloqueado)
✔ wakeup (proc)wakeup (proc) : acorda o processo que estava na fila de : acorda o processo que estava na fila de
bloqueadobloqueado
✔ FalhaFalha quando um processo que ainda quando um processo que ainda não foi para a filanão foi para a fila de de
bloqueados bloqueados receberecebe um sinal de um sinal de wakeupwakeup
✔ Solução:Solução: uso de “n” bits para uso de “n” bits para contar a quantidadecontar a quantidade de de
wakeups que um processo recebeuwakeups que um processo recebeu
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 49 de 55
Sem Espera Ocupada :Sem Espera Ocupada :
SemáforoSemáforo✔ Variáveis Variáveis inteiras não negativasinteiras não negativas protegidas protegidas
✔ Valor Valor inicial = 0inicial = 0 → não há sinal armazenado→ não há sinal armazenado
✔ Valores Valores positivospositivos indicam sinais indicam sinais pendentespendentes
✔ Operações AtômicasOperações Atômicas para sincronização de processos: para sincronização de processos:
✔ UPUP : incrementa contador : incrementa contador
✔ DownDown : decrementa contador : decrementa contador
✔ Resolve o problema de Resolve o problema de perda de sinaisperda de sinais
✔ Quando há Quando há mais de ummais de um processador a variável do processador a variável do semáforosemáforo
deve ser deve ser protegidaprotegida por instruções por instruções TSLTSL
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 50 de 55
Sem Espera Ocupada :Sem Espera Ocupada :
SemáforoSemáforo✔ Tipos:Tipos:
✔ BináriosBinários : podem assumir 0 ou 1 : podem assumir 0 ou 1
✔ Contadores e/ou GenéricosContadores e/ou Genéricos : valores inteiro não negativos : valores inteiro não negativos
✔ Código:Có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 22 de Setembro de 2008
Página: 51 de 55
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 22 de Setembro de 2008
Página: 52 de 55
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) read (E) : obtém o valor de “E” : obtém o valor de “E”
✔ advande (E)advande (E) : incrementa o valor de “E” : incrementa o valor de “E”
✔ await (E,N)await (E,N) : espera até que “E” tenha o valor “N” : espera até que “E” tenha o valor “N”
✔ Valores iniciados com Valores iniciados com 00
✔ Valores apenas podem ser Valores apenas podem ser incrementadosincrementados
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 53 de 55
Sem Espera Ocupada :Sem Espera Ocupada :
MonitoresMonitores✔ SimplesSimples de serem utilizados de serem utilizados
✔ ControladosControlados pelo pelo S.OS.O., ele garante que apenas um processo ., ele garante que apenas um processo
está dentro do monitorestá dentro do monitor
✔ Devem ser suportados pelo Devem ser suportados pelo compiladorcompilador
✔ Primitivas de Primitivas de alto nívelalto nível implementadas como: implementadas como:
✔ conjunto de conjunto de procedimentosprocedimentos
✔ estrutura de dados e variáveisestrutura de dados e variáveis
✔ Formam módulos especiais que podem ser chamados pelos Formam módulos especiais que podem ser chamados pelos
processosprocessos
✔ Não podem ser alteradosNão podem ser alterados
Curso de Sistemas OperacionaisPetrópolis 22 de Setembro de 2008
Página: 54 de 55
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 O compiladorcompilador deve deve implementarimplementar a a exclusãoexclusão mútua na mútua na
entrada dos monitores;entrada dos monitores;
✔ Assim como as demais soluções funciona apenas em sistemas Assim como as demais soluções funciona apenas em sistemas
de de memória compartilhadamemória 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 22 de Setembro de 2008
Página: 55 de 55
[email protected]@lncc.brhttp://lrodrigo.lncc.brhttp://lrodrigo.lncc.br