Cristiano	
  Pires	
  Martins




                                                      Parte 2

terça-feira, 13 de março de 12
Exclusão	
  Mútua	
  com	
  Espera	
  
     Ociosa
      — Desabilitando	
  Interrupções;
      — Variáveis	
  de	
  Impedimento;
      — Alternância	
  Obrigatória;
      — Solução	
  de	
  Peterson;
      — A	
  instrução	
  TSL;




terça-feira, 13 de março de 12
Desabilitando	
  Interrupções
      — É	
  a	
  solução	
  mais	
  simples:	
  cada	
  processo	
  desabilita	
  
         todas	
  as	
  interrupções	
  logo	
  depois	
  de	
  entrar	
  na	
  
         região	
  crítica	
  e	
  reabilita-­‐se	
  imediatamente	
  antes	
  
         de	
  sair	
  dela;
      — Não	
  é	
  interessante	
  porque	
  não	
  é	
  prudente	
  dar	
  aos	
  
         processos	
  dos	
  usuários	
  o	
  poder	
  de	
  desligar	
  
         interrupções;
      — É	
  uma	
  técnica	
  bastante	
  útil	
  dentro	
  do	
  próprio	
  SO,	
  
         mas	
  inadequada	
  como	
  um	
  mecanismo	
  geral	
  de	
  
         exclusão	
  mútua	
  para	
  processos	
  de	
  usuário.
terça-feira, 13 de março de 12
Variáveis	
  de	
  Impedimento
      — Solução	
  de	
  Software;
      — Há	
  uma	
  única	
  variável	
  compartilhada	
  entre	
  os	
  
         dois	
  processos	
  (lock),	
  contendo	
  o	
  valor	
  0;
      — Se	
  lock	
  for	
  0,	
  o	
  processo	
  altera	
  essa	
  variável	
  para	
  1	
  
         e	
  entra	
  na	
  região;
      — Se	
  lock	
  já	
  estiver	
  com	
  o	
  valor	
  1,	
  o	
  processo	
  
         simplesmente	
  aguardará	
  até	
  que	
  ela	
  se	
  torne	
  0;
      — Só	
  que	
  essa	
  técnica	
  apresenta	
  uma	
  falha	
  como	
  
         diretório	
  de	
  spool.

terça-feira, 13 de março de 12
Alternância	
  Obrigatória
      — Contém	
  uma	
  variável	
  inteira,	
  inicialmente	
  com	
  0,	
  
         serve	
  para	
  controlar	
  a	
  vez	
  de	
  quem	
  entra	
  na	
  região	
  
         crítica	
  e	
  verifica	
  ou	
  atualiza	
  a	
  memória	
  
         compartilhada;
      — Testar	
  continuamente	
  um	
  variável	
  até	
  que	
  um	
  
         valor	
  apareça	
  é	
  chamado	
  de	
  espera	
  ociosa.	
  Isso	
  
         deveria	
  ser	
  evitado	
  (gasta	
  tempo	
  de	
  CPU);
      — A	
  variável	
  de	
  impedimento	
  que	
  usa	
  espera	
  ociosa	
  
         é	
  chamada	
  de	
  spin	
  lock.

terça-feira, 13 de março de 12
Alternância Obrigatória




     Solução proposta para o problema da região crítica
                                 (a) Processo 0.   (b) Processo 1.

     33

terça-feira, 13 de março de 12
Alternância	
  Obrigatória
      — Alternar	
  a	
  vez	
  não	
  é	
  uma	
  boa	
  idéia	
  quando	
  um	
  dos	
  
         processos	
  for	
  	
  muito	
  mais	
  lento	
  que	
  o	
  outro;
      — Essa	
  situação	
  viola	
  a	
  condição	
  3:	
  o	
  processo	
  0	
  está	
  
         sendo	
  bloqueado	
  por	
  um	
  processo	
  que	
  não	
  está	
  na	
  sua	
  
         região	
  crítica.




terça-feira, 13 de março de 12
Solução de Peterson




   Solução de Peterson para implementar exclusão mútua
     35

terça-feira, 13 de março de 12
Instrução	
  TSL
      — Requer	
  um	
  pequeno	
  auxílio	
  do	
  hardware;
      — TSL	
  (Test	
  and	
  Set	
  Lock):	
  teste	
  e	
  atualize	
  variável	
  de	
  
         impedimento;
      — As	
  operações	
  de	
  leitura	
  e	
  armazenamento	
  de	
  uma	
  
         palavra	
  são	
  seguramente	
  indivisíveis;
      — A	
  CPU	
  impede	
  o	
  acesso	
  ao	
  barramento	
  de	
  memória.




terça-feira, 13 de março de 12
Instrução TSL




          Entrando e saindo de uma região crítica usando a
                            instrução TSL
     37

terça-feira, 13 de março de 12
Dormir e Acordar




  Problema do produtor-consumidor com uma condição de disputa fatal
     38

terça-feira, 13 de março de 12
Semáforos




 O problema do produtor-consumidor usando semáforos
     39

terça-feira, 13 de março de 12
Mutexes




               Implementação de mutex_lock e mutex_unlock

Instrução TSL




     40

terça-feira, 13 de março de 12
Monitores (1)




                                 Exemplo de um monitor
     41

terça-feira, 13 de março de 12
Troca de Mensagens




      O problema do produtor-consumidor com N mensagens
     42

terça-feira, 13 de março de 12
Barreiras




          —      Uso de uma barreira
                a) processos se aproximando de uma barreira
                b) todos os processos, exceto um, bloqueados
                   pela barreira
                c) último processo chega, todos passam

     43

terça-feira, 13 de março de 12
Escalonamento
          Introdução ao Escalonamento (1)




     —       Surtos de uso da CPU alternam-se com
              períodos de espera por E/S
            a) um processo orientado à CPU
            b) um processo orientado à E/S
     44

terça-feira, 13 de março de 12
Introdução ao Escalonamento (2)




                Objetivos do algoritmo de escalonamento
     45

terça-feira, 13 de março de 12
Escalonamento em
    Sistemas em Lote (1)




           Um exemplo de escalonamento job mais curto primeiro




     46

terça-feira, 13 de março de 12
Escalonamento em
   Sistemas em Lote (2)




                                 Escalonamento em três níveis
     47

terça-feira, 13 de março de 12
Escalonamento em
Sistemas Interativos (1)




  —       Escalonamento por alternância circular (round-
           robin)
          a) lista de processos executáveis
          b) lista de processos executáveis depois que B usou todo
             o seu quantum
     48

terça-feira, 13 de março de 12
Escalonamento em
Sistemas Interativos (2)




    Um algoritmo de escalonamento com quatro classes
                       de prioridade
     49

terça-feira, 13 de março de 12
Próximo	
  Processo	
  Mais	
  Curto




                                            23

terça-feira, 13 de março de 12
Escalonamento	
  GaranHdo




                                 24

terça-feira, 13 de março de 12
Escalonamento em
                                           Sistemas de Tempo-Real
                            Sistema de tempo-real escalonável
                            •  Dados
                                 –  m eventos periódicos
                                 –  evento i ocorre dentro do período Pi e
                                    requer Ci segundos
                            •  Então a carga poderá ser tratada
                               somente se m
                                                      Ci
                                                 ∑ P ≤1
                                                 i =1  i
                            Pearson Education              Sistemas Operacionais Modernos – 2ª Edição   33




                                                                                                             25

terça-feira, 13 de março de 12

Aula 02-processos-e-threads-tanenbaum-parte-2

  • 1.
    Cristiano  Pires  Martins Parte 2 terça-feira, 13 de março de 12
  • 2.
    Exclusão  Mútua  com  Espera   Ociosa — Desabilitando  Interrupções; — Variáveis  de  Impedimento; — Alternância  Obrigatória; — Solução  de  Peterson; — A  instrução  TSL; terça-feira, 13 de março de 12
  • 3.
    Desabilitando  Interrupções — É  a  solução  mais  simples:  cada  processo  desabilita   todas  as  interrupções  logo  depois  de  entrar  na   região  crítica  e  reabilita-­‐se  imediatamente  antes   de  sair  dela; — Não  é  interessante  porque  não  é  prudente  dar  aos   processos  dos  usuários  o  poder  de  desligar   interrupções; — É  uma  técnica  bastante  útil  dentro  do  próprio  SO,   mas  inadequada  como  um  mecanismo  geral  de   exclusão  mútua  para  processos  de  usuário. terça-feira, 13 de março de 12
  • 4.
    Variáveis  de  Impedimento — Solução  de  Software; — Há  uma  única  variável  compartilhada  entre  os   dois  processos  (lock),  contendo  o  valor  0; — Se  lock  for  0,  o  processo  altera  essa  variável  para  1   e  entra  na  região; — Se  lock  já  estiver  com  o  valor  1,  o  processo   simplesmente  aguardará  até  que  ela  se  torne  0; — Só  que  essa  técnica  apresenta  uma  falha  como   diretório  de  spool. terça-feira, 13 de março de 12
  • 5.
    Alternância  Obrigatória — Contém  uma  variável  inteira,  inicialmente  com  0,   serve  para  controlar  a  vez  de  quem  entra  na  região   crítica  e  verifica  ou  atualiza  a  memória   compartilhada; — Testar  continuamente  um  variável  até  que  um   valor  apareça  é  chamado  de  espera  ociosa.  Isso   deveria  ser  evitado  (gasta  tempo  de  CPU); — A  variável  de  impedimento  que  usa  espera  ociosa   é  chamada  de  spin  lock. terça-feira, 13 de março de 12
  • 6.
    Alternância Obrigatória Solução proposta para o problema da região crítica (a) Processo 0. (b) Processo 1. 33 terça-feira, 13 de março de 12
  • 7.
    Alternância  Obrigatória — Alternar  a  vez  não  é  uma  boa  idéia  quando  um  dos   processos  for    muito  mais  lento  que  o  outro; — Essa  situação  viola  a  condição  3:  o  processo  0  está   sendo  bloqueado  por  um  processo  que  não  está  na  sua   região  crítica. terça-feira, 13 de março de 12
  • 8.
    Solução de Peterson Solução de Peterson para implementar exclusão mútua 35 terça-feira, 13 de março de 12
  • 9.
    Instrução  TSL — Requer  um  pequeno  auxílio  do  hardware; — TSL  (Test  and  Set  Lock):  teste  e  atualize  variável  de   impedimento; — As  operações  de  leitura  e  armazenamento  de  uma   palavra  são  seguramente  indivisíveis; — A  CPU  impede  o  acesso  ao  barramento  de  memória. terça-feira, 13 de março de 12
  • 10.
    Instrução TSL Entrando e saindo de uma região crítica usando a instrução TSL 37 terça-feira, 13 de março de 12
  • 11.
    Dormir e Acordar Problema do produtor-consumidor com uma condição de disputa fatal 38 terça-feira, 13 de março de 12
  • 12.
    Semáforos O problemado produtor-consumidor usando semáforos 39 terça-feira, 13 de março de 12
  • 13.
    Mutexes Implementação de mutex_lock e mutex_unlock Instrução TSL 40 terça-feira, 13 de março de 12
  • 14.
    Monitores (1) Exemplo de um monitor 41 terça-feira, 13 de março de 12
  • 15.
    Troca de Mensagens O problema do produtor-consumidor com N mensagens 42 terça-feira, 13 de março de 12
  • 16.
    Barreiras — Uso de uma barreira a) processos se aproximando de uma barreira b) todos os processos, exceto um, bloqueados pela barreira c) último processo chega, todos passam 43 terça-feira, 13 de março de 12
  • 17.
    Escalonamento Introdução ao Escalonamento (1) — Surtos de uso da CPU alternam-se com períodos de espera por E/S a) um processo orientado à CPU b) um processo orientado à E/S 44 terça-feira, 13 de março de 12
  • 18.
    Introdução ao Escalonamento(2) Objetivos do algoritmo de escalonamento 45 terça-feira, 13 de março de 12
  • 19.
    Escalonamento em Sistemas em Lote (1) Um exemplo de escalonamento job mais curto primeiro 46 terça-feira, 13 de março de 12
  • 20.
    Escalonamento em Sistemas em Lote (2) Escalonamento em três níveis 47 terça-feira, 13 de março de 12
  • 21.
    Escalonamento em Sistemas Interativos(1) — Escalonamento por alternância circular (round- robin) a) lista de processos executáveis b) lista de processos executáveis depois que B usou todo o seu quantum 48 terça-feira, 13 de março de 12
  • 22.
    Escalonamento em Sistemas Interativos(2) Um algoritmo de escalonamento com quatro classes de prioridade 49 terça-feira, 13 de março de 12
  • 23.
    Próximo  Processo  Mais  Curto 23 terça-feira, 13 de março de 12
  • 24.
    Escalonamento  GaranHdo 24 terça-feira, 13 de março de 12
  • 25.
    Escalonamento em Sistemas de Tempo-Real Sistema de tempo-real escalonável •  Dados –  m eventos periódicos –  evento i ocorre dentro do período Pi e requer Ci segundos •  Então a carga poderá ser tratada somente se m Ci ∑ P ≤1 i =1 i Pearson Education Sistemas Operacionais Modernos – 2ª Edição 33 25 terça-feira, 13 de março de 12