11.07.2015 Views

Processos e threads

Processos e threads

Processos e threads

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capítulo 2<strong>Processos</strong> e Threads1<strong>Processos</strong> e <strong>threads</strong>1. <strong>Processos</strong>2. Threads3. Comunicação inter processos (IPC)4. Problemas clássicos de IPC5. Escalonamento (Scheduling)21


<strong>Processos</strong>: O modelo deprocessos• Multiprogramação de 4 programas• Modelo conceitual de 4 processos sequenciaisindependentes• apenas um programa ativo em um dado instante3Criação de <strong>Processos</strong>4Principais eventos que causam a criação deprocessos1. Inicialização do sistema• Execução de um sistema de criação deprocessos2. Solicitação do usuário para a criação deum processo3. Início de um processamento em lote2


Término de processosCondições que terminam um processo1. Normal (voluntária)2. Erro (voluntária)3. Erro Fatal (involuntária)4. Morto por outro processo (involuntária)5Hierarquias de <strong>Processos</strong>• Pai cria um processo filho, processos filhospodem criar seus próprios processos• Formam uma hierarquia– UNIX denomina um “grupo de processos (processgroup)• Windows não tem o conceito de hierarquia deprocessos– todos os processos são criados iguais63


Estados de um processos7Sete Estados de um Processo84


Estados de um processos9• Camada inferior de Sos estruturados à processos– administram interrupções e escalonamento• Acima desta camada estão os processossequenciaisAdministração de <strong>Processos</strong> eRecursos• Um SO mantém as seguints tabelas– Memoria– E/S– Arquivos– <strong>Processos</strong>105


Implementação de <strong>Processos</strong>11Campos de uma entrada em uma tabela de processosImagem do processo(constituentes do processo)• Programa do Usuário (texto)• Dados do Usuários• Pilha(s)– para chamadas de procedimentos e passagem deparâmetros• PCB - Process Control Block (contexto de execução)– Dados requeridos (atributos dos processos) pelo SO paracontrolar o processo:• Informação de identificação• Informação de estado• Informação de Controle126


Implementação de <strong>Processos</strong>Esquema do que a camada inferior do SO faz quandouma interrupção ocorre13Imagens de processos na memóriavirtual147


Threads: O modelo de Treads15(a) 3 processos cada um com uma thread(b) 1 processo com 3 <strong>threads</strong>Threads: O modelo de Treads16• Itens compartilhados por todas as <strong>threads</strong> em umprocessos• Itens privados de cada thread8


Threads: O modelo de TreadsCada thread tem sua própria pilha17Thread Usage (1)Um processador de texto com 3 <strong>threads</strong>189


Uso de Thread19Um Web server multithreadedThreads: O modelo de Treads(a) thread Dispatcher(b) thread trabalhadora2010


Threads: O modelo de TreadsTrês formas de construir um servidor21Implementando Threads no espaço dousuário22Um pacote de <strong>threads</strong> no nível dousuário11


Implementando Threads no Kernel23Um pacote de <strong>threads</strong> administrada pelo kernelImplementações Híbridas2412


Ativações do Escalonador(Scheduler)• Objetivo – imitar a funcionalidade das <strong>threads</strong> do kernel– obter os ganhos de performance das <strong>threads</strong> do espaço dousuário• Evita transições desnecessárias de user/kernel• O Kernel atribui processadores virtuais para cada processo– permite ao sistema de runtime alocar <strong>threads</strong> aos processadores• Problema:Dependência fundamental no kernel (camada inferior)procedimentos “chamantes” no espaço do usuário (camadassuperiores)25Pop-Up Threads26• Criação de uma nova thread quando uma mensagemchega– (a) antes da chegada da mensagem– (b) depois da chegada da mensagem13


Transformando um código Single-Threaded emMultithreadedConflitos entre as <strong>threads</strong> em relação ao uso de uma variávelglobal27Transformando um código Single-Threaded emMultithreaded28Threads podem ter variáveis globais privadas14


comunicação entre processosCondições decorridaDois processos querem ter acesso à memória compartilhada aomesmos tempo2930Regiões críticasQuatro condições para proporcionar exclusão mútua1. Dois <strong>Processos</strong> NÃO podem estar simultaneamentenas suas regiões críticas2. Nenhuma suposição pode ser feita em relação àvelocidade e número de CPUs3. Nenhum processo fora de sua região crítica pode bloquearoutro processo4. Nenhum processo deve esperar para sempre para entra emsua região crítica15


Regiões CríticasExclusão Mútua Usando Regiões Críticas31Esclusão Mútua com Espera Ocupada3216


Esclusão Mútua com Espera Ocupada33Solução de PetersonEsclusão Mútua com Espera Ocupada34Uso da instrução TSL17


Sleep and Wakeup35 Produtor Consumidor com uma condição de Corrida FatalSemáforos36Produtor-Consumidor usando Semáforos18


MutexesImplementação de mutex_lock e mutex_unlock37Monitores3819


Monitor39• <strong>Processos</strong> em espera ficamna fila de entrada ou emuma fila de condição• Um processo se coloca emuma fila de condição pelachamada cwait(cn)• csignal(cn) traz umprocesso da fila de condiçãocn• Consequentementecsignal(cn) bloqueia oprocesso e o coloca na filaurgente (a menso quecsignal seja a últimaoperação do monitor)Monitores• Produtor Consumidor com monitores40– apenas um procedimento do monitor ativo por vez– buffer tem N entradas20


Monitores: Produtor-Consumidorusando Java4142lProdutor-Consumidor usando Java21


Passagem de Messagens43Produtor Consumidor com N mensagensBarreiras44• Uso de uma barreira– processos se aproximando de uma barreira– todos os processos exceto um bloqueados em uma barreira– último processo chega, todos podem passar22


Filósofos Jantando45Filósofos Jantando: uma nãosolução4623


47 Solução para o problema do jantar dos filósofos (parte 1)48 Solução para o problema do jantar dos filósofos (parte 2)24


49Uma solução para o problema dos leitores e escritoresO problema do BarbeiroDorminhoco5025


51 Solução para O problema do Barbeiro DorminhocoEscalonamento: Introdução• Rajadas de uso de CPU alternam-se com períodos deespera por entrada e saída– um processo limitado por CPU– um processo limitado por E/S5226


53Objetivos dos Algoritmos de EscalonamentoEscalonamento com 1 processador5427


Escalonamento de CPU• Concentramos no problema de escalar o uso deum único processador entre todos os processosexistentes no sistema• Objetivo é atingir:– Alta utilização do processador– Alto throughput• número de processos completados por unidade de tempo– baixo tempo de resposta• tempo entre a submissão de uma solicitação e o início daresposta55Classificação das Atividades doEscalonador56• Longo prazo: qual processo admitir• Médio prazo: qual processo será swap in ou out• Curto prazo: qual processo pronto será executado a seguir28


Diagrama de fila paraescalonamento57Escalonamento a longo prazo58• Determina quais programas são admitidosno sistema para processamento• Controla o grau de multiprocessamento• Se mais processos são admitidos:• Menos provável que todos processos estejambloqueados• Melhor uso da COU• Cada processo tem uma fração menor da CPU• O escalonador de longo prazo pode tentarmanter uma mistura de processoslimitados por CPU e por E/S29


Escalonamento de médio prazo• Decisões de swap são baseadas nanecessidade de administrarmultiprogramação• Feita por software de administração dememória59Escalonamento de curto prazo• Determina qual processo será executado a seguir.(também chamada de escalonamento de CPU)• É o assunto deste item• O escalonador de curto prazo é chamado de dispatcher• É invocado quando ocorre um evento que pode levar àescolha de outro processo para execução :– Interrupção do clock– Interrupção de I/O– Chamadas do sistema operacional e traps– Sinais (signal)6030


Critérios de escalonamento a longoprazo• Orientados ao usuário– Tempo de resposta: Tempo entre a submissão deuma solicitação ao início da resposta– Tempo de Turnaround: Tempo entre a submissãode uma solicitação ao seu término• Orientados ao sistema– Utilização do processador– Justiça– throughput61Prioridades62• Implementadas por filas de “Pronto” múltiplaspara representar cada nível de prioridade• O Escalonador sempre escolhe um processode maior prioridade sobre um de menorprioridade• <strong>Processos</strong> de menor prioridade podem “passarfome”• Permite que um processo mude sua prioridadebaseado na sua idade ou história de execução31


Caracterização de políticas deescalonamento• A função de seleção: determina qual processo na fila depronto será selecionado para a próxima execução• O modo de decisão: especifica o instante no tempo noqual a função de seleção é utilizada– Não preemptivo• Uma vez que um processo esteja executando, ele continuaráaté que termine ou bloqueie (a si próprio) para IO– Preemptivo• Processo em execução pode ser interrompido e movido para oestado Pronto pelo SO• Permite melhor serviço pois nenhum processo podemonopolizar o processador por muito tempo63O ciclo CPU-I/O64• Observamos que os processos requerem ouso do processador e I/O de uma maneirarepetitiva• Cada ciclo consiste de uma rajada de CPU(burst) (freqüentemente de 5 ms) seguido poruma rajada de I/O (normalmente mais longa)• Um processo termina em uma rajada de CPU• <strong>Processos</strong> limitados por CPU têm rajadas deCPU mais longas que processos limitados porI/O32


Exemplos de execução paradiscutir políticas deescalonamentoProcess12345ArrivalTime02468ServiceTime3645265•Tempo de Serviço = tempo total de processadorrequerido em um ciclo (CPU-I/O)•Jobs com tempo de serviço longo são limitados por CPUe são ditos “tarefas longas” (“long jobs”)Primeiro a chegar primeiro a serservido (First Come First Served (FCFS))66• Função de seleção: o processo que está esperando amais tempo na fila de Pronto (daí, FCFS)• Modo de decisão: não preemptivo– um processo executa até que se bloqueie33


Desvantagens do FCFS• Um processo que não faça I/O irá monopolizar oprocessador• Favorece processos limitados por CPU– processos limitado por I/O tem que esperar até que oslimitados por CPU terminem– Podem ter que esperar até mesmo quando o seu I/O foicompletado (mal uso de dispositivos)– pode-se manter os dispositivos de I/O mais ocupadosdando mais prioridade aos processos limitados por I/O67Round-Robin• Função de seleção : o processo que está esperando amais tempo na fila de Pronto68• Modo de decisão preemptivo– um processo executa até que sua fatia de tempo expire(quantum, tipicamente entre 10 e 100 ms)– então, uma interrupção de relógio (clock) ocorre e o processoem execução é colocado na fila de pronto34


Quantum de tempo para Round Robin69• Deve ser substancialmente maior que o tempo requerido paraadministrar a interrupção de relógio e escalonamento• deve ser maior que a interação típica (mas não muito maior paraevitar penalizar processos limitados por I/O)Round Robin: crítica70• Favorece processos limitados por CPU– Um processo limitado por I/O usa a CPU por um tempo menorque seu quantum e então é bloqueado esperando por I/O– Um processo limitado por CPU executa por todo seu quantum eé colocado de volta na fila de pronto (consequentemente fica nafrente dos processos bloqueados)• Uma solução: Round Robin virtual– Quando um I/O é completado, o processo bloqueado écolocado em uma fila auxiliar que tem preferência sobre a filade Pronto principal– Uma processo escalado a partir da fila auxiliar não roda maisque o quantum básico menos o tempo gasto rodando desdeque foi selecionado da fila Pronto35


Fila para Round Robin Virtual71Menor Processo Próximo(Shortest Process Next (SPN) ou Shortest Job First)72• Função de seleção: o processo com a menor rajadade CPU esperada• Modo de Decisão: não preemptivo• processos limitados por I/O serão selecionadosprimeiro• Sempre produz tempo de resposta médio mínimo36


Menor Processo PróximoA B C D8 4 4 4B C D A4 4 4 8– Turnaround: 8, 12, 16 e 20 Média: 14– Turnaround: 4, 8, 12 e 10 Média: 11• Geral: (4a+3b+2c+d)/4 (a,b,c,d término do proc)• Seria bom se fosse usado para processosinterativos também• Precisamos estimar o tempo de processamentorequerido para cada processo (rajada de CPU)• aT 0 + (1-a)T 1, a escolhido73Estimando a rajada de CPU requerida• Seja T[i] o tempo de execução para a i-ésima instância desteprocesso: a duração real da i-ésima rajada deste processo• Seja S[i] o valor predito para a i-ésima rajada de CPU desteprocesso. A escolha mais simples é:– S[n+1] = (1/n) Σ_{i=1 até n} T[i]• Para evitar recalcular a soma inteira, podemos rescrever como:– S[n+1] = (1/n) T[n] + ((n-1)/n) S[n]• Porém, esta combinação dá peso igual a cada instância• No entanto, instâncias mais recentes são mais prováveis derefletir comportamento futuro7437


Estimando a rajada de CPU requerida• Uma técnica comum para isto é usar média exponencial– S[n+1] = α T[n] + (1-α) S[n] ; 0 < α < 1– Mais peso é colocado em instâncias recentes sempre que α> 1/n• Expandindo esta equação vemos que os pesos deinstâncias passadas decrescem exponencialmente– S[n+1] = αT[n] + (1-α)αT[n-1] + ... (1-α) {i} αT[n-i] +... + (1-α) {n} S[1]– o valor predito da primeira instância S[1] não é calculado;normalmente é definido como 0 (zero) para dar prioridade anovos processos75Coeficientes Decrescentes Exponencialmente7638


Coeficientes Decrescentes Exponencialmente77• Aqui S[1] = 0 para dar alta prioridade a novos processos• Média exponencial acompanha mudanças no comportamento deprocessos muito mais rapidamente que médias simplesMenor Processo Próximo : crítica• Possibilidade de “fome” para processos mais longoscaso haja um fluxo contínuo de processos curso• Falta de preempção não é adequado em umambiente de tempo compartilhado– <strong>Processos</strong> limitados por CPU obtém menor prioridade(como deveriam) mas um processo realizando I/O aindapode monopolizar a CPU se for o primeiro a entrar nosistema– Implicitamente incorpora prioridades: processos maiscurtos são prioritários7839


Escalonamento com Filas Múltiplas (oumulti-nível) com feedback79• Escalonamento Preemptivo com prioridades dinâmicas• Diversas filas “Pronto” com prioridades decrescentes:– P(RQ0) > P(RQ1) > ... > P(RQn)• Novos processos são colocados em RQ0• Quando atingem o quantum de tempo são colocados em RQ1,se atingem novamente, são colocados em RQ2 ... Atéatingirem RQn• <strong>Processos</strong> limitados por I/O permanecem em filas de altaprioridade.• <strong>Processos</strong> limitados por CPU irão cair• O escalonador escolhe um processo em RQi apenas se RQi-1até RQ0 estão vazias• Consequentemente, processos longos podem passar fomeEscalonamento em Filas Múltiplas comfeedback80• FCFS é usado em cada fila exceto na demenor prioridade onde Round Robin é usado40


Quantum para escalonamento comfeedback81• Com um quantum fixo, o tempo de turnaround paraprocessos longos pode se estender de forma alarmante• Para compensar, podemos aumentar o quantum de acordocom a profundidade da fila– Ex: quantum de RQi = 2^{i-1}• <strong>Processos</strong> mais longos ainda podem passar fome– Solução possível: promover a prioridade do processo apóscerto tempoQual algoritmo é melhor?• Depende da situação!• Carga do sistema• Suporte de hw para o dispatcher• Método de avaliação8241


83Escalonamento em sistemas emloteUm exemplo de um escalonamento shortest job first8442


Escalonamento em sistemas emlote85Escalonamento em 3 NíveisEscalonamento em sistemas Interativos• Round Robin– lista de processos prontos (runnable)– lista de processos prontos depois que B usa o seu quantum8643


Escalonamento em sistemas Interativos87Um escalonamento com quatro classes de prioridadesEscalonamento em sistemas de tempo realSistema de tempo real escalonável• Dados– m eventos periódicos88– evento i ocorre dentro do período P i e requer C isegundos• Então, a carga só pode ser administrada sem∑i=1CiPi≤ 144


Política versus Mecanismo• Separa o que é permitido fazer de como éfeito– um processo saber quais de suas <strong>threads</strong> filhassão importantes e precisam de prioridades• Algoritmo de escalonamento parametrizado– mecanismo no kernel89• Parâmetros fornecidos por processos dousuários– política definida por processos dos usuáriosEscalonamento de Threads90Possível escalonamento para <strong>threads</strong> no níveldo usuário• 50-msec quantum de processo• <strong>threads</strong> rodam em rajadas de 5 msec/CPU45


Escalonamento de Threads91Possível escalonamento para <strong>threads</strong> de kernel• 50-msec quantum de processo• <strong>threads</strong> rodam em rajadas de 5 msec/CPU46

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!