sistemas de informaçãobrunotoledoifmg.com/so/aulas/aula 6 - gerenciamento de processo… ·...
TRANSCRIPT
Sistemas de Informação
Sistemas Operacionais
PROCESSOS
E THREADS – PARTE III
SUMÁRIO
4. GERÊNCIA DO PROCESSADOR:
4.1 Introdução;
4.2 Funções Básicas;
4.3 Critérios de Escalonamento;
4.4 Escalonamentos Não-Preemptivos e Preemptivos;
4.5 Escalonamento First-In-First-Out (FIFO);
4.6 Escalonamento Shortest-Job-First (SJF);
4.7 Escalonamento Cooperativo;
4.8 Escalonamento Circular;
4.9 Escalonamento por Prioridades;
4.10 Escalonamento Circular com Prioridades;
4.11 Escalonamento por Múltiplas Filas;
4.12 Escalonamento por Múltiplas Filas com Realimentação;
4.13 Política de Escalonamento em Sistemas de Tempo Compartilhado;
4.14 Política de Escalonamento em Sistemas de Tempo Real;
4.15 Deadlock.
Capítulo 4 - Gerência
do Processador
4.1 Introdução
Com o surgimento dos sistemas multiprogramáveis, a gerência do
processador tornou-se uma das atividades mais importantes em um SO.
A partir do momento em que diversos processos podem estar no estado de
pronto, critérios devem ser estabelecidos para determinar qual processo será
escolhido para fazer uso do processador.
Os critérios utilizados para essa seleção compõem a chamada política de
escalonamento, que é a base da gerência do processador e da
multiprogramação em um SO.
Capítulo 4 - Gerência
do Processador
4.1 Introdução
O escalonamento de processos (ou agendador de tarefas)
computacionais é uma atividade organizacional feita pelo escalonador
(scheduler) da CPU ou de um Sistema Distribuído, possibilitando executar os
processos mais viáveis e concorrentes, priorizando determinados tipos de
processos, como os de I/O Bound e os computacionalmente intensivos.
O escalonador de processos de 2 níveis escolhe o processo que tem mais
prioridade e menos tempo e coloca-o na memória principal, ficando os outros
alocados em disco; com essa execução o processador evita ficar ocioso.
Capítulo 4 - Gerência
do Processador
4.1 Introdução
Estado deEspera
Estado deExecução
Estado dePronto
Esca
lonam
ento
Capítulo 4 - Gerência
do Processador
4.2 Funções Básicas
A política de escalonamento de um SO tem diversas funções básicas, como:
Manter o processador ocupado a maior parte do tempo;
Balancear o uso da UCP entre processos;
Privilegiar a execução de aplicações críticas;
Maximizar o taxa de transferência do sistema;
Oferecer tempos de resposta razoáveis para usuários interativos.
A rotina do SO que tem como principal função implementar os critérios da
política de escalonamento é denominada escalonador (scheduler).
A rotina conhecida como dispatcher (despachante) é responsável pela
troca de contexto dos processos após o escalonador determinar qual
processo deve fazer uso do processador e o tempo gasto na troca é
denominado latência do dispatcher.
Capítulo 4 - Gerência
do Processador
4.3 Critérios de Escalonamento
Utilização do Processador: é desejável que o processador permaneça a
maior parte do tempo ocupado.
Throughput (Taxa de Transferência): representa o número de
processos executados em um determinado instante de tempo.
Tempo de Processador / Tempo de UCP: é o tempo que um processo
leva no estado de execução durante o seu processamento.
Tempo de Espera: é o tempo total que um processo permanece na fila
de pronto durante seu processamento, aguardando para ser executado.
Tempo de Turnaround (Tempo de Retorno): é o tempo que um
processo leva desde a sua criação até seu término.
Capítulo 4 - Gerência
do Processador
4.3 Critérios de Escalonamento
Tempo de Resposta: é o tempo decorrido entre uma requisição ao
sistema ou à aplicação e o instante em que a resposta é exibida.
De maneira geral, qualquer política de escalonamento busca otimizar a
utilização do processador e o throughput, enquanto tenta diminuir os tempos
de turnaround, espera e resposta.
Apesar disso, as funções que uma política de escalonamento deve possuir
são muitas vezes conflitantes.
Dependendo do tipo do sistema operacional, um critério pode ter maior
importância do que outros.
Capítulo 4 - Gerência
do Processador
4.4 Escalonamentos Não-Preemptivos e Preemptivos
As políticas de escalonamento podem ser classificadas segundo a
possibilidade de o sistema operacional interromper o processo em execução
e substituí-lo por um outro (preempção).
Escalonamento não-preemptivo: quando um processo está em execução
nenhum evento externo pode ocasionar a perda do uso do processador.
Escalonamento preemptivo: o sistema operacional pode interromper um
processo em execução e passá-lo para o estado de pronto, com o objetivo
de alocar outro processo na UCP com prioridade maior do que o anterior.
Atualmente, a maioria dos SOs implementa políticas de escalonamento
preemptivas.
Capítulo 4 - Gerência
do Processador
4.5 Escalonamento First-In-First-Out (FIFO scheduling,
Primeiro a entrar, primeiro a sair)
Também conhecido como first-come-first-served (FCFS scheduling), ou seja,
o primeiro a chegar é o primeiro a ser servido.
UCP
Estado deCriação
Estado deEspera
Fila dos processos no estado de Pronto
Estado deTérmino
Capítulo 4 - Gerência
do Processador
4.5 Escalonamento First-In-First-Out (FIFO scheduling)
Processo A
Processo B
Processo C
10 14 17
Processo A
Processo B
Processo C
4 7 17u.t.
u.t.
ProcessoTempo de
processador(u.t.)
A
B
C
10
4
3
Capítulo 4 - Gerência
do Processador
4.5 Escalonamento First-In-First-Out (FIFO scheduling)
Apesar de simples, o escalonamento FIFO apresenta algumas deficiências:
Impossibilidade de prever-se quando um processo terá a sua execução
iniciada, já que isso varia em função do tempo de execução dos demais
processos na fila de pronto;
Processos CPU-bound levam vantagem no uso do processador sobre
processos I/O-bound.
O escalonamento FIFO é do tipo não-preemptivo e foi inicialmente
implementado em sistemas monoprogramáveis com processamento batch.
Atualmente, sistemas de tempo compartilhado utilizam FIFO com variações.
Capítulo 4 - Gerência
do Processador
4.6 Escalonamento Shortest-Job-First (SJF scheduling,
Processo mais curto primeiro)
Também conhecido como shortest-process-next (SPN scheduling), ou seja,
O mais curto processo é o próximo.
Processo A
Processo B
Processo C
3 7 17 u.t.
Capítulo 4 - Gerência
do Processador
4.6 Escalonamento Shortest-Job-First (SJF scheduling)
Esta implementação foi utilizada nos primeiros sistemas operacionais com
processamento exclusivamente batch.
Uma maneira de implementar o escalonamento SJF em sistemas interativos
foi considerar o comportamento do processo neste ambiente.
Um problema existente nesta implementação é não ser possível ao SO saber
quanto tempo um processo irá permanecer utilizando a UCP na próxima vez
em que for escalonado.
Na sua concepção inicial, o escalonamento SJF é não-preemptivo.
Capítulo 4 - Gerência
do Processador
4.6 Escalonamento Shortest-Job-First (SJF scheduling)
Vantagem sobre o FIFO: redução do tempo médio de turnaround dos
processos, porém no SJF é possível haver starvation para processos com
tempo de processador muito longo ou do tipo CPU-bound.
Uma implementação do escalonamento SJF com preempção é conhecida
como escalonamento shortest-remaining-time (SRT scheduling), que é o
tempo mais curto remanescente.
4.7 Escalonamento Cooperativo
Um processo em execução pode voluntariamente liberar o processador,
retornando à fila de pronto e possibilitando que um novo processo seja
escalonado, permitindo assim uma melhor distribuição no uso do
processador.
Capítulo 4 - Gerência
do Processador
4.8 Escalonamento Circular
O escalonamento circular (round robin scheduling) é um escalonamento do
tipo preemptivo, projetado especialmente para sistemas de tempo
compartilhado.
Preempção por tempo
UCP
Estado deCriação
Estado deEspera
Fila dos processos no estado de Pronto
Estado deTérmino
Capítulo 4 - Gerência
do Processador
4.8 Escalonamento Circular
Processo A
Processo B
Processo C
2 4 17 u.t.6 8 10 11
Capítulo 4 - Gerência
do Processador
4.8 Escalonamento Circular
A principal vantagem do escalonamento circular é não permitir que um
processo monopolize a UCP, sendo o tempo máximo alocado continuamente
igual à fatia de tempo definida no sistema.
Um problema presente nesta política é que processos CPU-bound são
beneficiados no uso do processador em relação aos processos I/O-bound, o
que provoca um balanceamento desigual no uso do processador.
Um refinamento do escalonamento circular, que busca reduzir esse
problema, é conhecido como escalonamento circular virtual.
Capítulo 4 - Gerência
do Processador
4.8 Escalonamento Circular
Preempção por tempo
UCP
Estado deCriação
Fila dos processos no estado de Pronto
Estado deTérmino
Estado deEspera
Fila auxiliar
Capítulo 4 - Gerência
do Processador
4.9 Escalonamento por Prioridades
É um escalonamento do tipo preemptivo realizado com base em um valor
associado a cada processo denominado prioridade de execução.
A perda do uso do processador só ocorrerá no caso de uma mudança
voluntária para o estado de espera ou quando um processo de prioridade
maior passa para o estado de pronto (preempção por prioridade).
A rotina de escalonamento deve reavaliar as prioridades dos processos no
estado de pronto, para verificar se há processos com maior prioridade do que
o processo em execução.
Capítulo 4 - Gerência
do Processador
4.9 Escalonamento por Prioridades
UCP
Estado deTérmino
Filas dos processos no estado de Pronto
Prioridade P1
Prioridade P2
Prioridade Pn
Estado deCriação
Estado deEspera
Preempção por prioridade
Capítulo 4 - Gerência
do Processador
4.9 Escalonamento por Prioridades
Processo A
Processo B
Processo C
3 13 17 u.t.
ProcessoTempo de
processador(u.t.)
A
B
C
10
4
3
Prioridade
2
1
3
Capítulo 4 - Gerência
do Processador
4.9 Escalonamento por Prioridades
O escalonamento por prioridades também pode ser implementado de uma
maneira não-preemptiva.
A prioridade de execução é uma característica do contexto de software de
um processo, e pode ser classificada como estática e dinâmica.
Um dos principais problemas do escalonamento circular é o starvation
(inanição). É a situação onde um processo nunca consegue executar sua
região crítica e, consequentemente, acessar o recurso compartilhado. Este
problema ocorre quando dois ou mais processos esperam por um recurso
alocado.
Capítulo 4 - Gerência
do Processador
4.9 Escalonamento por Prioridades
Uma solução para esse problema é a técnica de aging (envelhecimento).
O aging ocorre quando a prioridade de um processo vai se alterando com o
"tempo de vida" do mesmo, controlando o starvation), que muda
momentaneamente a prioridade de um processo que não é executado há
muito tempo e joga sua prioridade para a mais alta possível para que ele seja
atendido, logo após as prioridades voltam ao normal.
O escalonamento por prioridades possibilita diferenciar os processos
segundo critérios de importância.
Capítulo 4 - Gerência
do Processador
4.10 Escalonamento Circular com Prioridades
Implementa o conceito de fatia de tempo e de prioridade de execução
associada a cada processo.
Um processo permanece no estado de execução até que termine seu
processamento, voluntariamente passe para o estado de espera ou sofra
uma preempção por tempo ou prioridade.
A vantagem deste tipo de escalonamento é permitir o melhor balanceamento
no uso do processador em sistemas de tempo compartilhado.
Possui duas variações: circular com prioridades estáticas e circular com
prioridades dinâmicas.
Capítulo 4 - Gerência
do Processador
4.10 Escalonamento Circular com Prioridades
UCP
Estado deTérmino
Fila dos processos no estado de Pronto
Prioridade P1
Prioridade P2
Prioridade Pn
Estado deCriação
Estado deEspera
Preempção por tempo ou prioridade
Capítulo 4 - Gerência
do Processador
4.11 Escalonamento por Múltiplas Filas
Neste tipo de escalonamento, os processos são associados às filas em
função de características próprias, como importância para a aplicação, tipo
de processamento ou área de memória necessária.
A principal vantagem de múltiplas filas é a possibilidade da convivência de
mecanismos de escalonamento distintos em um mesmo sistema operacional.
Além disso, neste mecanismo o processo não possui prioridade, ficando
essa característica associada à fila. O processo sofre preempção caso um
outro processo entre em uma fila de maior prioridade.
Desvantagem: no caso de um processo alterar seu comportamento no
decorrer do tempo, não poderá ser redirecionado para outra fila.
Capítulo 4 - Gerência
do Processador
4.11 Escalonamento por Múltiplas Filas
UCP
Fila de processos do sistema
Fila de processos interativos
Fila de processos batch
Maiorprioridade
Menorprioridade
Capítulo 4 - Gerência
do Processador
4.12 Escalonamento por Múltiplas Filas com Realimentação
Neste tipo de escalonamento, os processos podem trocar de filas durante o
seu processamento.
Vantagem: permitir ao SO identificar dinamicamente o comportamento de
cada processo, direcionando-o para filas com prioridade de execução e
mecanismo de escalonamento mais adequados.
O escalonamento de um processo em uma fila ocorre apenas quando todas
as outras filas de prioridades mais altas estiverem vazias.
Problemas: complexidade de implementação; mudança de comportamento
de um processo CPU-bound para I/O-bound pode comprometer seu tempo
de resposta.
Capítulo 4 - Gerência
do Processador
4.12 Escalonamento por Múltiplas Filas com Realimentação
UCP
Fila 1 (FIFO Adaptado)
Preempção por tempo
Fila 2 (FIFO Adaptado)
Preempção por tempo
Fila 3 (FIFO Adaptado)
Preempção por tempo
Fila n (Circular)
Preempção por tempo
Men
or
Pri
ori
da
de
Maio
rPri
ori
dade
Maio
r fa
tia
de t
em
po
Men
or
fatia
de tem
po
Capítulo 4 - Gerência
do Processador
4.13 Política de Escalonamento em Sistemas de Tempo
Compartilhado
Em geral, sistemas de tempo compartilhado caracterizam-se pelo
processamento interativo, no qual os usuários interagem com as aplicações
exigindo tempos de respostas baixos.
A escolha de uma política de escalonamento para atingir esse propósito deve
levar em consideração o compartilhamento dos recursos de forma equitativa
para possibilitar o uso balanceado da UCP entre os processos.
Atualmente, a maioria dos sistemas operacionais de tempo compartilhado
utiliza o escalonamento circular com prioridades dinâmicas.
Capítulo 4 - Gerência
do Processador
4.13 Política de Escalonamento em Sistemas de Tempo
Compartilhado
Exemplo: escalonamento FIFO.
Processo A
Processo B
u.t.277
E/S
de A
11
E/S
de B
19
E/S
de A
21
E/S
de B
ProcessoTempo de
processador(u.t.)
A
B
21
6
Característica
CPU-bound
I/O-bound
Capítulo 4 - Gerência
do Processador
4.13 Política de Escalonamento em Sistemas de Tempo
Compartilhado
Exemplo: escalonamento circular com fatia de tempo igual a 5 u.t.
ProcessoTempo de
processador(u.t.)
A
B
15
10
Característica
CPU-bound
I/O-bound
Processo A
Processo B
u.t.
Pre
em
pçã
o p
or
tem
po d
e A
5
E/S
de B
9E/S
de A
11
E/S
de B
13
Pre
em
pçã
o p
or
tem
po d
e A
18
E/S
de B
20
E/S
de A
23 25
E/S
de B
27
UC
P liv
re
Capítulo 4 - Gerência
do Processador
4.13 Política de Escalonamento em Sistemas de Tempo
Compartilhado
Exemplo: escalonamento circular com prioridades.
Processo A
Processo B
u.t.
E/S d
e B
4
Pre
em
pçã
o p
or
pri
ori
da
de d
e A
6
E/S d
e B
8Pre
em
pçã
o p
or
pri
ori
da
de d
e A
12
E/S d
e B
14
E/S
de A
15 17
Pre
em
pçã
o p
or
pri
ori
da
de d
e A
18
E/S d
e B
20
Pre
em
pçã
o p
or
pri
ori
da
de d
e A
24
E/S d
e B
27
UC
P liv
re
ProcessoTempo de
processador(u.t.)
A
B
12
13
Característica
CPU-bound
I/O-bound
Prioridade
Baixa
Alta
Capítulo 4 - Gerência
do Processador
4.14 Política de Escalonamento em Sistemas de Tempo Real
Algumas aplicações específicas exigem respostas imediatas para a
execução de terminadas tarefas. Nesse caso, a aplicação deve ser
executada em sistemas de tempo real.
O escalonamento em sistemas de tempo real deve levar em consideração a
importância relativa de cada tarefa na aplicação.
Em função disso, o escalonamento por prioridades é o mais adequado para
sistemas de tempo real. Não deve existir o conceito de fatia de tempo, e a
prioridade de cada processo deve ser estática.
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Em alguns casos pode ocorrer a seguinte situação: um processo solicita um
determinado recurso e este não está disponível no momento. Quando isso
acontece o processo entra para o estado de espera (bloqueado). Em
algumas situações é possível que estes processos nunca mais mudem de
estado, pois os recursos que eles necessitam podem estar sendo mantidos
por outros processos em espera. Essa situação é chamada de deadlock ou
impasses.
Deadlock = Impasse
Um deadlock é uma situação em que 2 ou mais processos ficam bloqueados
indefinidamente.
Pode ser uma Race Condition (Condição de Corrida)
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Condições Necessárias:
Para que um situação de deadlock seja criada, as seguintes condições
devem acontecer simultaneamente:
1. Exclusão mútua: apenas um processo por vez pode usar o recurso.
2. Monopolização de recursos: acontece no exemplo da escada quando
duas pessoas se cruzam em um lance e elas se recusam a retroceder.
3. Não-preempção: os recursos só podem ser liberados voluntariamente
pelo processo que o mantém.
4. Espera circular: dado um conjunto de processos {P1, P2, ..., Pn} em
espera, P1 está esperando por um recurso mantido por P2; P2 está
esperando um recurso mantido por P3 e assim sucessivamente, até que
Pn esteja esperando por um recurso alocado por P1.
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Condições Necessárias:
Um conjunto de processo está em deadlock se:
Cada processo do conjunto está bloqueado;
Se o bloqueio está ocorrendo pelo aguarde de um evento;
Se este evento somente pode ser disparado por outro processo;
Se este outro processo também está bloqueado;
Tipicamente envolve processos competindo pelo mesmo recurso.
Capítulo 4 - Gerência
do Processador
Capítulo 4 - Gerência
do Processador
Capítulo 4 - Gerência
do Processador
Capítulo 4 - Gerência
do Processador
Capítulo 4 - Gerência
do Processador
Capítulo 4 - Gerência
do Processador
Capítulo 4 - Gerência
do Processador
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Exemplos:
Existem alguns casos de deadlocks que podemos citar:
1. Requisições de arquivos: se for permitido aos programas requisitar e
bloquear durante sua execução. P1 requisita e obtém arquivo F2; P2
requisita e obtém arquivo F1; P1 requisita F1 mas está bloqueado; P2
requisita F2 mas está bloqueado.
2. Alocação de dispositivos dedicados: utilização de um grupo de
dispositivos dedicados pode gerar deadlocks. Exemplo: um programa
que precise de 2 fitas magnéticas para copiar dados de uma para outra.
3. Alocação de múltiplos dispositivos: vários processos requisitam e
bloqueiam diferentes dispositivos dedicados.
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Método para tratar Deadlocks:
Em geral, podemos utilizar 3 métodos para tratar o problema de deadlocks:
1. Podemos usar um protocolo para garantir que o sistema nunca entre em
estado de deadlock: PREVENÇÃO (o Sistema operacional deve eliminar
uma das 4 condições para que o deadlock ocorra)
2. Podemos permitir que o sistema entre em deadlock e se recupere:
DETECÇÃO e RECUPERAÇÃO.
3. Podemos ignorar o problema (Algoritmo do avestruz). Esta opção é
utilizada pela maioria dos sistemas operacionais, incluindo o UNIX.
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Estratégias:
Ignora o problema;
Detecção e Recuperação;
Prevenção.
Qual o método mais usado?
Fingir que o problema não existe! Usado na maioria dos sistemas, inclusive
Unix.
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Ignora o problema (Algoritmo do Avestruz)
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Detecção e Recuperação
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Capítulo 4 - Gerência
do Processador
4.15 Deadlock
Prevenção de Deadlock