sistemas operacionais técnico em informática professora: michelle nery
TRANSCRIPT
Sistemas Operacionais
Técnico em Informática
Professora: Michelle Nery
Ementa Sistemas Operacionais
Quatro Operações Básicas Gerenciamento de Processos Gerenciamento de Memória Gerenciamento de Dispositivo de Entrada/Saída Gerenciamento de Sistema de Arquivos
Conteúdo Gerenciamento de Processos
Processos Threads Comunicação Interprocessos Escalonamento de Processos Deadlocks
Processos Processos
Em um sistema multiprogramado, a CPU pode saltar de um programa para o outro, dando aos usuários a ilusão de paralelismo, ou pseudo-paralelismo. O verdadeiro paralelismo de hardware dos sistemas
multiprocessadores. A troca entre de processos ocorridos na CPU é
chamada de multiprogramação.
Processos Modelo de Processo
Multiprogramação
a) Quatro programas na memória b) Cada processo está executando em instantes
diferentes e todos eles estão avançando proporcionalmente.
Processos Modelo de Processo
Processo vs. Programa Um processo possui um programa, entrada, saída
e um estado. Exemplo do bolo, calculadora, etc.
Processos Estados de Processos
1. Em execução: Usando a CPU2. Pronto: Executável, temporariamente parada
para dar lugar a outro processo.3. Bloqueado: Incapaz de executar enquanto um
evento externo não ocorrer.
Processos Transições entre os Estados de Processos
1. De Execução p/ Bloqueado: 1. Um processo bloqueia porque está esperando uma
entrada ou recurso ainda não disponível.
2. De Execução p/ Pronto: 2. O processo em execução já teve tempo suficiente de
CPU e é momento de deixar outro processo ocupá-la.
3. De Pronto p/ Execução: 3. Todos os processos já compartilharam a CPU, e é hora
do primeiro processo obter novamente a CPU.
4. De Bloqueado p/ Pronto: 4. Ocorre quando acontece um evento externo pelo qual o
processo estava aguardando (a chegada de alguma entrada).
Threads Cada processo tem seu espaço de
endereçamento e um único thread (fluxo) de controle = processo.
Contudo, é desejável ter múltiplos threads de controle no mesmo espaço de endereçamento executando quase paralelamente, como se fossem processos separados, mas utilizando um mesmo espaço de endereçamento = compartilhado.
Threads Modelo de Thread
a) Três processos, cada um com um thread. b) Um processo com três threads.
Threads Por que usar Thread? Processador de Texto -
Exemplo página 64.
Um processador de texto com 3 threads.
Threads Por que usar Thread? Processador de Texto -
Exemplo página 64. Com três threads:
O primeiro thread interage com o usuário. O segundo thread reformata o documento quando
pedido. O terceiro thread escreve periodicamente o conteúdo
da RAM no disco. Se fossem três processos?
Não funcionaria, pois os três processos precisariam operar sobre o documento.
Atividades2. Quais são os estados de um processo. Explique.
3. Quais são as transições de estado de um processo. Explique.
4. O que são threads?
5. Diferencie thread de processo.
6. Porque usar thread? Explique.
Comunicação InterProcessos A comunicação entre processos acontece por
exemplo, quando um processo necessita da saída de um outro processo para realizar a sua operação e assim prossegue até o fim da linha de comando.
Condição de Disputa Processos que trabalham em conjunto devem
compartilhar um espaço de endereçamento comum.
Dois processos querem ter simultaneamente à memória compartilhada.
Regiões Críticas O que fazer para evitar condições de disputa?
A resposta para evitar esse problema e muitos outros que envolvam memória compartilhada, arquivos compartilhados ou qualquer outra coisa compartilhada é impedir que mais de um processo leia e escreve simultaneamente na memória compartilhada, ou seja exclusão mútua.
Aquela parte do programa que há acesso à memória compartilhada é chamada de região crítica ou seção crítica.
Exclusão Mútua com Espera Ociosa Variáveis de Impedimento (Lock Variable)
Desvantagem: apresentam o defeito de precisar da espera ociosa. Basicamente, elas verificam se a entrada na região crítica é permitida, caso não for, o processo fica em um laço ocioso esperando até a liberação.
Existem algumas primitivas que podem resolver o problema sem gastar tempo de CPU. Uma delas é o par de sleep e wakeup, ou seja,
estado bloqueado e pronto, respectivamente. Exemplo do produtor – consumidor.
O Problema do Produtor-Consumidor Consideremos o problema do produtor-
consumidor. Dois processos compartilhando um buffer comum
e de tamanho fixo. Um dele coloca informação no buffer e o outro, o consumidor, a retira.
O problema se origina quando o produtor quer colocar um novo item no buffer e ele está cheio. A solução é colocar o produtor para dormir e só despertá-lo quando o consumidor remover um ou mais itens. Da mesma maneira, se o consumidor quiser remover um item do buffer e ele estiver vazio, ele dormirá até que o produtor coloque algo no buffer e o desperte.
Atividades1. Quando se dá a necessidade de comunicação entre os
processos? Qual o problema ocasionado?2. O que é região crítica?3. O que é exclusão mútua?4. Quais são as soluções que devemos satisfazer para
chegar a uma boa solução?
Problemas Clássicos de IPC A literatura sobre Sistemas Operacionais está
repleta de problemas interessantes que têm sido amplamente discutidos e analisados a partir de vários métodos de sincronização. Iremos averiguar um desses problemas mais comuns: O Problema do Jantar dos Filósofos.
Problemas Clássicos de IPC O Problema do Jantar dos Filósofos
Em 1965, Dijkstra formulou e resolveu um problema de sincronização que ele chamou de problema do jantar dos filósofos.
Cada um que inventasse uma primitiva de sincronização via-se obrigado a demonstrar até que ponto era maravilhosa a nova primitiva, mostrando com que elegância ela resolvia o problema do jantar dos filósofos.
Nota: A vida de um filósofo consiste em comer e pensar.
Problemas Clássicos de IPC O Problema do Jantar dos Filósofos
Cinco filósofos estão sentados em torno de uma mesa circular. Cada filósofo tem um prato de espaguete. O espaguete está tão
escorregadio que um filósofo precisa de dois garfos para comê-lo. Entre cada par de pratos está um garfo. A vida de um filósofo consiste em alternar períodos de comer e pensar. Quando um filósofo fica com fome, ele tenta pegar os garfos à sua direita e à sua esquerda, um de cada vez, em qualquer ordem. Se conseguir pegar dois garfos, ele comerá durante um
determinado tempo e então colocará os garfos na mesa novamente e continuará a pensar.
Problemas Clássicos de IPC O Problema do Jantar dos Filósofos
Você consegue escrever um programa para cada filósofo que faça o que deve fazer e nunca trave?
Suponha que todos os cinco filósofos resolva usar seus garfos simultaneamente nenhum deles será capaz de pegar o garfo que estiver a sua direita e, assim, ocorrerá um deadlock.
Resolvendo um deadlock: Algoritmo Avestruz O método mais simples é o do algoritmo do
avestruz: enterre sua cabeça na areia e finja que nada está acontecendo.
A maioria dos sistemas operacionais, incluindo Unix e Windows, simplesmente ignora o problema, supondo que a maior parte dos usuários preferiria um deadlock ocasional a uma regra que restrinja o usuário a executar apenas um processo levando mais tempo para recuperar a falha.
Problemas Clássicos de IPC O Problema do Jantar dos Filósofos
Modificações: Depois de pegar o garfo esquerdo, verifique se o garfo direito
está disponível. Se não estiver, o filósofo devolverá o garfo esquerdo à mesa, espera por algum tempo e então repete todo o processo.
Falha: Imagine que todos os filósofos poderiam começar o
algoritmo simultaneamente, pegando seus garfos esquerdos e vendo que seus garfos direitos não estariam disponíveis, devolveriam seus garfos esquerdos, de novo pegariam seus garfos esquerdos simultaneamente, e assim permaneceriam para sempre.
Uma situação como essa - na qual todos os programas continuam executando indefinidamente, mas falham ao tentar progredir - é chamada de inanição (starvation).
Problemas Clássicos de IPC O Problema do Jantar dos Filósofos
Hmmm! "Se os filósofos esperassem por um tempo aleatório, em vez de esperarem por um tempo fixo depois de falharem ao pegar o garfo do lado direito, a probabilidade de tudo continuar travado seria muito pequena". Ok: Redes funcionam assim: se dois computadores
enviam um pacote ao mesmo tempo (levando a uma colisão de pacotes), cada um espera por um tempo aleatório antes de tentar novamente.
Contudo: pense nessa solução no controle de segurança em uma usina de energia nuclear.
Problemas Clássicos de IPC O Problema do Jantar dos Filósofos
Solução: Semáforo nos filósofos Antes de começar a pegar garfos, um filósofo faria um
down no mutex (Tem alguém usando os garfos?). Depois de usar os garfos, ele faria um up no mutex (Já comi, algum de vocês pode comer!).
Falha:de desempenho: Somente um filósofo estaria comendo e poderia haver mais de um filósofo comendo.
Solução: outros estados como comendo, pensando, faminto (tentando pegar o garfo).
Lista de Exercício1. O que é IPC?
2. Explique o problema de sincronização.
3. O que é deadlock?
Escalonamento Quando dois ou mais processos estão
simultaneamente no estado pronto, ou seja, competindo pelo tempo de CPU deverá ser feita uma escolha de qual processo executará.
A parte do sistema operacional que faz a escolha é chamada de escalonador, e o algoritmo que ele usa é o algoritmo de escalonamento.
Muito se tem visto fazer para alcançar algoritmos de escalonamento inteligentes e eficientes.
Escalonamento em Lote FCFS (First Come, First Server) – Primeiro a
Chegar, Primeiro a ser Servido. Há uma fila única de processos prontos. Quando o primeiro job entra no sistema, logo
quando chega, é iniciado imediatamente e autorizado a executar por quanto tempo queira. A medida que chegam os outros jobs, eles são encaminhados para o fim da fila. Quando o processo em execução é bloqueado, o primeiro processo na fila é o próximo a executar. Quando o processo bloqueado fica em estado de pronto, ele é posto no fim da fila.
Escalonamento em Lote FCFS (First Come, First Server) – Primeiro a
Chegar, Primeiro a ser Servido.
E se o processo D chegasse antes que o processo C?
Processo SurtoA 12B 8C 15D 5Tempos
Processo SurtoA 12B 8D 5C 15Tempos
Escalonamento em Lote SJF (Shortest Job First) – Job Mais Curto
Primeiro. Quando vários jobs igualmente importantes
estiverem postados na fila de entrada à espera de serem iniciados, o escalonador escolhe o job mais curto primeiro.
FCFSProcesso Surto
A 12B 8C 15D 5
Tempos SJF
Processo SurtoD 5B 8A 12C 15
Tempos
Escalonamento em Sistemas Interativos Escalonamento de Alternância Circular (Round Robin)
A cada processo é atribuído um intervalo de tempo, o seu quantum, no qual ele é permitido executar. Se, ao final do quantum o processo estiver ainda executando, a CPU
sofrerá preempção e será dada a outro processo. Se o processo foi bloqueado ou terminou antes que o quantum tenha
decorrido, a CPU é alternada para outro processo.
Escalonamento em Sistemas Interativos Escalonamento de Alternância Circular (Round
Robin)RR – Quantum = 5ms
Processo Surto Tempo de Espera Tempo de RetornoA 12 B 8 C 15 D 5 A 7 0 B 3 5 C 10 10 D 0 15 20A 2 22B 3 25C 5 30C 0
Escalonamento em Sistemas Interativos Escalonamento por Prioridade
Objetivo: Dar mais importância a alguns processos.
PrioridadeProcess
oSurt
o Prioridade Tempo de Espera Tempo de RetornoA 12 2 B 8 4 C 15 2 D 5 1 D 0 5C 5 20A 20 32B 32 40
Tempos (0+5+20+32)/4 =
14,25(5+13+25+40)/4 =
24,25
Atividades1. Diferencie escalonador de algoritmo de escalonamento.2. Por que se deve escalonar?3. Quando se deve escalonar?4. Explique como são os algortimos de escalonamento com
preempção e sem preempção.
Atividades8. Explique os algoritmos de escalonamento,
exemplificando como seria a ordem de chegada dos processos abaixo:
8. A = 109. B = 1510. C = 311. D = 812. E = 13
Referências Sistemas Operacionais Modernos – Andrew S.
Tanembaum, 2 Edição, Editora Pearson. Paginas: 53 até 138