Você está na página 1de 32

Universidade Estadual do Piauí - UESPI

Campus Alexandre Alves de Oliveira - Parnaíba/PI


Bacharelado em Ciência da Computação

Gerência do Processador

Átila Rabelo Lopes


Sistemas Operacionais I
Introdução

• Ambiente multitarefa:
• Vários processos disputam o tempo do processador

• Dificuldade:
• Escolher o próximo processo a ser executado

• Solução:
• Escalonador de processos:
• Rotina do SO implementada com algoritmos de seleção
(escalonamento)
Escalonadores
• Função:
• Selecionar um processo para execução;

• Atribuir uma fatia de tempo (quantum) para cada processo.

• Objetivo:
• Implementar uma política de escalonamento de processos.

• O SO possui um módulo responsável por efetuar a troca de


contexto (Dispatcher).
Critérios de Escalonamento
• Utilização da CPU
• Processador passar maior parte do tempo ocupado
(recomendado)

• Throughput
• Nº de processos executados num determinado intervalo de
tempo (maximizar)

• Tempo de turnaround
• Tempo do ciclo de vida do processo (minimizar)
• Tempo de espera por (Alocação de memória, Fila de prontos,
Execução, Operações de E/S)

• Tempo de resposta
• Intervalo de tempo (solicitação/resposta) - (minimizar).
Tipos de escalonadores

• Não-preemptivo:
• Permite que os processos rodem até o fim de sua execução
sem ser interrompidos por eventos externos.

• Preemptivo:
• Capaz de suspender processos que poderiam continuar
executando.
Não-preemptivo

• Implementado em ambientes multiprogramáveis:


• Processamento Batch.
• Nenhum evento externo (gerado pelo SO) interrompe a
execução do processo

• Tipos de interrupções (eventos internos do processo):


• Término da execução
• Requisição de E/S ou sincronização (processo solicita)
• Liberação voluntária do processador a outro processo (yield)
• Executa instrução do próprio código (processo) que gera mudança de
contexto (estado de espera)
Preemptivo

• Implementado em ambientes multiprogramáveis:


• Sistemas de tempo real
• Possibilita a execução por prioridade;

• Compartilhamento balanceado:
• Processador utilizado uniformemente pelos processos.
Preemptivo

• Tipos de interrupções:
• Término de execução do processo
• Requisição de E/S ou sincronização
• Liberação voluntária do processador a outro processo
• Interrupção de relógio
• Processo com maior prioridade
Algoritmos de escalonamento
• Algoritmo para seleção do próximo processo a ser executado

• Objetivo:
• Obter bom tempo médio de escalonamento.

• Tipos de algoritmos:
• Não-preemptivos
• FIFO, SJF, Cooperativo

• Preemptivos
• Round robin (circular), Múltiplas filas
Escalonamentos Não-Preemptivo
FIFO (First In First Out)

• Simples de implementar

• Utiliza a fila de prontos

• Funcionamento:
• O processo que está no início da fila é o próximo a executar;
• Processos que mudam para o estado pronto (evento interno) são
inseridos no final da fila;
• Processo executa até que:
• Libere explicitamente o processador;
• Realize uma chamada de sistema (I/O);
• Termine sua execução.
FIFO (First In First Out)
• Desvantagem:
• Prejudica processos I/O bound
• Tempo médio de espera na fila de execução:
• Ordem A-B-C-D = (0 + 12 + 20 + 35 ) / 4 = 16.75 u.t.
• Ordem D-A-B-C =
• (0 + 5 + 17 + 25 ) / 4 = 11.7 u.t.
FIFO (First In First Out)
FIFO (First In First Out)
SJF (Shortest Job First)

• Escolhe primeiro o processo que demanda o menor tempo;


• Cada processo é relacionado ao seu tempo de execução.

• Quanto menor o tempo de execução, maior a prioridade dada pelo


escalonador.

• Problema
• Determinar o tempo de execução de um processo antes de executá-lo:
• Alternativa: histórico de execução do processo
SJF (Shortest Job First)
SJF (Shortest Job First)
SJF (Shortest Job First)
Cooperativo

• Busca aumentar o grau de multiprogramação em políticas de


escalonamento não-preemptivas.
• Melhor balanceamento de carga

• O processo em execução verifica (fila de mensagens) se


existem processos na fila de pronto
• Se houver, o processo libera voluntariamente o processador (evento
interno) e retorna a fila de pronto

• Problemas:
• Códigos mal escritos pode entrar em looping (monopólio da CPU)
Escalonamentos Preemptivo
RR (Round Robin – circular)

• Cada processo recebe um tempo para utilizar o


processador.
• Quantum = intervalo de tempo:
• Evita monopólio da CPU.

• Se no final do quantum o processo não terminou, a


CPU sofre uma preempção e outro processo entra
para executar;

• Quando um processo termina o seu quantum, ele é


colocado no final da fila. (Fila de espera circular).
RR (Round Robin – circular)

• Importância para o tamanho do quantum.

• As mudanças de contexto consomem tempo.

• Influências do quantum no desempenho do algoritmo:

• Se a troca de contexto durar 1ms. e o quantum for 4 ms (todos os


processos), 20% da CPU é para a troca de contexto (alto overhead)

• Se a troca de contexto durar 1ms. e o quantum for 100 ms (todos os


processos), o overhead passa a ser apenas 1% da CPU.
RR (Round Robin – circular)

• Funcionamento:
• O 1º processo da fila é executado por um tempo (quantum),
• Após o quantum, é interrompido e inserido no final da fila;
• Calcule o tempo de espera e turnaround de cada processo,
e o percentual do overhead (mudança de contexto = 0,5 ms)
RR (Round Robin – circular)
• Problemas
• Overhead:
• Tempo gasto para salvar e restaurar o contexto.

• Definir o quantum:
• Muito grande: se aproxima do FIFO;
• Muito pequeno: aumenta overhead (troca de contexto)
• Ex: quantum = 20 ms (processamento) e 5 ms para troca de contexto → 20% do tempo com
overheads.

• Valores comuns: 10-100 miliseg.

• Compromete processo I/O bound:


• Esperam da mesma forma que processos CPU bound, porém, muito provavelmente, não
utilizam todo o seu quantum

• Solução: prioridades
RR (Round Robin – circular)

• Prioridade em preemptivos e não-preemptivos:


• Preemptivos:
• O processo em execução perde a CPU

• Não-preemptivos:
• O processo com maior prioridade entra no início da fila de espera e
espera acabara a execução do processo corrente
Escalonamento por Prioridades

• Projetado para sistemas de tempo real.

• A preempção é feita com base na prioridade de cada


processo.
• Processo com maior prioridade (pronto) é sempre o escolhido
para execução,

• Processos com valores iguais são escalonados seguindo o


critério FIFO ou Time shared.
Algoritmo Por Prioridade
• Cada processo possui uma prioridade;
• Maior prioridade executa primeiro

• Problema
• Starvation: um processo pode nunca ser executado.

• Tipos de prioridade:
• Estática:
• Mantida durante todo o ciclo de vida do processo.

• Dinâmica:
• A prioridade é ajustada de acordo com o estado de execução do processo
• Ex.: ajustar a prioridade em função da fração do quantum que foi realmente
utilizada
• q = 100 ms
• Processo A utilizou 2ms - nova prioridade = 100/2 = 50
• Processo B utilizou 50ms - nova prioridade = 100/5 = 2
Algoritmo Por Prioridade
Escalonamento Circular com Prioridades
• Utiliza fatia de tempo e prioridade para executar os
processo.

• O escalonamento ocorre quando:


• Termina o processamento,
• Voluntariamente,
• Termina o quantum
• Prioridade.

• Vantagem:
• Melhor balanceamento no uso do processador em sistemas de
tempo compartilhado.
Escalonamento Circular com Prioridades
Escalonamento por Múltiplas Filas
• Neste escalonamento existem diversas filas de processos no estado de pronto,
cada qual com uma prioridade específica.

• Os processos são associados às filas em função de características próprias:


• Importância para a aplicação, tipo de processamento, área de memória necessária,
etc.

• Cada fila de pronto possui um mecanismo próprio de escalonamento:


• Fila-1: pode usar o escalonamento por prioridades,
• Fila-2: pode usar o escalonamento FIFO.......

• Vantagem:
• Permitir diferentes mecanismos de escalonamento no mesmo SO.
Escalonamento Por Múltiplas Filas

Você também pode gostar