Você está na página 1de 31

Princípios da Computação/ LEI-ISEP

Processos

Regente: Maria João Viamonte (mjv@isep.ipp.pt)


Processo

“Fluxo de atividade autónomo que executa um


conjunto de ações que são determinadas por um
programa”
Conceito de Processo

• Pode ser definido como:


• Uma instância de um programa em execução
• No entanto um programa pode ser constituído por n processos
• Unidade de trabalho de um sistema operativo multiprocesso
• Portanto, um processo contém:
• Código executável
• Dados (variáveis globais)
• Estado do Processador (registos, stack, program counter)
• Ficheiros abertos
• Tempo de UCP consumido
• …
O Sistema Operativo
Um SO multitarefa deve:
• Alternar a execução de processos de forma a maximizar a
utilização da UCP
• Fornecer tempo de resposta razoável
• Alocar recursos a processos
• Suportar a criação de processos pelo utilizador
• Suportar a comunicação entre processos
Processos
Criar processos
O que faz o SO para criar processos:
Constrói estruturas de dados
Aloca espaço de endereçamento

Por ex.:
Quando o utilizador abre uma sessão de shell
Quando gerado por outro processo

Algumas razões para terminar um processo:


Tempo excedido
Falta de memória
Uso de instrução privilegiada

Modelo Simples
despacho

entra sai
ready running

pausa

(a) Diagrama de transição de estado

entra fila despacho sai


UCP

pausa

(b) Possível implementação


Problemas com o Modelo Simples

Um processo que não está em execução estará sempre pronto


a executar?
Não
Pode estar bloqueado
Ex.: à espera de uma operação de I/O

Pelo que o escalonador só pode escalonar processos que se


encontrem na fila dos ready
Modelo Mais Elaborado
despacho
libertado
admissão
new ready running terminated

interrompido
evento
espera
ocorre
evento

waiting

(a) Diagrama de transição de estado


Modelo Mais Elaborado

fila dos prontos despacho


admissão UCP sai

interrompido

fila evento 1
ocorre evento 1 espera evento 1

fila evento 2
ocorre evento 2 espera evento 2

(a) Possível implementação


Primitivas de Despacho
Primitivas de Despacho
New
O processo está a ser criado
Ready
O processo está pronto para ser executado
Running
O código referente a um processo está a ser executado
Sistemas multiprocessador podem executar vários processo em paralelo, um em cada
processador
Waiting
O processo está à espera que um evento específico ocorra (por ex. operação de I/O ou
receção de um sinal)
Terminated
O processo finalizou a sua execução
Nota:
Em máquinas com apenas uma UCP só um processo pode estar no estado running
Pode haver vários processos no estado ready e no estado waiting
Processos
Nota:
Os estados definidos atrás apenas representam os casos
mais habituais num SO

• A implementação do modelo de processo pelo SO pode


necessitar de outros estados
• Por ex.: Em LINUX é definido o estado de Zombie para os
processo que já terminaram mas cujos recursos ainda não
foram totalmente libertados
Comutação de Processos

• Para maximizar a UCP há que ter sempre um processo em


execução

• Isto implica:
• Troca de processos em execução

• A operação que permite retirar um processo em execução e


substitui-lo por outro, implica saber:
• Onde o processo está localizado

• Os atributos do processo
Representação do Processo

• Cada processo é representado perante o SO por uma


estrutura contendo a sua informação, o Process Control
Block (PCB)

• O PCB é o conjunto de atributos do processo e pode ser


dividido em três partes:
• Identificação do processo

• Informação de estado do processador

• Informação de controle do processo


Representação do Processo
• Identificação do Processo - Composta por identificadores numéricos que
incluem:

• Identificador do processo (PID)

• Identificador do processo que o criou

• Identificador do utilizador

• Informação de Estado do Processador - Contida nos registos do processador:

• Registos visíveis pelo utilizador

• Registos de controle de estado

• Apontadores de pilha
Representação do Processo
• Informação de controle do processo:

• Estado e escalonamento, de acordo com a máquina de estados definida


anteriormente, que inclui:

• Estado do processo (por ex. ready)

• Prioridade

• Suporte ao escalonamento (por ex. há quanto tempo está à espera)

• Evento (por ex. identificação do evento que o processo está à espera)

• Estrutura dos dados, por ex. relação pai-filho

• Comunicação entre processos

• Privilégios, por ex. tipos de instruções que podem ser executadas

• Gestão da memória

• Valores do registo base e limite

• ponteiro para a tabela de páginas


Process Control Block (PCB)
Comutação entre Processos

• A partilha do processador requer um mecanismo de comutação


de processos, a que se dá o nome de comutação de contexto

• A comutação entre dois processos faz-se:


• Salvaguarda do estado do processo que perde a UCP

• Restauração do estado do processo que ganha a UCP


Comutação entre Processos
Escalonamento

• Um dos objetivos da multi-programação é a maximização da


utilização da UCP

• O escalonador tem como objetivo decidir qual o próximo


processo a ser executado em função dos seus parâmetros
• Note-se que em sistemas mono-processador apenas pode ser
executado um processo de cada vez
Filas de Escalonamento

• As filas de escalonamento permitem ao SO saber o


estado dos processos (PCBs)

• Existem filas para cada um dos estados, assim como


filas para coordenar o acesso aos dispositivos de I/O
Filas de Escalonamento
Ready queue – esta fila contém
os PCBs dos processos
residentes em memória que
estão no estado ready, isto é
processos que estão prontos
e à espera de serem
executados
Device queue – lista dos PCBs
dos processos à espera dum
dispositivo I/O
Exemplo: Disk unit 0 queue
Filas de Escalonamento

Processo emite
um pedido de
I/O

Processo cria
um novo sub-
processo

Processo
removido em
Processos no consequência
estado de de uma
Waiting interrupção
Filas de Escalonamento
• Portanto, durante a execução de um processo várias coisas podem acontecer:

• o processo pode emitir um pedido I/O, e consequentemente ser


colocado numa fila de I/O device

• O tempo que o escalonador tinha atribuído ao processo (time slice)


termina e consequentemente ser colocado na fila dos ready

• o processo pode criar um novo processo, ficando à espera que ele


termine e consequentemente ser colocado na fila dos waiting

• o processo pode ser removido da UCP em consequência duma


interrupção, transitando para a Ready queue
Escalonadores
• Um processo migra entre várias filas de escalonamento
durante o seu tempo de vida

• O SO deve selecionar processos destas filas com base em


algum método ou algoritmo

• Há três tipos de escalonadores:


• longo prazo (Sistemas de Processamento em Lotes)

• curto prazo

• médio prazo (Sistemas de partilha de tempo)


Escalonadores

• Longo prazo
• Long-term scheduler / Job scheduler, seleciona os processos que
estão prontos a serem executados e carrega-os em memória

• curto prazo
• Short-term scheduler / CPU scheduler, seleciona da lista dos
processos ready o que vai para a UCP

• Long-term scheduler vs Short-term scheduler


Escalonadores
• Long-term scheduler vs Short-term scheduler
• A frequência de execução

• O Short-term scheduler tem que selecionar frequentemente um processo


para a UCP, pelo que deve ser rápido

• O Long-term scheduler é executado com menos frequência, pode demorar


até alguns minutos a criação de novos processos no sistema
• Pode ser invocado apenas quando um processos termina

• Pode ser mais lento

• O ideal é em média o número de processos que terminam ser igual ao


número de processos novos
Escalonadores

• Os processos podem ser caracterizados como:


• I/O-bound process – gasta mais tempo a fazer operações I/O
do que cálculos na UCP; consequentemente, há bastantes
UCP bursts de curta duração

• UCP-bound process – gasta mais tempo a fazer cálculos na


UCP; consequentemente, há poucos UCP bursts de longa
duração
Escalonadores
• Escalonador de longo-prazo (ou escalonador de processos):

• Seleciona os processos que devem ser levados para a fila


Ready de modo a que existe uma mistura equilibrada entre
processos I/O bound e UCP bound
• Se os processos forem essencialmente I/O bound então a fila dos
ready pode estar frequentemente vazia e o escalonador de curto-
prazo com pouco trabalho

• Se os processos forem essencialmente UCP bound então a fila dos I/O


waiting pode estar frequentemente vazia e os dispositivos de I/O
pouco usados
Escalonadores
• Portanto:

• Escalonador de longo-prazo é invocado com pouca frequência (segundos, minutos) ⇒ (pode ser
lento)

• Controla o grau de multiprogramação

• Utilizado essencialmente em sistema batch

• Pode estar ausente no Linux e no Windows


• Todos os processos novos são colocados em memória para serem escalonados pelo Short-term
scheduler

• Escalonador de curto-prazo (ou escalonador da UCP):

• Seleciona que processo vai de imediato para a UCP

• É invocado com bastante frequência


milissegundos ⇒ ser rápido

• Exemplos: Linux e Windows


Escalonadores
• Escalonador de médio-prazo

• Permite remover processos da memória

• Mais tarde pode ser retomada a execução destes processos (Swapping)

• Devido a falta de memória ou para uniformizar o conjunto de processos


em execução

Você também pode gostar