Você está na página 1de 37

DEPARTAMENTO DE CIÊNCIAS E

TECNOLOGIA
LICENCIATURA EM: ENGENHARIA INFORMÁTICA DE
GESTÃO

SISTEMAS OPERATIVOS

Gestão de Processos

DOCENTE: MISAEL LOPES


- No Linux temos um recurso chamado copy-on-write ou CoW, onde o segundo processo
não usa praticamente nenhuma memória adicional e fica apontando pra memória do
processo original assim que é criado.

Se a memória não for modificada, ambos podem reaproveitar o mesmo dado em vez
de fazer cópias desnecessárias e só coisas que o segundo processo começa a gravar
começa a usar mais memória e fica invisível ao processo original e vice-versa.

- No Windows o equivalente ao fork realmente duplica a memória, que é outro motivo de


porque criar processos no Windows é considerado mais caro, então vemos mais
soluções multi-thread.
Windows 11 Task Manager
Ubuntu 22.04 LTS System Monitor
O que é Escalonador(Scheduler)?

Parte essencial do kernel que gerencia a execução de processos e threads.

Trocas de Contexto.

Escalonador é o processo que escolhe qual será o próximo processo a ser


executado.

Existem diversas(os) técnicas/algoritmos para escalonamento de processos.

É o processo mais baixo do SO tendo o maior número de prioridade.


Escalonador(Scheduler)

Acesso a Estruturas de Dados do Kernel:

Precisa acessar estruturas de dados no kernel para obter


informações sobre os processos em execução, como suas
prioridades, estados, tempos de execução, entre outros.
O que é Escalonador(Scheduler)?
Troca de Contexto

a) Mudança do estado de execução de um processo ou thread


para outro.

b) Salvar o estado do processo ou thread atualmente em


execução e restaurar o estado do próximo processo ou
thread a ser executado.
Troca de Contexto

A mudança de contexto leva a uma sobrecarga (overhead) de


tempo (tarefa cara):

a) É preciso todas levar as informações do processo que está


saindo/entrando na CPU em seu BCP (Bloco de controle de processo).
b) Salvar o conteúdo dos registradores.
Componentes Envolvidos

1. Despachante (Dispatcher):
a) Armazena e recupera o contexto;
b) Actualiza as informações no BCP;
c) Processo relativamente rápido.

2. Escalonador (Scheduler):
a) Escolhe a próxima tarefa a receber o processador;
b) Parte mais demorada.
Quando o Escalonador é chamado?

1. Um novo processo é criado.


2. Quando um processo cria outro, qual executar? Pai ou filho?
3. Um processo chegou ao fim e um processo pronto deve ser
executado.
4. Quando um processo é bloqueado (dependência de E/S), outro
deve ser executado.
Quando E/S ocorre, o Escalonador deve:

1. Executar o processo que estava esperando esse evento;


2. Continuar executando o processo que já estava sendo
executado;
3. Executar um terceiro processo que esteja pronto para ser
executado.
Categorias do Escalonador

1. Preemptivo:
a) Quando um processo pode, por algum motivo, perder seu uso da
CPU;
b) Provoca uma interrupção forçada de um processo para que outro
possa usar a CPU.

2. Não preemptivo:
a) Permite que o processo sendo executado continue sendo executado.
CONTINUA…
Algoritmos de Escalonamento

1. Sistemas Batch (Lote)


2. Sistemas Interactivos
3. Sistemas de Tempo Real
Algoritmos de Escalonamento em Lote (Batch)

1. Primeiro a entrar, primeiro a sair (First-in First-out )ou FIFO;


2. Menor Tarefa Primeiro (Shortest Job First ) SJF;
3. O Menor Tempo Restante será o Seguinte (Shortest Remaining
Time Next ) SRTN;
Primeiro a Entrar, Primeiro a Sair(First-In
First-Out ou First-Come-First-Serve)

1. Não preemptivo;
2. Processos são executados na CPU seguindo a ordem de requisição
chegada;
3. Quanto mais cedo chegam, mais cedo são processados
4. Fácil de entender e programar;

Desvantagem:
Ineficiente quando há processos que demoram na sua execução.
Menor Tarefa Primeiro (Shortest Job First)

1. Não preemptivo;
2. Deve-se prever o tempo de execução do processo;
3. Menor processo da lista é executado primeiro;
4. Tempo médio
Desvantagens:
a) Todos os processos precisam ser conhecidos de antemão.
b) Se jobs (tarefas) curtas começarem a chegar, as tarefas longas podem
demorar a ser executados.
O Menor Tempo Restante será o
Seguinte (Shortest Remaining Time Next)
1. Preemptivo;
2. Versão preemptiva do MP;
3. Processos com menor tempo de execução são executados
primeiro;
4. Se um processo novo chega e seu tempo de execução é
menor do que o processo corrente na CPU, a mesma
suspende o processo corrente e executa o processo que
acabou de chegar.
Shortest Remaining Time Next

Desvantagem:
a) Processos que consomem mais tempo podem demorar muito
para serem finalizados se muitos processos pequenos
chegarem (inanição ou starvation)
b) Excepto que, pela preempção no SRTN, o processo, mesmo
rodando, seja interrompido.
Algoritmos de Escalonamento em Sistemas
Interactivos

1. Rodízio;
2. Prioridade;
3. Multilevel Queue Scheduling;
4. Menor Processo é o Próximo (Shortest Process Next);
5. Garantido;
6. Loteria (Lottery);
7. Justa-Partilha (Fair-Share).
Rodízio (Round Robin)

1. Antigo, mais simples e mais utilizado;


2. Preemptivo;
3. Cada processo recebe um tempo de execução chamado
quantum;
4. Ao final desse tempo, o processo é suspenso e outro processo
é colocado em execução;
5. Também suspenso em caso de interrupção;
6. Scheduler mantém uma fila de processos prontos.
Rodízio (Round Robin)

1. Os processos são colocados em uma fila circular (de pontos) e


executados um a um.
2. Quando o seu tempo acaba, o processo é suspenso e volta para
o final da fila.
3. Processo a seguir (agora o primeiro da fila) é colocado em
execução.
4. Quando um processo solicita E/S, vai para a fila de
bloqueados e, ao terminar a operação, volta para o final da fila
dos prontos.
Rodízio

1. Problema:
Tempo de chaveamento de processos;
2. Dilema: Quantum:
Se for muito curto, ocorrem muitas trocas diminuindo a
eficiência da CPU;
Se for muito longo, o tempo de resposta é comprometido.
Prioridade

1. Cada processo possui uma prioridade;


2. Os processos prontos com maior prioridade são executados
primeiro;
3. Prioridades são atribuídas dinamicamente ou estaticamente;
4. Não Preemptivo;
Multilevel Queue Scheduling
1. Os processos são divididos em filas de prioridade, e cada fila pode ter
um algoritmo de escalonamento diferente.
2. Os processos se movem entre as filas com base em critérios como
prioridade, tempo de execução, etc.

Multilevel Feedback Queue Scheduling


1. Semelhante ao multilevel queue, mas os processos podem se mover entre
as filas de prioridade com base em seu comportamento de execução
passado.
2. Processos que usam menos CPU podem subir na prioridade, e processos
que usam mais CPU podem descer.
Shortest Process Next

1. Mesma ideia do Shortest Job First


2. Processos Interativos: não se conhece o tempo necessário para
execução
3. Estimativa de Tempo!
4. Com base em execuções antigas da mesma tarefa
5. Verificar o comportamento passado do processo e estimar o
tempo
Garantido

1. Garantias são dadas aos processos


2. N usuários (ou processos, em sistemas monousuário) → 1/n
do tempo de CPU para cada usuário
Lottery (Loteria)

1. Cada processo recebe “bilhetes” que lhe dão direito a recursos do


sistema (inclusive CPU);
2. A probabilidade de um processo ser escolhido é proporcional ao número
de bilhetes que ele possui.
3. Quando um escalonamento deve ser feito, escolhe-se aleatoriamente um
bilhete;
4. Processos mais importantes podem receber mais bilhetes;
5. Processos podem doar bilhetes para colaboração com outros.
Lottery (Loteria)

1. Precisa garantir que todos terão sua vez de executar;


2. Um modo é manter duas filas:
Bilhetes já sorteados
Bilhetes não sorteados
3. Quando a lista de não sorteados termina, os bilhetes da lista de sorteados
são transferidos a ela, reiniciando o processo.
4. Mas não é estritamente necessário "reiniciar o processo" quando a lista de
não sorteados termina. Em vez disso, o processo pode continuar no
sistema com sua quantidade atual de bilhetes até que seja terminado ou
bloqueado.
Fair-Share

1. O dono do processo é levado em conta;


2. Se usuário A possui 9 processos e usuário B apenas 1
processo, o usuário A então ganha 90% do uso da CPU, com o
Round-Robin (injusto)
3. Se a um usuário foi prometida uma certa fatia de tempo, ele a
receberá, independentemente do numero de processos (ex:
50% para A e 50% para B)
Fair-Share

1. Usuário 1 → A, B, C, D
2. Usuário 2 → E
3. Foi prometido 50% da CPU a cada um, e foi usado Round-
Robin:
A, E, B, E, C, E, D, E, A, E, …
4. Se 2/3 devem ir ao usuario 1:
A, B, E, C, D, E, A, B, E, …
Algoritmos de Escalonamento de Tempo-Real

1. Tempo é um factor crítico;


2. Típicamente, um ou mais aparatos externos ao computador geram
estímulos;
3. O computador deve reagir apropriadamente dentro de um intervalo fixo
de tempo;
4. Sistemas Críticos:
- Piloto automático de aviões;
- Monitoramento de paciente em hospitais;
- Controle de automação em fábricas.
Algoritmos de Escalonamento de Tempo-Real

1. Tipos de STR:
1. Hard Real Time: atrasos não são tolerados;
Aviões, usinas nucleares, hospitais;
2. Soft Real Time: atrasos ocasionais são tolerados;
Bancos, Multimídia;
2. Para obter comportamento em tempo real:
- Programas são divididos em vários processos;
- Facilitar a definição do deadline de cada processo.
Algoritmos de Escalonamento de Tempo-Real

1. Eventos causam a execução de processos;


2. Quando um evento externo (sensor?) é detectado, cabe ao escalonador
arrumar os processos de modo que todos os prazos sejam cumpridos;
3. Eventos podem ser classificados como:
- Periódicos: ocorrem em intervalos regulares de tempo;
- Não periódicos: ocorrem em intervalos irregulares de tempo;
Algoritmos de Escalonamento de Tempo-Real

Algoritmos de Tempo-Real podem ser classificados por:


Estáticos: decisões de escalonamento antes do sistema
começar a rodar; Informações disponíveis previamente sobre
tarefas e prazos.
Dinâmicos: decisões de escalonamento em tempo de
execução.

Você também pode gostar