Buscar

ArtigoSO 6

Prévia do material em texto

UNIVERSIDADE ESTADUAL DOMATO GROSSO DO SUL
LEANDRO BARRA DE MATTOS RGM - 31368
ARTIGO SOBRE O ESCALONAMENTO DO CPU
Dourados- MS
2017
UNIVERSIDADE ESTADUAL DO MATO GROSSO DO SUL
LEANDRO BARRA DE MATTOS RGM - 31368
ARTIGO SOBRE O ESCALONAMENTO DO CPU
Trabalho apresentado na Disciplina de Sistemas
Operacionais (SO), do 3º ano, Curso de Ciência
da Computação Faculdade de Ciências Exatas e
Tecnológicas da UEMS.
Orientador: Profº Felipe Pereira Perez
Dourados- MS
2017
Artigo sobre o Escalonamento do CPU
Leandro Barra de Mattos ∗
2017, v-1.0
Resumo
Pretende-se neste artigo abordar aspec-
tos teóricos que norteiam o Escalona-
mento do CPU, além de apresentar de
forma simples e objetiva os algoritmos
que podem ser utilizados para realizar
esse processo. É feito uma viagem em
torno dos principais algoritmos de es-
calonamento utilizados atualmente e
como cada um deles podem de uma
forma simples aumentar o desempe-
nho de um computador. E é feito tam-
bém uma análise das técnicas utiliza-
das para se avaliar qual dos algoritmos
é mais adequado para se utilizar em
um sistema operacional.
Palavras-chave: escalonamento,
CPU, algoritmos.
Introdução
O escalonamento de CPU é a base
dos sistemas operacionais multiprogramados.
Ao alternar a CPU entre os processos, o
sistema operacional pode tornar o computa-
dor produtivo. Neste artigo, apresentamos
os conceitos básicos de escalonamento e seus
critérios e vários algoritmos distintos de es-
calonamento de CPU e suas avaliações.
1 Críterios de Escalonamento
Diferentes algoritmos de escalona-
mento de CPU possuem diferentes proprieda-
des e podem favorecer uma classe dos proces-
∗leanmattos93@gmail.com
sos em detrimento de outra. Na escolha de
qual algoritmo será usado em determinada
situação, temos de considerar as proprieda-
des dos diversos algoritmos. Muitos critérios
foram sugeridos para a comparação de algo-
ritmos de escalonamento da CPU. A escolha
das características que serão usadas para a
comparação pode fazer uma diferença subs-
tancial na escolha do algoritmo considerado
melhor. Os critérios incluem os seguintes:
• Utilização de CPU: queremos manter
a CPU ocupada o máximo de tempo
possível. Em conceito, a utilização da
CPU pode variar de O a 100%. Em um
sistema real, ela deverá variar de 40%
(para um sistema pouco carregado) até
90% (para um sistema muito utilizado).
• Throughput (vazão): se a CPU esti-
ver ocupada executando processos, en-
tão o trabalho está sendo feito. Uma
medida do trabalho é o número de pro-
cessos concluídos por unidade de tempo,
algo chamado de vazão. Para processos
longos, essa taxa pode ser um processo
por hora; para transações curtas, ela
pode ser 1 O processos por segundo.
• Turnaround (tempo de retorno):
do ponto de vista de um processo especí-
fico, o critério importante é o tempo ne-
cessário para executar esse processo. O
intervalo desde o momento da submissão
de um processo até o momento do tér-
mino é o turnaround. O turnaround é a
soma dosperíodos gastos esperando para
entrar na memória, esperando na fila de
1
prontos (ready queue), executando na
CPU e realizando E/S.
• Tempo de espera: o algoritmo de es-
calonamento de CPU não afeta a quan-
tidade de tempo durante a qual um pro-
cesso é executado ou realiza E/S; ele
afeta apenas a quantidade de tempo que
um processo gasta esperando na fila de
prontos. O tempo de espera é a soma
dos períodos gastos aguardando na fila
de espera.
• Tempo de resposta: em um sistema
interativo, o turnaround pode não ser
o melhor critério. Em geral, um pro-
cesso pode produzir alguma saída rapi-
damente e pode continuar calculando
novos resultados enquanto os resulta-
dos anteriores estão sendo mostrados ao
usuário. Assim, outra medida é o tempo
desde a submissão de uma requisição até
a primeira resposta ser produzida. Essa
medida, chamada tempo de resposta, é o
tempo gasto para começar a responder,
e não o tempo gasto para a saída da
resposta. O turnaround é limitado pela
velocidade do dispositivo de saída.
É importante maximizar a utilização
e a throughput da CPU, reduzindo o tur-
naround, o tempo de espera e o tempo de
resposta. Na maioria dos casos, otimizamos
o valor da média. Contudo, sob algumas cir-
cunstâncias, é importante otimizar os valores
mínimo ou máximo, ao invés da média. Por
exemplo, para garantir que todos os usuá-
rios recebam um bom atendimento, podemos
tentar reduzir o tempo máximo de resposta.
Investigadores sugeriram que, para
sistemas interativos (como sistemas de
tempo compartilhado), é mais importante
minimizar a variância no tempo de resposta
do que minimizar o tempo de resposta médio.
Um sistema com tempo de resposta razoável
e previsível pode ser considerado mais dese-
jável do que um sistema que seja mais rápido
na média, porém bem variável. Entretanto,
pouco trabalho tem sido feito nos algoritmos
de escalonamento de CPU para reduzir a
variância.
A medida que discutirmos os diver-
sos algoritmos de escalonamento de CPU
na próxima seção, ilustraremos sua opera-
ção. Uma ilustração precisa envolver muitos
processos, cada um sendo uma sequência de
centenas de bursts de CPU e bursts de E/S.
No entanto, para simplificar, consideramos
apenas um burst de CPU (em milissegundos)
por processo em nossos exemplos. Nossa me-
dida de comparação é o tempo de espera
médio.
2 Algoritmos de Escalonamento
O escalonamento de CPU trata do
problema de decidir qual dos processos na
fila de prontos (ready queue) deve ser entre-
gue à CPU. Existem muitos algoritmos de
escalonamento de CPU diferentes.
2.1 Escalonamento First Come First Ser-
ver - FCFS
Certamente o mais simples dos algo-
ritmos de escalonamento de CPU é o algo-
ritmo de escalonamento First Come First
Serve - FCFS (primeiro a chegar, pri-
meiro a ser atendido). Com esse esquema,
o processo que requisita a CPU em primeiro
lugar recebe a CPU primeiro. A implemen-
tação da política FCFS é gerenciada com fa-
cilidade por meio de uma fila FIFO. Quando
um processo entra na fila de prontos (ready
queue), seu PCB é associado ao final da fila.
Quando a CPU está livre, ela é alocada ao
processo na cabeça da fila. O processo em
execução, em seguida, é removido da fila. O
código para o escalonamento FCFS é simples
de escrever e entender.
2.2 Escalonamento Shortest Job First -
SJF
Uma técnica diferente para escalona-
mento de CPU é o algoritmo de escalona-
mento Shortest Job First - SJF (me-
nor tarefa primeiro). Esse algoritmo as-
2
socia a cada processo o tamanho do próximo
burst de CPU do processo. Quando a CPU es-
tiver disponível, ela será alocada ao processo
que possui o menor próximo burst de CPU.
Se os próximos bursts de CPU de dois proces-
sos forem iguais, o escalonamento FCFS será
usado no desempate. Observe que um termo
mais apropriado para esse método de escalo-
namento seria algoritmo do próximo menor
burst de CPU (shortest next CPU-burst al-
gorithm), pois o escalonamento depende do
tamanho do próximo burst de CPU de um
processo, e não do tamanho total. Usamos o
termo SJF porque a maioria das pessoas e
livros-texto refere-se a esse tipo de escalona-
mento como SJF.
2.3 Escalonamento por Prioridade
O algoritmo SJF é um caso especial
do algoritmo de escalonamento por pri-
oridade. Uma prioridade é associada a cada
processo, e a cru é alocada ao processo com
a maior prioridade. Processos com amesma
prioridade são escalonados na ordem FCFS.
Um algoritmo SJF é um algoritmo por prio-
ridade no qual a prioridade (p) é o inverso do
próximo burst de CPU (previsto). Quanto
maior o burst de CPU, menor a prioridade,
e vice-versa.
Observe que discutimos sobre o es-
calonamento em termos de prioridade alta e
prioridade baixa. As prioridades são indica-
das por algum intervalo de números, como
O a 7, ou O a 4095. Contudo, não existeum
acordo geral com relação a se O é a maior ou
a menor prioridade. Alguns sistemas utilizam
números baixos para representar a prioridade
baixa; outros usam números baixos para a
prioridade alta. Essa diferença pode causar
confusão.
2.4 Escalonamento Round-Robin
O algoritmo de escalonamento
Round-Robin - RR (revezamento) foi
criado para sistemas de tempo comparti-
lhado. Ele é semelhante ao escalonamento
FCFS, mas a preempção é acrescentada para
alternar entre os processos. Uma pequena
unidade de tempo, chamada quantum de
tempo ou fatia de tempo, é definida. Um
quantum de tempo costuma variar de 1O a
l00 milissegundos. A fila de prontos é tra-
tada como uma fila circular. O escalonador
de CPU percorre a fila de prontos, alocando
a CPU a cada processo por um intervalo de
tempo de até 1 quantum de tempo.
Para implementar o escalonamento
RR, mantemos a fila de prontos como uma
fila de processos FIFO. Novos processos são
acrescentados ao final da fila de prontos. O
escalonador de CPU apanha o primeiro pro-
cesso da fila de prontos, define um tempori-
zador para interromper após 1 quantum de
tempo e despacha o processo. Em seguida,
acontecerá uma destas duas coisas: o pro-
cesso pode ter um burst de CPU de me-
nos de 1 quantum de tempo. Nesse caso, o
próprio processo liberará a CPU voluntari-
amente. O escalonador prosseguirá, então,
para o próximo processo na fila de pron-
tos. Caso contrário, se o burst de CPU do
processo em execução for maior do que 1
quantum de tempo, o temporizador dispa-
rará e causará uma interrupção no sistema
operacional. Uma troca de contexto será exe-
tutada e o processo será colocadono final da
fila de prontos. Por fim, o escalonador de
CPU selecionará o próximo processo na fila
de prontos.
2.5 Escalonamento Multilevel Queue
Outra classe de algoritmos de esca-
lonamento foi criada para situações em que
os processos são classificados em diferentes
grupos. Por exemplo, uma divisão comum
é feita entre processos de primeiro plano
(interativos) e processos em segundo plano
(batch). Esses dois tipos de processos pos-
suem requisitos diferentes para o tempo de
resposta e, por isso, podem ter necessidades
de escalonamento diferentes. Além disso, os
processos de primeiro plano podem ter pri-
oridade (definida externamente) acima dos
processos de segundo plano.
Um algoritmo multilevel queue
3
(fila multinível) divide a fila de prontos
(ready queue) em várias filas separadas. Os
processos são atribuídos a uma fila, em ge-
ral, com base em alguma propriedade do
processo, como tamanho de memória, priori-
dade do processo ou tipo de processo. Cada
fila possui seu próprio algoritmo de escalo-
namento. Por exemplo, filas separadas pode-
riam ser usadas para processos de primeiro
e segundo plano. A fila de primeiro plano
poderia ser escalonada por um algoritmo
RR, enquanto a fila de segundo plano seria
escalonada por um algoritmo FCFS.
Além disso, é preciso haver escalona-
mento entre as filas, o que é implementado
como um escalonamento preemptivo de prio-
ridade fixa. Por exemplo, a fila de primeiro
plano pode ter prioridade absoluta sobre a
fila de segundo plano.
2.6 Escalonamento Multilevel Feedback-
Queue
Em geral, em um algoritmo de es-
calonamento de fila multinível, os processos
recebem uma fila permanentemente na en-
trada do sistema. Os processos não se movem
entre as filas. Por exemplo, se houver filas
separadas para processos de primeiro e se-
gundo plano, eles não se movem de uma fila
para outra, pois não podem mudar sua na-
tureza de primeiro ou segundo plano. Essa
configuração tem a vantagem do baixo custo
adicional de escalonamento, mas é inflexível.
O escalonamento multilevel
feedback-queue (fila multinível com
feedback), ao contrário, permite que um
processo se mova entre as filas. A idéia
é separar os processos com diferentes
características de burst de CPU. Se um
processo utilizar muito tempo de CPU,
ele será movido para uma fila de menor
prioridade. Esse esquema deixa os processos
I/O-bound e interativos nas filas de maior
prioridade. Além disso, um processo que
espera muito tempo em uma fila de menor
prioridade pode ser movido para uma
fila de maior prioridade. Essa forma de
envelhecimento evita o starvation.
3 Avaliação de Algoritmo
Como selecionamos um algoritmo de
escalonamento de CPU para determinado
sistema? Como vimos na Seção 2, existem
muitos algoritmos de escalonamento, cada
um com seus próprios parâmetros. Como
resultado, a seleção de um algoritmo pode
ser difícil.
O primeiro problema é definir os cri-
térios a serem usados na seleção de um algo-
ritmo. Os critérios normalmente são defini-
dos em termos de utilização de CPU, tempo
de resposta ou throughput. Para selecionar
um algoritmo, primeiro temos de definir a
importância relativa dessas medições. Nos-
sos critérios podem incluir várias medições,
como:
• Maximizar a utilização de CPU sob a
restrição de o tempo de resposta má-
ximo ser de 1 segundo
• Maximizar a throughput de modo que o
turnaround seja (na média) linearmente
proporcional ao tempo de execução total
Quando os critérios de seleção tive-
rem sido definidos, desejamos avaliar os di-
versos algoritmos em consideração.
3.1 Modelagem Determinística
Uma classe importante dos métodos
de avaliação é a avaliação analítica. A ava-
liação analítica usa o algoritmo indicado, e
a carga de trabalho do sistema para pro-
duzir uma fórmula ou número que avalia o
desempenho do algoritmo para essa carga de
trabalho.
Um tipo de avaliação analítica é a
modelagem determinística. Esse método
apanha uma carga de trabalho específica pre-
determinada e define o desempenho de cada
algoritmo para essa carga de trabalho.
4
3.2 Modelos de Enfileiramento
Os processos executados em muitos
sistemas variam de um dia para outro, de
modo que não existe um conjunto estático de
processos (ou tempos) para uso na modela-
gem determinística. Entretanto, o que pode
ser determinada é a distribuição dos bursts
de CPU e E/S. Essas distribuições podem ser
medidas e depois aproximadas ou simples-
mente estimadas. O resultado é uma fórmula
matemática, descrevendo a probabilidade de
determinado burst de CPU. Em geral, essa
distribuição é exponencial e descrita por sua
média. De modo semelhante, a distribuição
de tempos quando os processos chegam no
sistema (a distribuição do tempo de chegada)
precisa ser dada. A partir dessas duas distri-
buições, é possível calcular, para a maioria
dos algoritmos, a média da throughput, da
utilização, do tempo de espera e assim por
diante.
O sistema computadorizado é des-
crito como uma rede de servidores. Cada
servidor possui uma fila de processos em es-
pera. A CPU é um servidor com sua fila
de prontos, assim como o sistema de E/S
com suas filas de dispositivo. Conhecendo as
taxas de chegada e as taxas de serviço, pode-
mos calcular a utilização, o tamanho médio
da fila, o tempo médio de espera e assim
por diante. Essa área de estudo é chamada
análise da rede de enfileiramento.
3.3 Simulações
Para obter uma avaliação mais pre-
cisa dos algoritmos de escalonamento, pode-
mos usar simulações. O uso de simulações
envolve a programação de um modelo do
sistema de computador. As estruturas de da-
dos do software representam os principais
componentes do sistema. O simulador possui
uma variável representando um relógio; à me-
dida que o valor dessa variável é aumentado,
o simulador modifica o estado do sistema
para refletir as atividades dos dispositivos,
dos processos e do escalonador. Enquanto
a simulação é executada, as estatísticas que
indicam o desempenho do algoritmo são co-
lhidas e impressas.
Os dados para controlar a simulação
podem ser gerados de diversas maneiras. O
método mais comum utiliza um gerador de
números aleatórios, programado para gerar
processos, tempos de burst de CPU, che-gadas, saídas e assim por diante, de acordo
com as distribuições de probabilidade. As dis-
tribuições podem ser definidas matemática
(uniforme, exponencial, Poisson) ou empirica-
mente. Se a distribuição tiver de ser definida
empiricamente, as medições do sistema real
sob estudo são tomadas. Os resultados defi-
nem a distribuição dos eventos no sistema
real; essa distribuição pode, então, ser usada
para controlar a simulação.
Contudo, uma simulação controlada
por distribuição pode ser pouco precisa, de-
vido aos relacionamentos entre os sucessivos
eventos no sistema real. A distribuição de
frequência indica apenas quantos ocorrem
em cada evento; ela não indica nada sobre a
ordem de sua ocorrência. Para corrigir esse
problema, podemos usar fitas de rastrea-
mento (trace tapes). Criamos uma fita de
rastreamento monitorando o sistema real e
registrando a seqüência de eventos reais. De-
pois, usamos essa seqüência para controlar
a simulação. As fitas de rastreamento ofe-
recem uma excelente maneira de comparar
dois algoritmos com o mesmo conjunto de
entradas reais. Esse método pode produzir
resultados precisos para suas entradas.
As simulações podem ser caras, exi-
gindo horas de tempo do computador. Uma
simulação mais detalhada pode oferecer resul-
tados mais precisos, mas também exige mais
tempo do computador. Além disso, as fitas
de rastreamento podem exigir uma grande
quantidade de espaço para armazenamento.
Finalmente, o projeto, a codificação e a de-
puração do simulador podem ser uma tarefa
importante.
5
3.4 Implementação
Até mesmo uma simulação possui
precisão limitada. A única maneira precisa
para avaliar um algoritmo de escalonamento
é codificá-lo, colocá-lo no sistema operacional
e ver como funciona. Essa técnica coloca
o algoritmo real no sistema real, para ser
avaliado sob condições de operação reais.
A principal dificuldade dessa técnica
é o alto custo. O custo aparece não apenas
na codificação do algoritmo e na modificação
do sistema operacional para dar suporte a
ele e às suas estruturas de dados exigidas,
mas também na reação dos usuários a um
sistema operacional alterado constantemente.
A maioria dos usuários não está interessada
na montagem de um sistema operacional
melhor; eles simplesmente querem que seus
processos sejam executados e usar seus resul-
tados. Um sistema operacional em constante
mudança não ajuda os usuários a realizarem
seu trabalho.
A outra dificuldade com qualquer
avaliação algorítmica é que o ambiente em
que o algoritmo é utilizado mudará. O ambi-
ente mudará não apenas no modo normal, à
medida que novos programas são escritos e
os tipos de problemas mudam, mas também
como resultado do desempenho do escalona-
dor. Se processos curtos recebem prioridade,
então os usuários podem dividir processos
maiores em conjuntos de processos menores.
Se os processos interativos recebem priori-
dade em relação a processos não interati-
vos, então os usuários podem passar para o
uso interativo.(SILBERSCHATZ; GALVIN;
GAGME, 2004)
Considerações Finais
De um modo geral foi abordado nesse
artigo um tema pouco visto em artigos e que
de certa forma está constantemente sendo
usado por todos que de alguma forma en-
tramos em contato com um computador ou
um sistema operação. Portanto é de extrema
importância se ter uma ideia de como um
escalonamento de CPU funciona e quais são
as avaliações que devem ser feitas para se
utilizar o melhor algoritmo de escalonamento
a fim de conseguir um sistema operacional
mais eficiente e muitas vezes mais rápido.
6
CPU Scheduling Article
Leandro Barra de Mattos ∗
2017, v-1.0
Abstract
In this article we intend to approach
the theoreticians that guide the CPU
Scheduling, besides presenting in a sim-
ple and objective way the algorithms
that can be used to carry out this pro-
cess. A trip around the main email
scalability algorithms is done and how
each of them can in a simple way in-
crease the performance of a computer.
And it is also an analysis of the tech-
niques for evaluating the algorithms
and more suitable for the use of an
operating system.
Keywords: scheduling, CPU, algo-
rithms.
Referências
SILBERSCHATZ, A.; GALVIN, P. B.;
GAGME, G. Sistemas operacionais:
conceitos e aplicações. 6. ed. Rio de Janeiro:
Elsevier, 2004. Citado na página 6.
∗leanmattos93@gmail.com
7
	Resumo
	Críterios de Escalonamento
	Algoritmos de Escalonamento
	Escalonamento First Come First Server - FCFS
	Escalonamento Shortest Job First - SJF
	Escalonamento por Prioridade
	Escalonamento Round-Robin
	Escalonamento Multilevel Queue
	Escalonamento Multilevel Feedback-Queue
	Avaliação de Algoritmo
	Modelagem Determinística
	Modelos de Enfileiramento
	Simulações
	Implementação
	Abstract
	Referências

Outros materiais