Você está na página 1de 32

Gerncia do Processador

Udesc/Ceplan Bacharelado em Sistemas de Informao Introduo Segurana da Informao Prof. Alexandre Veloso alexandre.matos@udesc.br

Sumrio
Concorrncia entre Processos (reviso) Escalonamento de Processos
Comportamento de Processos Escalonamento de Processos Tipos de Escalonamento Algoritmos de Escalonamento

Concorrncia (reviso)
Muitos problemas de programao concorrente podem ser enquadradas no padro de concorrncia Produtor x Consumidores Exemplos:
Spool de impresso Banco de Dados compartilhado etc

Concorrncia (reviso)
ProdutorXConsumidor
Dois (ou mais) processos compartilham um buffer de tamanho xo O produtor insere informao no buffer O consumidor remove informao do buffer Problema tpico de concorrncia A que momento inserir no buffer? A que momento consumir do buffer?

Concorrncia (reviso)
Regio (ou Seo) Crtica
E se dois ou mais processos tentassem utilizar o mesmo recurso compartilhado? E se dois ou mais processos demorassem por um longo tempo no uso de um recurso compartilhado?
necessrio controlar trechos de cdigo em que recursos compartilhados so usados. Tais trechos so conhecidos como Regies Crticas

Concorrncia (reviso)
Condio de Corrida
Quando dois (ou mais) processos manipulam o mesmo conjunto de dados concorrentemente e o resultado depende da ordem em que so feitos => o resultado pode ser inesperado ! Logo, deve-se evitar condies de corrida (disputas)

Concorrncia (reviso)
Excluso Mtua
Como evitar Condies de Corrida? Tornar os processos imunes a ordem de execuo
Forar uma ordem de execuo (sincronizao) S um processo pode usar os dados compartilhados num dado momento => Introduo de mecanismos de excluso mtua.

Um modo de assegurar que outros processos sejam impedidos de usar uma varivel ou memria compartilhada que j estiver em uso por outro processo

Trabalho 1
Um dos principais mecanismos de sincronizao entre processos (ou threads) so os semforos. Semforos foram idealizados por Edsger Dijkstra e tm como principal objetivo impedir que 2 ou mais processos estejam simultaneamente em suas respectivas regies crticas. Pede-se:
Elabore um artigo, baseado no modelo de artigos da SBC (disponvel no moodle) explicando como semforos atingem a sincronizao entre processos. O artigo deve conter:
Conceito de Condio de Corrida com exemplo [10%] 3 possveis solues para sincronizao entre processos, devidamente explicados [20%] Conceito de semforos e seus objetivos [10%] Exemplo de implementao em Java [20%] Discusso do exemplo de implementao [20%] Concluses e Referncias Bibliogrficas [20%)

Trabalho 1
Entrega (em via impessa) at: 15/05/2013 Pode ser construdo em dupla Caso se mostrar necessrio, a dupla poder ser convidada a apresentar o trabalho.

Escalonamento de Processos

Comportamento de Processos
a) b)

CPU-Bound IO-Bound

Escalonamento de Processos
Em geral SOs so multi-processo:
enquanto um ou mais processos realizam operaes de entrada/sada; outro processo pode executar instrues.
Portanto, o SO dever suportar comutao entre processos (process switching), ou seja:
retirar o CPU de um processo e atribu-lo a outro.

Escalonamento de Processos
Ento, quando comutar ?
Quando um processo criado Quando um processo termina Quando um processo faz uma operao de I/O Interrupo de relgio (sistemas preemptivos)

Escalonamento de Processos
A ordem ideal para o escalonamento:
Mudar para o modo kernel Salvar o estado atual do processo Selecionar um novo processo Recarregar a MMU (Memory Management Unit) Iniciar um novo processo (opcional) limpar o cache

Escalonamento de Processos
Quando h mais de um processo em condies de execuo (ready), qual o processo executar? O SO, mais precisamente o scheduler, executa um algoritmo de escalonamento para decidir. O escalonador determina a que processo deve ser atribudo o CPU.

Tipos de Escalonamento
NoNo -preemptivo preemptivo: :
se, uma vez na posse do CPU, um processo executa at o (a CPU) libertar voluntariamente.
Problemas: Certas classes de processos executam durante muito tempo at bloquear; Um usurio egosta pode impedir que o computador execute processos de outros usurios.

Preemptivo: Preemptivo :
O SO usa as interrupes do relgio para retirar a CPU do processo em execuo. Praticamente todos os SOs usam algoritmos preemptivos

Algoritmos de Escalonamento
Objetivos de um algoritmo de escalonamento:
Justia
Cada processo deve receber a sua parte da CPU

Policy enforcement
Respeito s polticas estabelecidas

Equilbrio
Todas as partes do sistema devem estar operando

Algoritmos de Escalonamento
Basicamente, identificam-se 3 casos:
Sistemas de processamento em lote:
dbito; utilizao do CPU.

Sistemas interativos:
tempo de resposta; previsibilidade.

Sistemas de tempotempo-real:
cumprir prazos; determinismo.

Caso 1: Sistemas em Lote

Caso 1: Sistemas em Lote


FCFS (First Come, First Served) Tarefa mais curta primeiro Prximo de menor tempo restante

FCFS
Algoritmo de escalonamento mais simples no preemptivo Pssimo aproveitamento de CPU Geralmente implementado atravs de uma lista encadeada de processos prontos

Tarefa mais curta primeiro


Tambm no preemptivo Pressupe conhecimento prvio dos tempos de execuo Problema: se o sistema s tiver processos de tempo curto, um processo de longa durao nunca ser executado

Tempo mais curto restante


Verso preemptiva do algoritmo anterior Busca livrar-se rapidamente dos processos Tem boa vazo (througput) No adequado quando todos processos possuem tempo de execuo prximos

Caso 2: Sistemas Interativos


Tempo de resposta
O usurio quer respostas rpidas

Proporcionalidade
necessrio respeitar as expectativas de tempo (tarefas fceis versus tarefas difcies)

5 abordagens:
Chaveamento circular (Round-Robin) Escalonamento por prioridades Filas mltiplas Prximo processo mais curto (Shortest Job First) Escalonamento garantido Escalonamento por loteria Escalonamento por frao justa (fair-share)

Round-Robin
Algoritmo preemptivo A cada processo atribudo um quantum de tempo

Round-Robin
Como determinar o melhor valor do quantum?
Quantum curto
Muitas comutaes + Reduo de eficincia

Quantum longo
Resposta pobre s requisies simples

Escalonamento por prioridades


Prioridades podem ser atribudas esttica ou dinamicamente Processos precisam ser agrupados em classes de prioridade, usando Round-Robin internamente.

Filas Mltiplas
1a. Implementao: CTSS - Compatible Time Sharing System Processos so organizados em classes de prioridade Prioridade mais alta => mais intervalos de quantum Aps utilizar todo quanta, movido para uma classe inferior

Shortest Job First


Tarefa mais curta => mnimo tempo mdio de resposta Como identificar qual dos processos executveis o mais curto ? Estimativa baseada em comportamentos anteriores

Escalonamento Garantido
Baseado em promessas reais sobre o desempenho aos usurios Como fazer valer essas promessas ? O sistema mantm um controle da quantidade de uso da CPU para cada processo desde sua criao

Escalonamento por loteria


Proposta anterior: dificilmente atingida Processos ganham bilhetes virtuais de loteria Prmios: recursos do sistema Pseudo-prioridade: bilhetes extras para processos importantes

Fair-share
Alguns SOs consideram a propriedade do processo antes de escalon-lo Cada usurio receber uma parte adequada do poder de processamento da CPU

Você também pode gostar