Introdução aos Sistemas Operacionais - FACOM › ~claudio › Cursos › sogi › Artigos ›...
Transcript of Introdução aos Sistemas Operacionais - FACOM › ~claudio › Cursos › sogi › Artigos ›...
Introdução aos Sistemas Operacionais
Prof. Dr. Antônio Fernando Traina
Conteúdo Programático
1.Introdução aos conceitos de S.Os. 2. Processos3. Escalonamento de tarefas (Árbitro)4. Gerente de entrada saida (Supervisor)5. Gerente de memória6. Sistemas de Arquivos7. Conceitos Práticos de S.O. (Unix, NT,
DOS)
Escalonamento de Processos
UNIDADE III
Sumário
Introdução ao Escalonamento de ProcessosCritérios de EscalonamentoEscalonamento preemptivo e não-preemptivo eTipos de EscalonamentoComunicação entre ProcessosExemplos
Introdução ao Escalonamento de Processos
Introdução ao Escalonamento de Processos
Funções de um S.O.Manter o controle dos processos ativosAlocar e desalocar recursos
processadormemóriaarquivosdispositivos
Proteger recursosGarantir que o resultado de um processo independa da sua velocidade de execução
Introdução ao Escalonamento de Processos
Interação de Processos:Processos independentes competindo por recursosProcessos compartilhando recursosProcessos se comunicando
Introdução ao Escalonamento de Processos
Assim diversos processos disputam os recursos disponíveis no sistema.
Divisão do “tempo do processador”.
Uso da multiprogramação.
Escalonamento a curto prazo e a longo prazo (batch).
Introdução ao Escalonamento de Processos
Escalonamento é a tarefa de decidir qual o processo irá ocupar o processador quando este ficar livre.
Escalonador: é a parte do S. O. encarregada de tomar as decisões de escolha.
Introdução ao Escalonamento de Processos
O Escalonador decide baseado em uma política de escolha utilizando os algoritmos de escalonamento.Problemas com o comportamento de cada um dos processos. Muito I/O ou muita utilização do processador.
Introdução ao Escalonamento de Processos
Parâmetros de avaliaçãoJustiça: chances iguais de uso do processador.
Throughput: maximizar o número de jobsprocessados em uma unidade de tempo.
Tempo de Resposta: minimizar o tempo de resposta para os usuários interativos.
Previsível: Rodar as tarefas com igualdade
Turnaround: Minimizar o tempo.
Introdução ao Escalonamento de Processos
Menor overhead: Tempo de gerência.
Uso dos recursos: Deve ser balanceado.
Equilíbrio entre resposta e utilização.
Evitar a postergação indefinida.
Garantia de prioridades.
Dar preferências: Processos com recursos chaves que sejam caros para o sistemas.
Introdução ao Escalonamento de Processos
Oferecer serviços melhores: Para processos que exibem comportamentos desejáveis.
Evitar colapso: Situações de carga pesada.
Introdução ao Escalonamento de Processos
Conceito de Thread (fileira, linha) Uma thread é uma parte separada de um processo.Um processo pode consistir de várias threads cada
uma das quais sendo executada separadamente. Por exemplo, uma thread poderia tratar refresh e gráficos na tela , outra thread trataria impressão, outra thread trataria o mouse e o teclado.
Introdução ao Escalonamento de Processos
Threads são processo simples (ou processos mais fracos) que compartilham:
segmento de códigoconjunto de dadosarquivos
possuindo, no entanto, seus próprios:contador de programa (instruction counter ou program counter)Registradorespilha e apontador de pilha
Introdução ao Escalonamento de Processos
Ou seja:• Task
oMantém os recursos de um processo o Entidade passiva
• ThreadsFluxos de execução de um processo o Entidades ativas o Compartilham os recursos da tasko Cada thread tem sua própria pilha de execução e conjunto de registradores Criação e destruição com pequeno custo
Processo = 1 task + n threads
Introdução ao Escalonamento de Processos
Processo
Um processo ou tarefa é uma porção de um programa em alguma fase de execução. Um programa pode consistir de várias tarefas, cada uma com funcionamento próprio ou como uma unidade (talvez se comunicando entre si periodicamente).
Introdução ao Escalonamento de Processos
O PROCESSO de BOOTSTRAP
Descreve a ação da carga inicial do sistema operacional do disco para a RAM. Uma pequena rotina armazenada em ROM, chamada de CARREGADOR de BOOTSTRAP ou IPL (Carregador de Programa Inicial), lê uma rotina especial de carga no disquete.
Introdução ao Escalonamento de Processos
Em sistema baseado em disquete , essa rotina normalmente reside na trilha 00, setor 00 (ou 01), e é chamado de setor de booting.
O código contido no setor é transferido para a RAM, e então é executada. Tem a responsabilidade exclusiva de carregar o resto do sistema operacional na memória.
Introdução ao Escalonamento de Processos
Conceitos Importantes:Quantum: tempo de execução de cada processo
muito curto: maior o overhead de escalonamento muito longo: degenera em FCFS (FirstCome First Serve)
turnaround:Tempo decorrido da submissão de um processo até o seu término.
Introdução ao Escalonamento de Processos
Interrupção de um programa:Natural
Quando um processo conclui sua tarefa executa uma chamada informando o término ao sistema operacional
Forçada Na ocorrência de erros um processo pode ser abortado pelo sistema operacional Um processo pode solicitar o término de um processo subordinado quando seus serviços não têm mais interesse
Introdução ao Escalonamento de Processos
Tipos de EscalonadoresEscalonador de curto prazo (CPU Scheduler)
Seleciona processos da fila readyDeve ser muito eficiente
Escalonador de longo prazo (Job Scheduler) Seleciona novos processos para entrar no sistema Mantém média de processos I/O-bound e CPU-bound
Escalonador de médio prazo (Swapper) Retira processos temporariamente da memória para manter a média de processos I/O-bound e CPU-bound ou pela exaustão da mesma
Sumário
Introdução ao Escalonamento de ProcessosCritérios de EscalonamentoEscalonamento preemptivo e não-preemptivo.Tipos de EscalonamentoComunicação entre ProcessosExemplos
Critérios de Escalonamento
Critérios de Escalonamento
Processos limitados por E/S.Processos limitados pela CPU.Batch ou interativo.A urgência de uma resposta.Prioridade do processo.Com que freqüência perdem a CPU.Tempo de execução real.Tempo necessário para ser concluído.
Sumário
Introdução ao Escalonamento de ProcessosCritérios de EscalonamentoEscalonamento preemptivo e não-preemptivo.Tipos de EscalonamentoComunicação entre ProcessosExemplo
Escalonamento preemptivo e não-preemptivo.
Escalonamento preemptivo e não-preemptivo.
Escalonamento não-Preemptivo: Estratégia de rodar o processo até o fim. (batch). (não são adequados aos sistemas propósito geral)
Escalonamento Preemptivo: Estratégia de permitir a suspensão temporária dos que poderiam continuar rodando.
Escalonamento preemptivo e não-preemptivo
Não Preemptivo:Escalonamento First-In-First-Out -FIFO: Uma vez que o processo está com a CPU ele é executado até a sua conclusão.Escalonamento Shortest-Job-First -SJF: Tarefas com menor tempo de utilização são executadas por primeiro. Quanto tempo a tarefa irá utilizar a CPU. Livrar-se do maior número de processos quanto antes.
Escalonamento preemptivo e não-preemptivo
Não Preemptivo:Highest-Response-Ration-Next -HRN: A taxa de resposta mais alta. O tempo de execução da tarefa e o tempo que a tarefa tem esperado para executar.Escalonamento Cooperativo: Processo em execução entrega o processador sem a intervenção do S.O.
Escalonamento preemptivo e não-preemptivo
PreemptivoEscalonamento Round Robin: A cada processo atribui-se um intervalo de tempo durante o qual ele poderá utilizar o processador.(quantum). Se esgotar o seu quantum ele perde o processador.Manter uma lista de processos prontos.
Escalonamento preemptivo e não-preemptivo
B F D G A
F D G A B
Processo correnteRound Robin
Escalonamento preemptivo e não-preemptivo
PreemptivoEscalonamento por Prioridades:
Processos devem ser tratados de maneira diferente dos outros;Os processos de maior prioridades são escalonados antes.Sistemas de tempo compartilhado implementam algum tipo de prioridade de forma a dar mais importância na hora do escalonamento.
Escalonamento preemptivo e não-preemptivo
PreemptivoEscalonamento por Múltiplas Filas:
os processos são classificados em função do tipo de processamento realizado, e a cada grupo criado, são aplicados mecanismos de escalonamento distintos;Cada fila possui uma prioridade associada;
Escalonamento preemptivo e não-preemptivo
PreemptivoEscalonamento por Múltiplas Filas com Realimentação:
Possuem prioridade de execução mas não necessariamente permanecem até o final de seu processamento;mecanismo adaptativo, que tem como objetivo ajustar os processos em função do comportamento do sistema.
Escalonamento preemptivo e não-preemptivo
PreemptivoEscalonamento de Sistemas de Tempo Real:
o fator tempo é crítico;não existe o conceito de quantum;Para cada processo é atribuída uma prioridade associada a sua importância dentro do sistema;a prioridade é estática;Quanto maior a importância de uma tarefa, maior sua prioridade de execução.
Escalonamento preemptivo e não-preemptivo
PreemptivoEscalonamento com Múltiplos Processadores:
Em sistemas fracamente acoplados, cada processador faz seu próprio escalonamento local;Nos sistemas fortemente acoplados épossível implementar uma única fila de pronto para todos os processadores.
Escalonamento preemptivo e não-preemptivo
PreemptivoTodos os processos estão presentes nesta única fila e são escalonados no primeiro processador disponível. deve ser implementada a exclusão mútua;A exclusão mútua do Escalonador pode ser obtida através de mecanismos como semáforos e monitores.
Sumário
Introdução ao Escalonamento de ProcessosCritérios de EscalonamentoEscalonamento preemptivo e não-preemptivo.Tipos de EscalonamentoComunicação entre ProcessosExemplo
Tipos de Escalonamento
Tipos de Escalonamento
Serão vistos:Primeiro a Chegar Primeiro atendido (FirstCome First Serve - FCFS)Round-RobinProgramas Pequenos Primeiro (ShortestJob First - SJF)Menor Tempo Restante Primeiro (ShortestRemaining Time First - SRTFFilas Multiníveis
Tipos de Escalonamento
Primeiro a Chegar Primeiro atendido (First Come First Serve - FCFS) Com o algoritmo FCFS, cada programa é inserido no final de uma fila Q (a fila Q é a fila RL, de processos prontos para ganharem o contrele da CPU), quando chega no sistema.
Tipos de Escalonamento
O processo em execução processa atéo final do seu corrente pico de CPU (não preempção) Quando o processo em execução termina, o programa no início da fila Q é selecionado como sendo o próximo a ser executado. Este é um esquema bastante simples.
Tipos de Escalonamento
A eficiência do sistema varia grandemente de acordo com a duração do pico de CPU e da ordem de chegada dos processos. T Por exemplo - três processos chegam ao mesmo tempo. O primeiro possui 24 unidades de tempo de duração (tempo de pico de CPU), o segundo e o terceiro possuem, cada, 3 unidades de tempo de duração.
Tipos de Escalonamento
A media de tempo de turnaround(tempo de existência) para os três processos será:
Tipos de Escalonamento
Se os programas chegarem na ordem 3, 2, 1, o turnaround médio seria:
Tipos de Escalonamento
Portanto, o turnaround médio não é,
em geral, minimal e, pode variar muito,
para um dado conjunto de programas,
dependendo da ordem de suas
chegadas.
Tipos de Escalonamento
Round-RobinNeste algorítmo, todos os processos prontos para ganharem o controle da CPU estão na fila de prontos RL (Ready List). O escalonador de CPU movimenta-se, circularmente, na RL atribuindo a CPU a cada processo por vez por uma duração de tempo chamado "quantum de tempo".
Tipos de Escalonamento
Um quantum de tempo é usualmente 10 a 100 milisegundos ou menos. Novos processo (ou processos que são novos na RL) são adicionadaos no final da fila RL.
Tipos de Escalonamento
Tudo se passa do seguinte modo: o escalonador "arma" um relógio de tempo para disparar após uma deternminada unidade de quanta e despacha o processo que está no inicio da RL para ganhar controle da CPU.
Tipos de Escalonamento
O escalonador escolhe um processo. O escalonador também o despacha para a CPU. Ou o processo (corrente na CPU) libera a CPU voluntariamente (ie, o pico de CPU terminou e um pico de E/S está começando) ou o relógio temporazidor dispara e uma interrupção ocorre, causando preempção do processo.
Tipos de Escalonamento
Se o processo libera voluntariamente a CPU, ele vai para o final da fila apropriada no estado bloqueado. Se o temporizador dispara, o processo vai para o final da fila RL. Por exemplo, com o quantum de tempo de 4 unidades:
O turnaround será: (30("1") + 7("2") + 10("3")) / 3 = ~16
Tipos de Escalonamento
Round RobinDeterminação do tamanho do quantum.
Muito pequeno: há sucessivas trocas de contexto baixando a eficiência do processador. (overhead)
Muito Grande: pode levar a um tempo de resposta não aceitável.
Tipos de Escalonamento
Programas Pequenos Primeiro (Shortest JobFirst - SJF)O tamanho do próximo pico de CPU (CPU burst) de cada programa é utilizado para determinar quem será o próximo. Aquele com o próximo menor pico será o escolhido. Por exemplo - suponha que os seguintes processos, chegam ao mesmo tempo no sistema:
Tipos de Escalonamento
Tipos de Escalonamento
SJFSJF é ótimo (sentido matemático de ótimo) para algoritmos não-preemptivos - isto é, sempre resulta em menor tempo de turnaround. Contudo, é inteiramente impossível de se implementar, devido ao fato de que não existem meios de precisamente determinar, o tamanho do próximo pico de CPU, que terá um dado processo.
Tipos de Escalonamento
Um método informal de se provar que o algoritmo SJF é ótimo é considerar que, se um programa menor for movido para depois de um programa maior, então o tempo de espera para o menor é aumentado mais que o decréscimo do tempo de espera do maior, aumentando assim a média do tempo do turnaround.
Tipos de Escalonamento
Uma aproximação do algoritmo SJF utiliza um método de média exponencial para aproximar o tamanho do próximo pico de CPU, como veremos a seguir
Tipos de Escalonamento
Tipos de Escalonamento
Menor Tempo Restante Primeiro (Shortest Remaining Time First –SRTF) Este algoritmo é como o SJF, exceto que é um algoritmo preemptivo. Se um programa torna-se pronto para ganhar o controle da CPU utilizando o algoritmo SJF, ao programa corrente é permitido finalizar o seu próximo pico de CPU.
Tipos de Escalonamento
Filas MultiníveisAqui, existem varias filas de processos prontos para ganharem o controle da CPU. Cada uma possui escalonamento com características diferentes.Ou seja, uma pode ser RR, enquanto uma outra utiliza FCFS, etc. Cada fila está associada a um tipo específico de programa.
Tipos de Escalonamento
Tipos de Escalonamento
FCFSOs processos do tipo "System" podem utilizar FCFS, quanto os processos do tipo "interactive" podem utilizar RR. É necessário existir alguma política de escalonamento entre filas. Por exemplo, um programa não poderá prosseguir, a menos que não exista programas de maiores prioridades esperando ou não permitir preempção, etc, ou cada fila possui um certo percentual de tempo de CPU.
Sumário
Introdução ao Escalonamento de ProcessosCritérios de EscalonamentoEscalonamento preemptivo e não-preemptivo.Tipos de EscalonamentoComunicação entre ProcessosExemplo
Comunicação entre Processos
=> Deadlocks
Comunicação entre Processos
Ambientes onde surge concorrência– múltiplos aplicativos– aplicativos estruturados– estrutura do S.O.• Aspectos da implementação de concorrência– comunicação– compartilhamento e disputa de recursos– sincronização– alocação de processador
Comunicação entre Processos
Problemas com concorrência– compartilhamento de recursos- escritas a uma variável global– alocação de recursos- recurso alocado enquanto processo estábloqueado
Comunicação entre Processos
depuração de programas• execução não pode ser reproduzida• Os problemas são similares em
ambientes multiprogramados e multiprocessados
Comunicação entre Processos
Condições de corrida ou Seção Crítica: situação onde dois ou mais processos estão acessando dados compartilhados e o resultado do processamento depende de quem roda quando.
Spool de impressão onde um processo da por encerrado a impressão sem que o processo que está gerando tenha terminado.
Comunicação entre Processos
Como evitar a ocorrência de condições de corrida?
Exclusão mútua: Se um processo estiver ocupando uma variável ou arquivo compartilhados, os demais processos serão impedidos de o fazer.Evitar que mais de um processo esteja processando suas regiões críticas ao mesmo tempo.
Comunicação entre Processos
Condições necessárias:Dois ou mais processos não podem estar dentro de suas regiões críticas;Sem controle de tempo, velocidade ou processadores disponíveis.Nenhum processo pode bloquear outro se este estiver rodando fora de sua região crítica.Nenhum processo pode ser obrigado a esperar indefinidamente p/entrar em sua região crítica.
Comunicação entre Processos
Exclusão Mútua: Soluções de Hardware:Inibição das Interrupções: Entra na região crítica, inibe as interrupções, habilita quando sai.Instrução TSL: Test and Set Locked - Transfere o conteúdo do end. memória para um registrador
Exclusão Mútua: Soluções de Software:Variável de travamento: 0-livre, 1-ocupado.Estrita Alternância: Teste inicial e teste contínuo para habilitar-se. Solução de Peterson: O processo avisa que quer entrar, entra e libera.
Comunicação entre Processos
Primitivas Sleep/Wakeup: (Produtor e consumidor): Um dos processos , o produtor coloca informação no Buffer, e o outro, o consumidor retira a informação do buffer.Semáforos: (Dijkstra) - variável do tipo semáforo pode ter o valor 0 = livre e pode ter o valor positivo indicando o número de sinais armazenados.
Comunicação entre Processos
Contadores de Eventos: Lê, incrementa e espera. - contador de inserção e contador de retiradas. (antes de retirar o item x ele espera que o o contador de entradas seja igual a x).
No caso de semáforos e contadores de evento podem ocorrer deadlock.
Monitores: Os processos chamam os procedimentos do monitor mas não acessam as estruturas de dados e variáveis internas.
Comunicação entre Processos
Somente um processo pode estar ativo dentro do monitor em um determinado instante.Wait e Signal - variáveis de condição.
Troca de Mensagens: através das primitivas Send e Receive.Equivalência entre as Primitivas: Método chamado seqüenciadores, expressões de caminho ou serializadores.
Comunicação entre Processos
Isso dá bom tempo de resposta em programas complexos. Windows NT é um exemplo de um sistema operacional que suporta multi-thread.
Comunicação entre Processos
O problema de seções críticas (ou regiões críticas) é um sério problema em concorrência. Este problema envolve dois ou mais processos que possuem uma seção de código que não obedece as condições de Bernstein para concorrência.
Comunicação entre Processos
Estas seções de processos concorrentes são chamadas seções críticas. É dentro das seções críticas de um processo que é realizado o acesso ao dado que está no conjunto de leitura ou de escrita de outro processo.
Comunicação entre Processos
Em geral a solução para o problema de seção crítica provê algum método que somente permite um processo (ou em raros casos, um pequeno número fixo de processos cooperativos) acessar sua seção crítica por vez ( de cada vez).
Comunicação entre Processos
Um excelente exemplo de concorrência e seção-crítica e o problema chamado Produtor/consumidor. Nesta modelagem um processo produtor produz (continuadamente) um pacote de ítens para um processo consumidor consumir (continuamente).
Comunicação entre Processos
Geralmente existe uma lista compartilhada onde o produtor armazena os dados e da qual o consumidor retira os dados. Se ambos os processos tentarem acessar a lista concorrentemente, a lista poderá ficar corrompida ( estado inconsistente).
Comunicação entre Processos
Portanto, é necessário e mandatórioque somente um processo acesse a lista por vez. Um implementação típica (pseudo código) do produtor e consumidor écomo se segue:
Comunicação entre Processos
Note que, no exemplo acima, o problema da seção crítica não é totalmente resolvido.O produtor e o consumidor acima podem
processar juntamente, sem problemas, na maioria das execuções mas, na seção crítica (durante a manipulação da lista) o sistema falha (gera inconsistência) completamente.
Comunicação entre Processos
Qualquer solução para o problema de seção crítica deve satisfazer as seguintes três condições:1.A execução da seção crítica entre processos deve ser
mutuamente exclusiva, isto é, nunca dois processos podem estar acessando a mesma seção crítica simultaneamente. As seções críticas de dois processos estão relacionadas
se elas acessam o mesmo dado compartilhado. Por exemplo, digamos que temos 3 seções críticas, uma em
cada um um dos processos A, B e C. Se A e B manipulam o dado 1 e B e C manipulam o dado 2, então A e B possuem seções críticas relacionadas e, analogamente, B e C. A e C não compartilham dados e portanto não possuem seções críticas relacionadas entre si.
Comunicação entre Processos
2. Um processo, A, fora de sua seção crítca, não pode impedir outro processo, B, entrar em uma de suas seções crítcas.
3. Quando dois processos desejarem entrar em suas seções críticas ao mesmo tempo, a decisão de qual entrará primeiro, não pode ser postergarda indefinidamente.
Comunicação entre Processos
Solução por software Solução de Hardware Semáforos Monitores Comunicação Inter-Processos (Inter-Process Communication -IPC).
Deadlock
Bloqueio permanente de um conjunto de processosque estão competindo por recursos ou secomunicando• Não existe uma boa solução para o caso geral• Surge devido a interesses conflitantes por recursos
Deadlock
Utilizados por um processo de cada vezO uso não acaba com o recursoProcessos adquirem, usam e liberam os recursosExemplos: processadores, canais de E/S, memória,dispositivos, arquivos, banco de dados, semáforosExemplo de deadlock: memória de 200K bytes
Deadlock
Recursos que são criados e destruídosUm processo produtor desbloqueado pode
criarqualquer número de recursosQuando um recurso é adquirido, deixa de
existirExemplos: interrupções, sinais, mensagens,
conteúdo de buffers de E/SExemplo de deadlock: Receive bloqueia o
processo
Deadlock
Condições para Deadlock:Exclusão mútua
– somente um processo pode usar o recurso
• Posse e espera– um processo pode segurar recursos enquanto
espera por outros• Sem preempção
– nenhum recurso pode ser retirado de um processo
Deadlock
Espera circular– uma corrente de processos existe, de
maneira que cada processo possui pelo menos um recurso desejado pelo próximo processo na corrente
– conseqüência possível das 3 primeiras– definição de deadlock
Deadlock
Previnir Deadlocks: Fazer com que uma das condições não se realize:
• Exclusão mútua– exemplo: spooling para impressoras– não pode ser evitada na maioria das situações
• Posse e espera– um processo deve solicitar todos os seus recursos simultaneamente– maior espera por recursos– recursos alocados desnecessariamente– conhecimento anterior dos recursos necessários
Deadlock
Sem preempção– devolve recurso assim que necessário– somente prático quando o estado do recurso pode ser facilmente
salvo e restaurado (processador)• Espera circular
– todos os recursos estão ordenados– recursos são solicitados em ordem – exige conhecimento prévio de todos os recursos necessários– a alocação dos recursos pode não ser a mais eficiente
Deadlock
Estratégias– não disparar um processo cujo uso de
recursos pode levar a um deadlock– não atender pedidos de recursos que
podem levar a um deadlock (algoritmo do banqueiro)
• Vantagens– menos restritivo que prevenção
• Desvantagens– necessidades máximas conhecidas– somente para recursos reusáveis
Deadlock
Detectar DeadlockO S.O. verifica periodicamente o estado dos recursose processos procurando por deadlocks• Essa procura pode demandar recursos de
processador• Recuperação
– cancelar todos os processos em deadlock– rollback e restart dos processos em deadlock– cancelar progressivamente os processos em deadlock
Deadlock
Algoritmo do avestruz• Assumir que deadlocks são raros• Não é justificado o (mau) uso de
recursos para prevenir, evitar ou detectar deadlocks
• Estratégia adotada pela maioria dos Sistemas operacionais
Sumário
Introdução ao Escalonamento de ProcessosCritérios de EscalonamentoEscalonamento preemptivo e não-preemptivo.Tipos de EscalonamentoComunicação entre ProcessosExemplo
Exemplos
Exemplos
Escalonamento Tradicional do UNIXEscalonamento com preempção usando múltiplas filas com prioridades dinâmicas A prioridade (inversa) de um processo ébase + utilização + nice
Exemplos
A prioridade base divide os processos em grupos de prioridades (swapper, disco, arquivos, dispositivos, usuários) O parâmetro nice ajusta a prioridade do processo A utilização de CPU é dividida por 2 a cada segundo, para evitar a inanição de processos longos É utilizado Round-Robin para processos de mesma prioridade
Exemplos
Política de Escalonamento em UnixTrês tipos de aplicações: interativas, batch e real-time. Unix tradicional desenhado para aplicações interactivas. Cada processo tem uma prioridade que varia dinâmincamente. Processos de mais alta prioridade tiram outros processos do CPU mesmo quando o processo não terminou o seu quantum
Exemplos
Kernel não permite preempção: processo sóreturna o CPU quando bloqueia ou quando regressa a User Mode. Prioridades: 0 a 49 para kernel, 50 a 127 para user-mode. Em proc: p_pri, prioridade corrente; p_usrpri, prioridade em modo utilizador, p_cpu, uso de CPU, e p_nice.
Exemplos-NÃO
ClocksResposta a interrupt de clock deve ser o mais rápida possível: reiniciar hw, se necessário. incrementar estatísticas. recalcular prioridades e time-slice. enviar um SIGXCPU para processo se excedeu quota. alterar tempo real. processar calloutsacordar processos de sistemas como swapper e pageout
processar alarmes.
Exemplos-NÃO
Tipos de ThreadsKernel Threads: baratos, não são associados com processos de utilizador, e têm a sua própria pilha.
Úteis para I/O e interrupts.Equivalente ao pagedaeomn e a nfsd em
Unix.
Exemplos-NÃO
Lightweight Process: kernel supported user-thread.
Podem fazer syscalls e bloquear. Podem correr em CPUs diferentes. Precisam de mais estado do que KT: pilha e contexto de registos. Precisam de syscalls para serem criados, sincronização (para blocking), contextswitching e escalonamento. Isso obriga a 2 mode switches atravessando protection boundary
Exemplos-NÃO
User Threads: implementados por bibliotecas (C-threads ou pthreads).
Interação é rápida, escalonamento é feito pela aplicação. AIO permite não bloquear thread àcusta de complexidade de programação. Ideais para window systems. Problema: separação entre UT e LWP: kernelnão pode saber que LWP tem os melhores threads; UTs podem perder LWPs, não suportam paralelismo.
Exemplos
Implementação do EscalonadorEm Unix tradicional:
são mantidas 32 filas com as prioridades (VAX). whichqs contém um bitmask com um 1 para filas ocupadas. swtch() examina primeira fila, muda contexto, e quando retorna processo já está executando. Cada 100 ms (BSD) roundrobin() vai buscar outro processo com a mesma prioridade. Senão, o mesmo processo continua
Exemplos-NÃO
schedcpu() é chamada de segundo a segundo para recalcular a prioridade. clock recalcula prioridade do processo corrente cada vez em 4. flag runrun é usada para indicar que processo de mais alta prioridade está àespera de ser executada, e é verificada antes de entrar em user-mode.
Exemplos
Problemas do Escalonador Não escala bem: muitos processos faz com que recalcular prioridades seja pesado. Não se pode dar uma porção de CPU a um processo. Não há garantias de tempo de resposta para real-time apps. Aplicações não podem controlar as suas prioridades. Kernel nonpreemptive significa que processos de prioridade alta podem ter que esperar muito tempo antes de executar.
Exemplos-NÃO
Inicialização de Processos: forkA chamada fork() duplica processos: fork() cria um novo processo: retorna 0 para filho e PID para o pai. fork() reserva swap, aloca novo PID e proc, inicializa proc, aloca mapas de tradução de endereços, aloca u-area e copia do pai, altera a u-area com novos mapas de endereços e swap, adiciona o filho aos processos que partilham o texto do pai, duplica as áreas de pilhas e dados do pai, obtém referencias a recursos partilhados, inicializa contexto HW, põe o processo runnable e na filha de escalonamento, retorna para o filho e para o pai.
evitar cópia: copy-on-write e vfork().
Exemplos-NÃO
Inicialização de Processos: execA execução de um novo programa é iniciada com exec(): exec() faz overlay com um novo programa. exec() obtém o executável, verifica permissões, lê o cabeçalho, altera se SUID ou SGID, copia os argumentos de exec() e env para kernel space, aloca swap para data e swap, liberta antigos data and stack, aloca mapas de endereço e inicializa-o, restaura env e argumentos, reinicializa os signal handlers, inicializa contexto HW. entre os dois podemos fazer coisas como alterar os
descriptores de entrada-saida, etc.
Exemplos-NÃO
Terminação do Processoexit() é chamada ou de um signal ou do próprio processo. exit() desliga sinais, fecha ficheiros, liberta ficheiro texto e outros recursos como cwd, escreve no log, guarda estatísticas, muda para SZOMB, faz com que init herde o processo, liberta memória, envia SIGCHLD para pai, acorda pai, chama swtch()wait() espera terminação de processos. se processo morre antes do pai e este não chama wait, processo fica zombie. SVR4 permite usar SA_NOCLDWAIT
para indicar que pai não vaiu esperar pelos filhos
Exemplos
Escalonamento no UNIX SVR4160 níveis de prioridade dividido em três classes
100-159 para processos de tempo real podem fazer preempção do kernelprioridades e quantum estáticos
Exemplos
60-99 para o kernelsofre preempção em pontos pré-determinados prioridades estáticas
0-59 para processos usuários prioridade variável (diminuída a cada quantum e aumentada a cada bloqueio) quantum maior para processos menos prioritários
Exemplos
Três classes de prioridade tempo real (16-31) variável (1-15) sistema (0)
Exemplos
Escalonamento no Windows NTPreempção prioridade
independe do modo de processamento a thread volta para o início da fila tempo a thread volta para o fim da fila
Exemplos
Quantum =>depende do tipo e da arquitetura
NT Workstation (15.6-30 ms) NT Server (93.6-160 ms)
Exemplos
Ajustes de prioridadeapós uma espera de E/S ou evento quanto mais lento o dispositivo maior o aumento a cada quantum a prioridade é diminuída após uma espera por entrada do usuário aumenta a prioridade para 14 por 1 quantum após um longo tempo (3-4 s) sem executar aumenta a prioridade para 15 por 1 quantum dobrado
Exemplos
Ajustes de prioridade após uma espera de E/S ou evento quanto mais lento o dispositivo maior o aumento a cada quantum a prioridade é diminuída após uma espera por entrada do usuário aumenta a prioridade para 14 por 1 quantum após um longo tempo (3-4 s) sem executar aumenta a prioridade para 15 por 1 quantum dobrado
Exemplos
Escalonamento Windos95PrioridadesAs threads no Windows 95 têm prioridades que vão de 0 à 31. A prioridade 0 é a mais baixa e é de uso exclusivo do sistema. As demais se classificam nos seguintes grupos:
Ocioso (1-6) Normal (5-11) Background (5-9) Foreground (6-11)Alta (11-15) Real Time (16-31)
Exemplos
EscalonamentoO VMM possui dois escalonadores
primary schedulertimeslice scheduler
O primary scheduler tem a função de escolher o processo, ou os processos, de maior prioridade. Todos os demais permanecerão bloquedos..
Exemplos
O timeslice scheduler divide as fatias de tempo entre os processos de maior prioridades, escolhidos pelo primary scheduler. As prioridades podem ser alteradas pelo sistema ou pelos drivers de dispositivos. Por exemplo, quando ocorre uma interrupção, a thread que lida com aquela interrupção tem sua prioridade aumentada. Depois de atender à interrupção, a prioridade da thread é novamente reduzida
Exemplos
Multitarefa Cooperativa x Preemptiva
O Windows 95 é um sistema multitarefa híbrido. Ele utiliza tanto a multitarefa cooperativa quanto a multitarefa preemptiva.
Exemplos
Multitarefa Cooperativa: um processo precisa ceder a CPU para que outro processo possa usá-la. Para abandonar a CPU um processo chama uma dessas funções: GetMessage, PeekMessage e Yield. Na multitarefa cooperativa o VMM só pode determinar o próximo processo que usará a CPU. Um programa mal escrito que não largar a CPU não poderá ser interrompido e a única solução seráreiniciar o sistema.O Windows 95 utiliza multitarefa cooperativa entre as aplicações 16 bits.
Exemplos
Multitarefa Preemptiva: o VMM pode tirar um processo da CPU a qualquer instante, sem a necessidade do processo chamar uma das funções citadas acima e ceder a CPU. Geralmente é implementada usando uma interrupção gerada por hardware (timer). Ao receber a interrupção do timer, o processador passa o controle ao SO, que executa a mudança de contexto.
Exemplos
O Windows 95 utiliza multitarefa preemptiva entre as aplicações 32 bitse entre os programas MS-DOS.Todos os programas 16 bits juntos são vistos como um único processo para fins de escalonamento preemptivo
Exemplos
SincronizaçãoO Windows 95 oferece várias funções que podem ser usadas em objetos para sincronizar processos. Esses objetos chamam-se objetos de sincronização e
incluem:
Semáforos: usados para limitar o número de acessos concorrentes a um recurso compartilhado. É criado com a função CreateSemaphore. Eventos: o estado de um objeto evento pode ser mudado para sinalizado ou não sinalizado. Para criar um objeto evento usamos a função CreateEvent. Para sinalizar ou não um objeto evento usa-se SetEvent e ResetEvent, respectivamente. Mutex: funcionando de forma similar a um semáforo, um objeto mutex (exclusão mútua) é possuído por uma thread quando esta entra na região crítica. Ele é liberado usando a função ReleaseMutex.
Exemplos
Outro mecanismo de sincronização é o Interlocked Variable Access.Usando as funções InterlockedIncrement e InterlockedDecrement, uma thread pode alterar o valor de uma variável e verificar o resultado de forma atômica, sem ser interrompida por outra thread (que poderia alterar a variável antes que a primeira tivesse a chance de verificar seu valor).
Exemplos
Teste de Multitarefa no WindowsAqui apresenta-se dois programas em pascal para mostrar que a multitarefa do ambiente Windows é não preemptiva.Execute os dois programas lado a lado para ver o funcionamento. Lembre-se de executar primeiro o numeros.exe e depois o loop.exe
Exemplos
PROGRAM Test_Multitarefa;
USES WinCrt;
VAR cont : INTEGER;BEGIN
WHILE TRUE DOFOR cont:=1 TO 9999 DO
WRITE(cont:8);END;
END.
Exemplos
PROGRAM Test_Multitarefa;USES WinCrt;BEGIN
Writeln ('Loop...');WHILE TRUE DO
{Sem Operação};END.
Bibliografia
[1] – Sistemas Operacionais – Projeto e Implementação – Andrew S. Tanenbaum, Albert S. Woodhull -Editora Bookman – 2o edição –2000.[2] – Sistemas Operacionais –Conceitos – Abraham Silberschatz e Peter Baer Galvin – Editora PrenticeHall –2000.
Fim da Unidade III