Você está na página 1de 4

Método de Escalonamento de Processos

Artur M. Barros, Erik N. O. Batista, Iago D. Gonçalves, Júlio C. Barros, Lucas P.


C. Silva, Marcos F. V. Souza, Thiago M. A. S. Silva.

Centro Universitário - Faculdade dos Guararapes (UNIFG)


Caixa Postal 54400-160 - Piedade, Jaboatão dos Guararapes – PE – Brasil

Turma 2° período, Noite, Ciência da Computação – Faculdade dos


Guararapes (UNIFG)
erik.nathan28@alunofg.com.br, Julio_339@alunofg.com.br, luca-
porfirio@alunofg.com, Felipe.vasconcelos2004@alunofg.com.br,
thiago_20@alunofg.com.br, arturmandel@alunofg.com.br

Abstract.
In general, the process scheduler defines what will be the next process to be
executed by the CPU, using a sequential organization makes only one process
at a time run, thus not overloading the CPU. It is divided into classes, where
each one has a function, so that the scheduler works more efficiently.

Resumo.
De forma geral, o escalonador de processos define qual será o próximo
processo a ser executado pela CPU, utilizando uma organização sequencial
faz com que apenas um processo de cada vez seja executado, não
sobrecarregando assim, a CPU. O mesmo é dividido em classes, onde cada
uma tem uma função para que o escalonador trabalhe de forma mais
eficiente.

1. O que são Processos?

Em resumo, um processo é um programa em execução. Um programa é uma sequência


de instruções executáveis, podendo conter vários fluxos de execução e existência de
comandos interativos e condicionais. Um processo pode ser entendido como uma
entidade passiva, mas ele também pode ser considerado como uma entidade ativa que
descreve a execução de um dos possíveis fluxos do programa. A execução de um
processo se dá de forma sequencial, ou seja, em qualquer instante de tempo no máximo
uma instrução está sendo executada.

2. O que é Escalonamento?

Há muito tempo atrás os primeiros computadores tinham uma forma simples de


executar os processos: a próxima fita de processo na fila seria executado. Porém com o
passar dos anos as novas tecnologias exigiam uma velocidade maior para se executar
processos, criando então o multiprocessamento. Com essa tecnologia era necessário que
implementasse uma nova forma do processador lidar com as tarefas, então surgiu o
escalonamento. O Escalonador se preocupa em executar o processo certo e também
fazer uso eficiente para a UCP não se sobrecarregar e ter uma resposta veloz.
A visão que o sistema operacional tem dos processos e seus respectivos estados
pode ser representada por filas formadas pelos BCP's (Blocos de Controle de
Processos). Assim, um processo que esteja no estado pronto é mantido numa fila de
processos prontos. Quando um processo sai do estado de executando e vai para o estado
de bloqueado é porque alguma interrupção ocorreu e alguma condição externa deve ser
atendida. Ele é posto na fila associada ao dispositivos que será usado durante o processo
de entrada e saída. Por exemplo, se por acaso o acesso for ao disco, o processo tem que
ser colocado na fila desse dispositivo, caso ele esteja em uso por algum outro processo.
A escolha do processo que vai ser recolhido de uma fila recebe o nome de
escalonamento e é posta por um componente do sistema operacional chamado de
escalonador.
Existem dois tipos de escalonadores, são eles os de longo e curto prazo. O de
longo prazo é responsável pela escolha de quais programas vão ser carregados na
memória e passar para o estado de pronto, ele é executado em intervalos de tempo
maiores, já que um programa só é liberado para área de memória quando acaba a sua
execução. Já o segundo, o de curto prazo, é responsável por escolher qual processo vai
ser tirado as fila de pronto e ser executado na UCP. Uma grande importância dos
escalonadores de longo prazo é que eles determinam o nível de programação do sistema,
controlando o número de programas carregados na memória ao mesmo tempo.

3. Escalonamento de Processos

O escalonamento da UCP trabalha com o problema de decidir qual dos processos que se
encontram na fila de prontos será escolhido para ser executado. Existem várias maneiras
de se implementar essa escolha, porém é importante salientar que ela influencia tal
eficiência do sistema operacional.
Como os algoritmos tem algumas propriedades diferentes, existe há necessidade
de alguns critérios para escolher qual o melhor algoritmo a ser usado numa situação
reservada, são eles:
● Utilização da UCP
● Throughput (taxa de saída)
● Turnaround time (tempo de reviravolta)
● Tempo de espera
Uma vez selecionado um algoritmo para impor o escalonamento, é desejável que
a taxa de utilização e a taxa de saída sejam maximizadas, que o turnaround time, os
tempos de espera e o tempo de resposta sejam otimizados e que todos os processos
recebam o processador em algum momento para que ele possam ser executados.
Também existe a questão de quando escalonar, pois leva-se em conta muitas
situações diferentes. Como por exemplo quando um novo processo é criado dentro do
mesmo processo, nesse caso o escalonador poderá escolher um dos dois para ser
executado. Outro caso que também pode ser necessário o escalonamento é ao término
de um processo, pois dependendo do algoritmo, que será abordado mais a frente, pode
acontecer que não seja necessariamente o próximo da fila mas o que tem um tempo
menor de UCP que será executado, e muitos outros casos.
Os algoritmos de escalonamento são divididos em duas classes, são elas
preemptivos e não-preemptivos. No preemptivos, o processo que está sendo
executado pela UCP pode ser interrompido e perder o controle do processador para o

outro processo mais prioritário. No não-preemptivos, o processador não pode ser


retirado do processo que está sendo executado, ele só pode ser retirado quando o seu
ciclo de UCP acabar.
O escalonamento de processos pode ser representado de forma visual através de
um modelo intitulado diagrama de Gantt, que nada mais é que a representação da ordem
de execução dos processos e o tempo de execução de cada tópico do processo.
Figura 1. Representação de um Escalonamento em gráfico de Grantt

4. Classes de escalonamento de processos:


A seguir serão mostrados alguns dos mais importantes algoritmos de escalonamento de
cada uma das classes.

4.1 First-Come-First-Server (FCFS)

Esse algoritmo é a implementação mais simples. O processo que o primeiro requisita o


processador é atendido primeiro. Neste caso, a fila de prontos é implementada seguindo
o modelo FCFS onde o primeiro a entrar na fila é o primeiro a sair dela. Quando um
processo entra na fila de prontos o seu PCB é sempre colocado no final da fila. Quando
a UCP fica livre ela é entregue ao primeiro processo da fila.

4.2 Shortest Job First (SJF)


O processador é alocado para aquele processo com menor tempo de UCP. Se for usado
o método não-preemptivo, o processo iniciado não pode ser interrompido. Porém se for
preemptivo, se chegar um outro processo com menor tempo que o tempo restante do
processo em execução, então há escalonamento e o processo que chegou depois assume
a UCP.
4.3 Escalonamento por Prioridade
Os processos vem com um valor informando sua taxa de prioridade. Aquele que tem
uma atribuição maior, conta como o mais urgente, logo, será executado primeiro.

4.4 Escalonamento Circular (Round-Robin)


Para cada processo é criado um tempo de intervalo. Nesse intervalo (conhecido como
quantum) o processo tem toda a liberdade de ser executado, porém após a consumação
de seu período ocorrerá a preempção na UCP, trocando então para o próximo processo.

4.5 Escalonamento por Múltiplas Filas


Nesse Método há diferentes filas, onde a prioridade não pertence ao processo, mas sim a
própria fila. A grande vantagem nesse escalonamento é a possiblidade de aplicar
diferentes mecanismos para diferentes filas.

4.6 Escalonamento em Tempo Real


Existe nesse caso um prazo real de tempo onde deve ser realizado tal tarefa. Funciona
com prazos para que se execute. Existe a categoria Tempo Real Critico, onde o tempo-
limite é absoluto e tal tarefa tem que ser executada dentro deste tempo caso contrario
surgirá um grave problema, e existe o tempo Real Não Critico, onde o descumprimento
do prazo ainda é tolerável. Para isso deve-se prever o tempo de cada processo para que
não ocorra problemas.
Referências
TANENBAUM, A. S. Sistemas Operacionais Modernos 4ª ed. (2015) Cap 2. Páginas
103-113.
SILBERSCHATZ, A., GAGNE, G., GALVIN, P. B. Sistemas Operacionais com Java:
conceitos e aplicações. Rio de Janeiro : Campus, 2004.
TANENBAUM, A. S., WOODHULL. Sistemas Operacionais: projeto e
implementação. 2a. ed.. Porto Alegre : Bookman, 2000.

Você também pode gostar