• Nenhum resultado encontrado

Unidade III Gerência de Processos

N/A
N/A
Protected

Academic year: 2021

Share "Unidade III Gerência de Processos"

Copied!
34
0
0

Texto

(1)

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

(2)

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

(3)

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

(4)

Escalonamento :

Escalonamento :

Rodando Pronto Bloqueado Escalonamento/Escalonador

(5)

Escalonamento :

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

(6)

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.

(7)

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

(8)

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)

(9)

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 +

(10)

-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

(11)

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

(12)

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útuaConcorrência e Sincronização de ProcessosConcorrência e Sincronização de Processos

(13)

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

(14)

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

(15)

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

(16)

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útuaConcorrência e Sincronização de ProcessosConcorrência e Sincronização de Processos

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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.

(31)

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

(32)

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

(33)

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;

(34)

lrodrigo@lncc.br

lrodrigo@lncc.br

http://lrodrigo.lncc.br

Referências

Documentos relacionados

Perante o imobilismo dos Estados, a DAV – com o apoio do Ministério Federal da Justiça da Alemanha – promoveu a discussão entre os advogados europeus, com o

Por mil chaminés e carros Caseados à prestação Porém com todo defeito Te carrego no meu peito São, São Paulo quanta dor São, São Paulo meu amor Salvai-nos por caridade

Trata-se da proposição teórico-metodológico para operacionalizar as categorias do método dialético na práxis educativa pela Metodologia da Mediação Dialética..

São realizados investimentos por parte das instituições financeiras para tornar o negócio digital e quando chega o momento do cliente transacionar no internet

O Projeto “Tenha um Pingo de Consciência” foi realizado na Escola Estadual Raul Soares, com cerca de 50 alunos participantes do Projeto Educação em Tempo Integral

Tabela de medidas: todas as medidas especificadas na tabela de medida em anexo se referem à peça pronta, já tendo recebido a 1ª lavagem caso haja diferença na peça

Mestrado em: Nutrição Humana ou Nutrição Clínica ou Saúde Coletiva ou Ciências da Saúde ou Ciências ou Saúde ou Alimentos e Nutrição e Desenvolvimento na

DANIELE CRISTINA DIAS PEREIRA, ESTADO CIVIL SOLTEIRA, PROFISSÃO ADMINISTRADORA, NASCIDA EM SÃO PAULO, SP NO DIA (21/01/1988), RESIDENTE E DOMICILIADA EM SÃO PAULO, SP, FILHA DE