• Nenhum resultado encontrado

Sistemas de Operação

N/A
N/A
Protected

Academic year: 2022

Share "Sistemas de Operação"

Copied!
20
0
0

Texto

(1)

Sistemas de Operação

Universidade Nova de Lisboa

Faculdade de Ciências e Tecnologia

Departamento de Informática

João Lourenço

Joao.Lourenç[email protected] http://www-asc.di.fct.unl.pt/~jml

Gestão de CPU

(3)

(OSC-7ed. 5.1, 5.2, 5.3, 5.6, 5.7, 21.4, 21.5)

Baseado nos transparente de SO de Pedro Medeiros (DI/FCT/UNL)

(2)

Múltiplas filas READY

• A fila Ready é dividida em várias filas, por ex:

– foreground (interactivos) e background ( batch )

• Cada fila tem o seu algoritmo de escaonamento

– foreground – RR e background – FCFS

• Escalonamento entre filas:

– escalonamento com prioridade fixa (i.e., processos background só correm se não houver processos

foreground ). Possibilidade de starvation !!!

– Fatia de tempo – cada fila recebe uma percentagem

fixa de tempo de CPU. Por ex. 80% para foreground

(RR) e 20% para background (FCFS)

(3)

Generalização do princípio das múltiplas filas

Um algoritmo de escalonamento com quatro classes de

prioridade

(4)

Múltiplas filas READY com Feedback (alteração da prioridade)

• Um processo pode mudar de fila

– Envelhecimento ( aging )

• Escalonamento “ Multilevel-feedback-queue ” é definido por:

– número de filas

– algoritmo de escalonamento para cada fila – método usado para promover um processo

– método usado para despromover um processo

– método usado para determinar a fila inicial do processo

(5)

Escalonador do UNIX

• Uma vez por segundo, a prioridade de cada

processo é recalculada de acordo com a fórmula

prioridade = base + nice + CPU_usageCPU_usage tem a ver

com o número de “clock ticks” de CPU que o

processo teve nos últimos tempos; vai sendo dividido por 2 à medida que o

tempo passa

(6)

Resumo sobre os métodos de escalonamento

• Quando é invocado o escalonador?

– Modo de decisão

• preemptivo: escalonador chamado periodicamente (orientado para fatias de tempo) ou quando o estado do sistema muda

• não- preemptivo: escalonador chamado quando um processo termina ou se bloqueia

• Como é escolhido o processo que vai ocupar o CPU?

– Avaliação da importância do processo: P = Priority(p) – Regras de desempate

• aleatórias

• cronológicas (FIFO)

• cíclica (por rotação - round robin)

(7)

Importância/prioridade do processo

• Parâmetros possíveis de ter em consideração:

– Tempo de permanência no sistema (a) – Tempo real no sistema (r)

– Tempo de ocupação total do sistema (t)

– período (d): processo precisa de correr de d em d segundos – deadline (explícita ou implícita pelo período d)

– Prioridade externa (e)

– Requisitos de memória (principalmente para batch )

– Carga do sistema (não é específica do processo)

(8)

Algoritmos de escalonamento

Cíclic0 P = e

Preemptivo ML

Cíclico P = f(e ,t)

Preemptivo MLF

Cíclico P = 0

Preemptivo RR

Cronológico ou aleatório P = (t – a)

Preemptivo SRT

Cronológico ou aleatório P = t

Não preemptivo SJF

Aleatório P = r

Não-preemptivo FIFO

Desempate Importância

Modo de decisão

Nome

(9)

Comparação de algoritmos

• FIFO  fisrt-in fisrt-out SJF  shortest job first

SRT  shortest remaining time

– Essencialmente para processamento em batch – FIFO é o mais simples

– SJF/SRT têm melhores tempos médios de turnaround

(10)

Comparação de métodos

• Sistemas interactivos ( time-sharing systems )

– O tempo de resposta é o critério essencial – RR ou MLF com RR em cada fila é adequado

– Escolha da fatia de tempo ( quantum ) determina o tempo desperdiçado ( overhead )

• quando q  , RR aproxima-se do FIFO

• quando q  0, o tempo perdido em trocas de contexto  100% (logo, produtividade  0)

• quando q >> overhead de troca de contexto, n processos CPU bound executam concorrentemente a 1/n da

velocidade do CPU

(11)

Escalonamento no UNIX:

descritor do processo

(12)

Identificação do processo

Process ID (PID).

Credenciais. user ID e um ou mais group Ids : definem os direitos de acesso a ficheiros e outros recursos do sistema

Personalidade. Não usado geralmente no UNIX;

no Linux cada processo pode ter um

personalidade que modifica ligeiramente a

semântica de algumas chamadas ao sistema

(13)

Ambiente ( Environment )

• O ambiente é herdado do pais e é composto por dois vectores de apontadores para caracteres

– Vector de argumentos

– O vector de ambiente é um conjunto de pares

“NOME=VALOR” que associa variáveis de ambiente com nome a uma cadeia de caracteres.

• A passagem de valores de variáveis de ambiente

entre pais e filhos, permite passar informação ao

filho

(14)

Contexto do processo

(1)

• É o estado de um programa em execução num dado instante de tempo (muda constantemente)

• O contexto de escalonamento (scheduling

context) é a parte mais importante do contexto do processo

– é a informação de que o escalonador necessita para suspender e reiniciar um processo

• O kernel mantém contabilidade (accounting)

– Informação sobre os recursos consumidos pelo

processo (persperctiva histórica e instantânea)

(15)

Contexto do processo

(2)

Tabela de canais abertos

• Contexto do sistema de ficheiros ( file-system context )

– aplica-se a pedidos para abrir novos ficheiros: inclui a directoria corrente e a root directory .

• A tabela signal-handler table define as rotinas executadas quando chega um dado sinal

• O contexto de memória virtual ( virtual-memory

context ) de um processo tem a ver com o seu

espaço de endereçamento privado

(16)

Processos e Threads

• O Linux usa a mesma representação interna para processos e threads ; um thread é simplesmente um novo processo que partilha parte do contexto do processo pai

• Um thread é criado pela chamada clone() .

fork() cria um novo processo com um contexto completamente novo

clone() cria um processo com uma identidade nova

• Os argumentos do clone() permitem especificar que parte do

contexto do processo pai é partilhado pelo filho

(17)

Escalonamento

• O escalonador controla a execução das

– tasks correspondentes a processos a nível utilizador – tasks de sistema (relacionadas com a parte da rede,

gestão de memória, ...)

– tasks que executam internamente por conta de device

drivers

(18)

Threads no Linux

• Os kernel threads no Linux são conhecidos por tasks

• A criação de tasks é feita pela chamada ao sistema clone()

clone() permite que a task filha partilhe recursos com task mãe (por exemplo o espaço de

endereçamento)

(19)

No Linux a API é a dos pthreads

As principais chamadas ao sistema de threads

POSIX

(20)

A chamada ao sistema clone()

ret = clone ( int (*fn), void * child_stack, int flags, void *arg) flags = FLAG1 | FLAG2 | ....

fork()  clone(posição corrente do PC, …, 0, …)

pthread_create( …, func, val )  clone( func, …, CLONE_VM |

CLONE_FS | CLONE_FILES, …, val)

Referências

Documentos relacionados

Essas operações, com e sem risco de crédito, são contabilizadas em conta do ativo “Outros créditos de operações com planos de assistência à saúde”

Organizado pela Abimaq, reuniu palestras sobre contexto e perspectivas para indústria de máquinas e equipamentos diante das alterações na política de conteúdo local para

3 - Quando não possa reparar-se convenientemente o caixão deteriorado, encerrar-se-à o mesmo noutro caixão de zinco ou será removido para sepultura à escolha

O Serviço Autônomo de Água e Esgoto de Porto Feliz torna público, para ciência dos interessados que, por intermédio de sua Pregoeira designada pela Portaria

O PROGRAMA DE PÓS-GRADUAÇÃO EM FISIOPATOLOGIA E CIÊNCIAS CIRÚRGICAS, DA UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO - UERJ torna público o presente Edital,

Entre as atividades, parte dos alunos é também conduzida a concertos entoados pela Orquestra Sinfônica de Santo André e OSESP (Orquestra Sinfônica do Estado de São

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)