Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
FCFS
Algoritmo de escalonamento mais simples no preemptivo Pssimo aproveitamento de CPU Geralmente implementado atravs de uma lista encadeada de processos prontos
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
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
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
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