processos. programa: seqüência de instruções com diferentes fluxos de execução comandos...

91
Processos

Upload: internet

Post on 17-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Processos

Page 2: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa em execução (entidade ativa) Vários processos podem existir ao mesmo tempo no sistema Processador se reveza entre os processos

Conceitos de Processos

Page 3: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Quando o processador muda de um processo para outro, algumas informações devem ser salvas (identificação do processo, estado da máquina, ponteiro da área de dados, de código entre outras)Ao conceito de processo estão associadas algumas informações que caracterizam o seu contexto de execução

Conceitos de Processos

Page 4: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Termos: job = processo Um processo inclui

contador de instruções pilha área de dados

Conceitos de Processos

Page 5: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Vantagem aumento da taxa de utilização do processador melhor utilização dos recursos redução do tempo de execução de um conjunto de programas

A multiprogramação dá a idéia ao usuário de que ele possui uma máquina só para si

Conceitos de Multiprogramação

Page 6: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceitos de Multiprogramação

c3e3 s3c2e2 s2e1 c1 s1

c3e3 s3

c2e2 s2

e1 c1 s1

seqüencial

multiprogramado

Page 7: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceitos de Processo

Representação de um processo no SO bloco de controle de processo (PCB)

contém informações necessárias ao controle do processo pelas áreas de código e dados na memória

Page 8: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceitos de Processo

Informações associadas à cada processoInformações associadas à cada processo estado do processoestado do processo apontador de instruçõesapontador de instruções registradores da CPUregistradores da CPU informações relativas ao escalonamento da CPUinformações relativas ao escalonamento da CPU informações relativas ao gerenciamento de informações relativas ao gerenciamento de

memóriamemória dados para contabilidade (estatísticas)dados para contabilidade (estatísticas) informações relativas ao informações relativas ao statusstatus de I/O de I/O

Page 9: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Process Control Block

registradores

número do processo

apontador de instruções

limites na memória

lista de arquivos abertos

.

.

.

estado do processo

ponteiro

Page 10: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Criação de Processo

Sistemas antigos: só o sistema operacional podia criar novos processos Sistemas atuais, os usuários podem criar e destruir processos dinamicamente. SO deve fornecer chamadas para a manipulação e gerência de processos Quando um novo processo é criado, o seu PCB é preparado com as informações básicas e colocado na fila de prontos

Page 11: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Criação de Processo

atribui um atribui um pidpid único único alocar as estruturas de dados associadas a um alocar as estruturas de dados associadas a um

processoprocesso alocar o espaço necessário em memóriaalocar o espaço necessário em memória PCB deve ser iniciadoPCB deve ser iniciado consistência das listas do SO devem ser mantidasconsistência das listas do SO devem ser mantidas outras estruturas devem ser iniciadas (ex.: outras estruturas devem ser iniciadas (ex.: accountaccount))

Page 12: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Criação de Processo

Processo de usuário na memóriaProcesso de usuário na memória

Identificaçãodo processo

Informaçãodo Estado

Informaçãode Controle

Pilha doUsuário

Espaço deEndereçamento

privativo dousuário

(programas,dados)

Espaço deEndereçamentoCompartilhado

PCB

executando

pronto

bloqueado

PCB

PCBPCB

PCBPCBPCB

Estrutura comlista de processos

Page 13: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Criação de Processo

Processos pais criam processos filhos, que podem criar novos processos árvore de processos

Compartilhamento de recursos Pais e filhos compartilham os mesmos recursos Filhos compartilham um subconjunto dos

recursos do pai Pais e filhos não compartilham algum recurso

Execução Pai e filhos executam concorrentemente Pai aguarda até que os filhos terminem

Page 14: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Criação de Processo

Espaço de endereçamento Filho é uma cópia do pai Filho tem um novo programa carregado

Exemplos do UNIX Chamada ao sistema

fork cria novos processos execve usada após um fork para sobrepor o

espaço de endereçamento do processo com um novo programa

Page 15: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Árvore de Processos: SO Unix Típico

rootroot

pagedaemonpagedaemon swaperswaper initinit

user 1user 1 user 2user 2 user 3user 3

Page 16: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Finalização de Processos

Processos executam a última linha

chamar o SO para controlar a terminação (exit) saída de dados do filho para o pai

(wait) recursos do processo são desalocados pelo SO

Page 17: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Finalização de Processos

Pais podem terminar a execução de processos filhos (abort) filhos excederam os recursos alocados tarefa de encumbência do filho não é mais

necessária Pai está terminando

SO não permite que o filho continue se o seu pai terminou

terminação em cascata

Page 18: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Processos Cooperativos

Processos independentes não podem afetar a execução de outros processos.

Processos cooperativos podem afetar ou ser afetados pela execução de um outro processo envolvido

Vantagens da cooperação entre processos: Compartilhamento de informações Aumento da velocidade de computação (speedup) Modularidade Conveniência

Page 19: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Threads Thread (ou processo leve ) é uma unidade básica

de utilização da CPU, que consiste em: apontador de instruções conjunto dos registradores espaço de pilha

Uma thread compartilha com threads irmãs: área de código área de dados recursos do sistema operacional (coletivamente

conhecidos como tarefa) Um processo tradicional é equivalente a uma tarefa

com uma única thread

Page 20: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Interação entre Threads

Área de DadosÁrea de Dados

0100100001 0001111010001100010101010 101001011 110011111111111110000101010010 01 110000101011010100010111 11111011011111100100 101

Área de CódigoÁrea de Código

Recursos do SistemaRecursos do Sistema

Tar

efa

Apontador

45B8DD

Registradores

AX=9 BX=0

Pilha

var1, var2...

Thread 1

Apontador

FFE56A

Registradores

AX=7 BX=4

Pilha

var3, var8...

Thread 2

Page 21: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Threads em uma Tarefa

TarefaTarefa

Área de Dados

Área de Código

threads

apontadoresde instrução

Page 22: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Threads Numa tarefa dotada de múltiplos fluxos de execução,

enquanto um fluxo está bloqueado, um outro fluxo na mesma tarefa pode continuar executando cooperação de múltiplas threads em uma mesma

tarefa aumenta o throughput e o desempenho. aplicações que requerem o compartilhamento de

buffers (p.ex., produtores e consumidores) se beneficiam da utilização de threads

O mecanismo de threads permite que processos seqüenciais sejam executados paralelamente, apesar de poderem fazer chamadas ao sistema que bloqueiam processos

Page 23: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Threads

Threads oferecidas pelo kernel (Mach e OS/2) Threads no nível de usuários, suportadas acima

do kernel, via chamadas para um conjunto de bibliotecas no nível do usuário (Posix Pthreads)

Enfoque híbrido implementa tanto threads no nível do usuário quanto threads suportadas pelo kernel (Solaris 2)

Page 24: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Estados de um Processo

A execução de um processo é composta por ciclos de execução

na CPU (CPU-burst) na E/S (I/O-burst)

Durante o seu tempo de vida, um processo pode encontrar-se em diferentes estados

Page 25: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Estados de um Processo

novo: O processo está sendo criado executando: Suas instruções estão sendo executadas espera: O processo está esperando pela ocorrência de algum evento pronto: O processo está esperando para ser escalado para a execução terminado: O processo terminou sua execução

Page 26: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Estados de um Processo

Transições possíveis entre os estados

NENHUM NOVONOVO PRONTOPRONTO EXECUTANDOEXECUTANDO TERMINADOEXECUTANDO PRONTOEXECUTANDO BLOQUEADOBLOQUEADO PRONTOPRONTO TERMINADOBLOQUEADO TERMINADO

Page 27: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Estados de um ProcessoMODELO DE DOIS ESTADOS

Diagrama de transição

Diagrama de fila

ExecutandoParadoentrada saída

despachado

pausa/bloqueio(time-out ou interrupção)

pausa/bloqueio

Processadorentrada

despachado saídafila

Page 28: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Estados de um Processo

Novo Pronto

Bloqueado

Executando Saídaadmitir liberar

desbloqueado quando o

evento esperado

ocorre

Despachado(pelo escalonador)

bloqueado aespera de um evento

Time-out(preempção)

ou interrupção

FIM DO PROCESSO

CRIAÇÃODO

PROCESSO

MODELO DE CINCO ESTADOS

Page 29: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceito de Escalonamento Para cada estado, existe uma fila que contém os PCB's

nas transições entre estados, o PCB do processo é movido entre as filas apropriadas

executando

bloqueados

pcb3

prontos pcb1 pcb5 pcb2

pcb4 pcb6

pcb8 pcb7 pcb10

e/s disco

e/s terminal

e/s impressão

pcb9

Page 30: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Razões para Suspender Processos

Do SO Swapping: para liberar espaço na memória principal para trazer outro processo da memória secundária SO pode suspender um processo

em background utilitário suspeito de estar causando problemas

Solicitação de usuário interativo Temporização: determinados processos são executados periodicamente Solicitação do processo pai

Page 31: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceito de Escalonamento

Escalonamento consiste em determinar, dentre os processos prontos, qual o próximo processo a ser executado Realizado por um componente do sistema operacional denominado escalonador Dois tipos de escalonadores

longo prazo curto prazo

Page 32: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceito de Escalonamento

Escalonador longo prazo memória secundária memória principal

Escalonador curto prazo memória principal processador Principais objetivos

maximizar a utilização do processador maximizar o número de processos completados por unidade de tempo garantir que todos os processos recebam o processador minimizar o tempo de resposta para o usuário

Page 33: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceito de Escalonamento

Uma visão dos escalonadores do sistema operacional

Longo-Prazo

Fila de Prontos

FilaEspera

I/O

CPU

Curto-Prazo

FIM

Page 34: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceito de Escalonamento

Dispatcher: responsável por passar o controle da CPU para o processo selecionado pelo escalonador de curto prazo, envolve:

mudança de contexto mudança para o modo usuário salto para a posição adequada dentro do processo selecionado para reiniciar sua execução

Latência de despacho Tempo gasto pelodispatcher para interromper um processo e começar a execução de um outro

Page 35: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Filas de Prontos e de I/O

cabeçalho

finalPCB 3 PCB 1 PCB 37

cabeçalho

final

cabeçalho

final

registradores

.

.

.

PCB 5

registradores

.

.

.

PCB 19

cabeçalho

finalFila de

Prontos

PCB 22

cabeçalho

final...

Page 36: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Representação do Escalonamento

término de fatiade tempo

término de fatiade tempo

requisição deI/O

requisição deI/O

em espera poruma interrupção

em espera poruma interrupção

criação de umprocesso filho

criação de umprocesso filho

interrupçãoocorre

interrupçãoocorre

filho em execução

filho em execução

fila de dispositivoI/OI/O

fila de processos prontos CPUCPU

Page 37: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Adição de Escalonador Intermediário

fila de espera porI/O

I/O

fila de processos prontos

CPU

terminar

processos em execuçãoparcialmente removidos

da memória

carregar remover

Page 38: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceito de Escalonamento

Mudança de contexto CPU é chaveada para outro processo SO deve

salvar o estado do processo antigo e carregar o estado do novo processo

Implica overhead SO não realiza nenhum trabalho útil durante os chaveamentos

Tempo consumido é dependente do suporte de hardware fornecido

Page 39: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Chaveamento da CPU

interrupção ou chamada ao sistema

Pro

cess

o P

0

exec

.ex

ec.

ocio

so

Pro

cess

o P

1

ocio

soex

ecut

ando

ocio

sorecarregar estado no PCB0

armazenar estado no PCB1

armazenar estado no PCB0

recarregar estado no PCB1

.

.

.

.

.

.

interrupção ou chamada ao sistema

SO

Page 40: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Características dos Escalonadores

Escalonador da CPU é invocado muito freqüentemente (milissegundos)

precisa ser rápido Escalonador de processos é invocado com muito

pouca freqüência (segundos, minutos)

pode ser lento O escalonador de processos controla o grau de

multiprogramação do sistema

Page 41: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceito de Escalonamento

Os escalonadores são implementados por algoritmos dentro do sistema operacional Critérios para comparar a eficiência dos algoritmos

utilização da CPU (1) taxa de saída (throughput) (2) turnaround time (3) tempo de espera (4) tempo de resposta (5)

Objetivos maximizar (1) e (2) minimizar (3), (4) e (5)

Page 42: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Conceito de Escalonamento

Tipo de processamentobatchinterativoCPU boundI/O bound

Tipo de sistemamonoprogramado (?)multiprogramadotime-sharingtempo-realmultiprocessado

Tipo de processamentobatchinterativoCPU boundI/O bound

Tipo de sistemamonoprogramado (?)multiprogramadotime-sharingtempo-realmultiprocessado

política de escalonamento(scheduling policies)

política de escalonamento(scheduling policies)

Considerações

Page 43: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Critérios de Escalonamento

Orientados ao Usuário e Desempenho Uso do processador mede a porcentagem de

tempo em que a CPU está ocupada importante em tempo compartilhado não muito importante em sistemas monousuário e

tempo-real Tempo de resposta

processos interativos tempo entre uma requisição e o início da resposta

do ponto de vista do usuárioqual seria o tempo de resposta ideal ?

Page 44: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Critérios de Escalonamento

Orientados ao Usuário e Desempenho Deadlines (prazos) quando o prazo de término

pode ser especificado o sistema deveria fazer o melhor esforço para

atender todos os prazos Previsibilidade um dado processo deveria

executar sempre em um tempo médio previsível a carga do sistema não deveria impor

variações

Page 45: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Critérios de Escalonamento

Orientados ao Sistema e Desempenho Throughput (vazão) número de processos

completados por unidade de tempo, depende: do tamanho dos processos das políticas de escalonamento

Turnaround intervalo de tempo entre a submissão de um processo e o seu término inclui o tempo de execução, espera por recursos medida para sistemas batch

Waiting time quantidade total de tempo que um processo esteve esperando na fila de prontos

Page 46: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Critérios de Escalonamento

Orientados ao Sistema Justiça processos devem ser tratados igualmente,

a menos que especificado o contrário processos não deveriam sofrer starvation

Prioridades processos mais prioritários devem efetivamente ser favorecidos problema da inversão de prioridade

Balanceamento de recursos recursos devem ficar ocupados o máximo possível processos que não vão utilizar recursos

sobrecarregados devem ser favorecidos

Page 47: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Escalonamento de Processos

Longa duração decisão de se adicionar um processo ao pool de processos para serem executados admissão ao sistema

Duração média decisão de se adicionar ao número de processos que está completamente ou parcialmente na memória swapping, memória virtual

Page 48: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Escalonamento de Processos

Curta duração decisão de qual processo disponível será executado interrupção de clock e I/O, chamadas ao

sistema, signals I/O decisão de qual processo que está na fila

de espera por uma requisição de I/O será tratado

Page 49: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Escalonamento de Processos Tipos

não-preemptivo: processo executando não pode ser interrompido preemptivo: processo pode ser retirado do processador

Políticas mais comuns: First-Come-First-Served (FCFS) Shortest Job First (SJF) Prioridade Múltiplas Filas Round-Robin

Page 50: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

First-Come-First-Served

Não preemptivo por definição

Primeiro processo da fila é o primeiro a ser executado

Processos usam a CPU até terminar todo processamento Mesmo com alguma intercalação, processos com menor prioridade podem prejudicar processos com maior prioridade

inversão de prioridade starvation

Page 51: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

First-Come-First-Served

p1 p2 p3 p4

t = 6 t = 8 t = 7 t = 3

p1 p2 p3 p4

0 6 14 2421 t

PROCS. TE TTp1 0 ut 6 utp2 6 ut 8 utp3 14 ut 7 utp4 21 ut 3 ut

Page 52: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

First-Come-First-Served

Exemplo: Processo Tempo de execução

P1 24

P2 3

P3 3

Suponha que os processos chegaram na seguinte ordem: P1 , P2 , P3

1. Qual seria o diagrama de Gannt, o waiting time para cada um dos

processos e o waiting time médio?

Page 53: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

First-Come-First-Served

Diagrama de Gantt para o escalonamento:

Waiting time para P1 = 0; P2 = 24; P3 = 27

Waiting time médio: (0 + 24 + 27)/3 = 17

P1

24 27 300

P2 P3

Page 54: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Shortest-Job-First

Pode ser preemptiva ou não-preemptiva Cada processo é associado ao seu tempo de uso do processador Escalonado o processo com o menor tempo de CPU

privilegiam processos menores reduzem o tempo médio de espera na fila de prontos

Problema: Como determinar quanto tempo de CPU será necessário?

Page 55: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Shortest-Job-First

Tanto o escalonamento FIFO quanto o SJF não são utilizados em sistemas de time-sharing (por quê ?)

p1 p2 p3 p4

t = 6 t = 8 t = 7 t = 3

p4 p1 p3 p2

3 9 16 240 t

Page 56: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Shortest-Job-First

A política SJF é ótima, minimizando o tempo

médio de espera de um conjunto de processos Dificuldade: determinar antecipadamente o

tempo de processador de cada processo Na prática, o tempo é estimado, é utilizada

uma aproximação

Page 57: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Shortest-Job-First: não preemptivo

Processo Tempo de chegada Duração da rajada

P1 0.0 7

P2 2.0 1

P3 4.0 4

P4 5.0 4

SJF (não preemptivo)

waiting time médio = (0 + 5 + 4 + 7)/4 = 4

73 160 8 12

P1 P2 P3 P4

Page 58: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Shortest-Job-First: preemptivo

Processo Tempo de chegada Duração da rajada

P1 0.0 7

SJF (preemptivo)

waiting time médio = (9 + 1 + 0 +2)/4 = 3

P2 2.0 4

P3 4.0 1 terminado

P4 5.0 4

terminado

0

P1

2

P2

5

P3

4 7

P2

11

P4

terminado

16

P1

terminado

Page 59: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Shortest-Job-First: preemptivo

?

Processo Tempo de chegada Duração da rajada

P1 0.0 7

0

P1

SJF (preemptivo)

waiting time médio = (9 + 1 + 0 +2)/4 = 3

2

P2

P2 2.0 4

tempo restante: 5

? 5

P3 4.0 1

P3

4

tempo restante: 2

terminado

P4 5.0 4

7

P2

terminado

11

P4

terminado

16

P1

terminado

Page 60: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Shortest-Job-First

Determinação do tempo de CPU, pode:somente estimar a próxima duração ser feita usando a duração de tempo de CPU

anteriores, usando-se média exponencial

:Define 4.

10 , 3.

CPU de rajada próxima a para estimado valor 2.

CPU de rajada da real tamanho 1.

1

n

αn nt

nnn t 1 1 nnn t 1 1

Page 61: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Shortest-Job-First =0

n+1 = n História recente não conta

=1

n+1 = tn Somente o último tempo de CPU (rajada) é condiserado

Se expandirmos a fórmula teremos

n+1 = tn+(1 - ) tn-1 + …

+(1 - ) j tn-1 + …

+(1 - )n+1 tn 0

Uma vez que tanto como (1 - ) são menores ou iguais a 1, cada termo tem peso menor do que o seu predecessor

Page 62: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Shortest-Job-First Preemptivo

Permite que se dê atenção mais rapidamente a processos mais prioritários Melhores respostas em sistemas time-sharing Compartilhamento do processador tende a ser mais uniforme Troca de processos na CPU gera overhead

Estabelecer de forma otimizada os critérios para a preempção Procurar utilizar processos leves quando possível

Page 63: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Prioridade

A cada processo é atribuída uma prioridade O processo com maior prioridade é atribuído ao processador Pode ser não-preemptiva ou preemptiva

não-preemptiva: o processo libera espontaneamente o processador preemptiva : o processo executando é interrompido caso chegue à fila de prontos um processo com maior prioridade

Page 64: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Prioridade

Atribuição de prioridades estática: o processo tem uma prioridade fixa durante o seu tempo de vida dinâmica: prioridade muda ao longo do tempo de vida do processo, de acordo com o seu comportamento

Page 65: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Prioridade

Atribuição de prioridadesAtribuição de prioridades normalmente é feita pelo SOnormalmente é feita pelo SO pode ser configurada pelo superusuáriopode ser configurada pelo superusuário processos de usuário recebem uma prioridade processos de usuário recebem uma prioridade

máxima de usuáriomáxima de usuário usuário pode diminuir a prioridade de seus usuário pode diminuir a prioridade de seus

processosprocessos ex.: comando ex.: comando renicerenice do Unix do Unix

DinâmicaDinâmica pode ser ajustada de acordo compode ser ajustada de acordo com

tipo de processamento realizadotipo de processamento realizado a carga do SOa carga do SO

quando o processo passa do estado de quando o processo passa do estado de espera para o estado executando ele é espera para o estado executando ele é penalizadopenalizado e sua prioridade é reduzida, e sua prioridade é reduzida, processosprocessos

CPU boundCPU bound terão suas prioridades terão suas prioridades reduzidas a cada passagem para o estado reduzidas a cada passagem para o estado executandoexecutando

I/O boundI/O bound ficam em estado de espera com ficam em estado de espera com freqüência, processos freqüência, processos CPU boundCPU bound não serão não serão prejudicadosprejudicados

DinâmicaDinâmica pode ser ajustada de acordo compode ser ajustada de acordo com

tipo de processamento realizadotipo de processamento realizado a carga do SOa carga do SO

quando o processo passa do estado de quando o processo passa do estado de espera para o estado executando ele é espera para o estado executando ele é penalizadopenalizado e sua prioridade é reduzida, e sua prioridade é reduzida, processosprocessos

CPU boundCPU bound terão suas prioridades terão suas prioridades reduzidas a cada passagem para o estado reduzidas a cada passagem para o estado executandoexecutando

I/O boundI/O bound ficam em estado de espera com ficam em estado de espera com freqüência, processos freqüência, processos CPU boundCPU bound não serão não serão prejudicadosprejudicados

EstáticaEstática é atribuída quando o processo é é atribuída quando o processo é

iniciadoiniciado não é alterada durante a existência do não é alterada durante a existência do

processoprocesso pode oferecer tempos de resposta pode oferecer tempos de resposta

aceitáveisaceitáveis

EstáticaEstática é atribuída quando o processo é é atribuída quando o processo é

iniciadoiniciado não é alterada durante a existência do não é alterada durante a existência do

processoprocesso pode oferecer tempos de resposta pode oferecer tempos de resposta

aceitáveisaceitáveis

ObservaçãoObservaçãoSO pode associar à alta prioridade um SO pode associar à alta prioridade um

número escalar pequeno número escalar pequeno

0 significa a maior prioridade0 significa a maior prioridade

ObservaçãoObservaçãoSO pode associar à alta prioridade um SO pode associar à alta prioridade um

número escalar pequeno número escalar pequeno

0 significa a maior prioridade0 significa a maior prioridade

Page 66: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Prioridade

Processo A

Processo B

tempo4 8 10 13 16 18 23 26 27

1u.t.

4 u.t.

B solicita I/O

preempçãopor B

4 u.t.

B solicita I/O

2 u.t.

A solicita I/O

3 u.t.

2 u.t.

B solicita I/O

5 u.t.

preempçãopor B

3 u.t.

B solicita I/O

Tempo de CPU (u.t.) Característica do Processo Prioridade

Processo A 13 CPU bound 1 menor

Processo B 11 I/O bound 0 maior

Page 67: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Prioridade

Vantagens é possível fazer diferenciação entre processos adaptabilidade (prioridades dinâmicas)

Desvantagem starvation: um processo com baixa prioridade pode nunca ser atribuído ao processador solução: aumentando, em intervalos regulares, a prioridade dos processos que estão há muito tempo esperando

Page 68: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Round-Robin

Escalonamento do tipo preemptivo

Cada processo executa durante uma fatia de tempo (time-slice ou quantum)

Ao final da fatia de tempo, o processo executando é inserido no final da fila de prontos

Processo na frente da fila de prontos recebe o processador

Page 69: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Round-Robin

bcp1 bcp2 bcp3 bcp4

processo 1 executando

fatia de tempoesgotada

bcp2 bcp3 bcp4 bcp1

processo 2 executando

Page 70: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Round-Robin

Bom para tempo compartilhado Similar a FIFO + tempo limite para

execução (time-slice ou quantum) terminado o quantum, o processo é

devolvido (preempção) para o final da fila de prontos

processos não monopolizam a CPU quantum entre 100 a 300 ms

Bom para tempo compartilhado Similar a FIFO + tempo limite para

execução (time-slice ou quantum) terminado o quantum, o processo é

devolvido (preempção) para o final da fila de prontos

processos não monopolizam a CPU quantum entre 100 a 300 ms

Page 71: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Round-Robin

Processo A

Processo B

tempo5 9 11 13 16 21 23 26 27

Tempo de CPU (u.t.) Característica do Processo

Processo A 15 CPU bound

Processo B 8 I/O bound

5 u.t.

terminaquantum

de A

4 u.t.

B solicita I/O

A solicita I/O

2 u.t.

B solicita I/O

2 u.t.

5 u.t.

terminaquantum

de A

2 u.t.

B solicita I/O

3 u.t.

A solicita I/O

Page 72: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Round-Robin

Vantagem do escalonamento Robin Round simplicidade Tamanho da fatia de tempo é crucial no

escalonamento circular pequena: tempo de troca de contexto

torna-se significativo grande: aumenta o tempo de resposta dos processos no final da fila de prontos

Vantagem do escalonamento Robin Round simplicidade Tamanho da fatia de tempo é crucial no

escalonamento circular pequena: tempo de troca de contexto

torna-se significativo grande: aumenta o tempo de resposta dos processos no final da fila de prontos

Page 73: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Round-Robin

Se existem n processos na fila de prontos Se quantum = q cada processo tem 1/n do tempo de

CPU em fatias de no máximo q unidades de tempo cada

Nenhum processo espera por mais de (n-1) q unidades de tempo para ser atendido

Se existem n processos na fila de prontos Se quantum = q cada processo tem 1/n do tempo de

CPU em fatias de no máximo q unidades de tempo cada

Nenhum processo espera por mais de (n-1) q unidades de tempo para ser atendido

Page 74: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Round-Robin

Desempenho quantum = muito grande

FIFO quantum = muito pequeno

q deve ser grande comparado a mudança de contexto, caso contrário, o overhead é muito elevado

Desempenho quantum = muito grande

FIFO quantum = muito pequeno

q deve ser grande comparado a mudança de contexto, caso contrário, o overhead é muito elevado

Page 75: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Round-Robin Processo Tempo de execução

P1 53

P2 17

P3 68

P4 24

Diagrama de Gantt (quantum = 20 u.t.)

Tipicamente, temos turnaround time médio maior que na SJF, mais em compensação melhor resposta

0 20 37 57 77 97 117 121 134 154 162

P1 P2 P3 P4 P1 P3 P4 P1 P3 P3

Page 76: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Como um pequeno quantum de tempo aumenta as mudanças de contexto

tamanho do processo: 10 u.t. quantum mudançasde contexto

0 10

12 0

0 6 10

6 1

0 1 2 3 4 5 6 107 8 9

1 9

Page 77: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas

Política do tipo preemptiva Prioridades são atribuídas às classes de processos Processos das classes de maior prioridade recebem o processador Processos podem migrar entre classes de acordo com seu comportamento Vantagem: adaptabilidade de acordo com o comportamento do processo

Page 78: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas

Processos são classificados em função do tipo de processamento

Cada grupo formado fila associada

Fila de prontos associada a cada grupo permite

aplicação de tipos de escalonamento diferentes

Processos são classificados em função do tipo de processamento

Cada grupo formado fila associada

Fila de prontos associada a cada grupo permite

aplicação de tipos de escalonamento diferentes

Page 79: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas

Cada fila possui uma prioridade

SO só vai escalonar processos em uma fila se todos os processos das filas de maior prioridade estiverem vazias

Cada fila possui uma prioridade

SO só vai escalonar processos em uma fila se todos os processos das filas de maior prioridade estiverem vazias

Page 80: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas

p = 3

p = 2

p = 0

p = 1

processos interativos

processos em batch

Page 81: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Fila de Processos do SistemaFila de Processos do Sistema

Fila de Processos BatchFila de Processos Batch

Fila de Processos InterativosFila de Processos Interativos

Maior PrioridadeMaior Prioridade

Menor PrioridadeMenor Prioridade

sistema mais prioritário algoritmo de escalonamento por prioridades

interativo prioridade intermediária escalonamento Round-Robin

batch menor prioridade usa Round-Robin ou FCFS

sistema mais prioritário algoritmo de escalonamento por prioridades

interativo prioridade intermediária escalonamento Round-Robin

batch menor prioridade usa Round-Robin ou FCFS

Exemplo

Page 82: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas com Realimentação

Escalonamento anterior a classificação dos processos era estática

Se processo alterar seu comportamento, o esquema pode falhar (não existe reclassificação)

Seria interessante que o SO reconhecesse a alteração de comportamento

de um processoajustasse dinamicamente o seu tipo de

escalonamento

Page 83: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas com Realimentação

No escalonamento por múltiplas filas com realimentação (multi-level feed-bak queues)

é permitido que os processos sejam movimentados entre as filas

ajuste dinâmico (mecanismo adaptativo) processo é direcionado para uma das filas em

função de seu comportamento

Page 84: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas com Realimentação: Funciomanto

Criação do processo

prioridade mais alta e quantum mais baixo

Cada fila pode implementar uma política de escalonamento diferente para chegar a CPU:

FIFO com quantum

SJF

RR

Page 85: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas com Realimentação: Funciomanto Processo é reescalonado dentro da mesma fila

quando processo volta ao estado de prontosofre preempção por outro processo de uma

fila mais prioritária Processo é direcionado para fila de menor

prioridade e maior quantum quando processo esgota o seu quantum (sofrendo

preempção)

Page 86: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas com Realimentação: Funciomanto

Quanto maior a prioridade menor o quantum

Escalonamento de uma fila só acontece depois que todas as outras filas de prioridade mais alta estão vazias

Fila de menor prioridade Round-Robin

Page 87: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas com Realimentação: Características

Atende as necessidades de escalonamento de diversos tipos de processos

Processos I/O bound bom tempo de resposta: maior prioridade permanecem a maior parte do tempo nas

filas de alta prioridade usa pouco a CPU

Page 88: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas com Realimentação: Características

Processos CPU bound

com o transcorrer do processamento sua prioridade vai sendo reduzida

É um mecanismo complexo e gera overhead, mas os resultados são satisfatórios

Page 89: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas com Realimentação: Exemplo 1

Fila 1 (escalonamento FIFO)

Fila 2 (escalonamento FIFO)

Fila m (Round-Robin)

Maior Prioridade

Menor Prioridade Maior quantum

Menor quantum

Fila 3 (escalonamento FIFO)

preempção por término de quantum

preempção por término de quantum

...preempção por término de quantum

Page 90: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa

Múltiplas Filas com Realimentação: Exemplo 2

quantum = 8

quantum = 16

FCFS

Page 91: Processos. Programa: seqüência de instruções com diferentes fluxos de execução comandos condicionais e interativos (entidade passiva) Processo: um programa