Sistemas Operacionais 1

  • Uploaded by: Guilherme Mendes
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Sistemas Operacionais 1 as PDF for free.

More details

  • Words: 2,892
  • Pages: 40
Sistemas Operacionais Unidade Dois

Prof. Flávio Márcio de Moraes e Silva

Conceito de Processo 

Processo – um programa em execução 



Organizados em vários processos seqüenciais

Um processo inclui: 

Contador de programa



Registradores (pilha)



Variáveis (seção de dados)

Sistemas Operacionais

Prof. Flávio Márcio

2

Estados de Processos 

A medida em que o programa executa, seu estado muda:  

  

Novo: O processo está sendo criado Pronto: O processo está esperando para ser atribuído a um processador Em execução: Instruções estão sendo executadas Em espera: O processo espera por um evento Encerrado: O processo terminou sua execução

Sistemas Operacionais

Prof. Flávio Márcio

3

Estados de Processos

novo

encerrado

2 pronto

em execução 3

4 em espera

Sistemas Operacionais

Prof. Flávio Márcio

1

4

Transição de Estado 

Transição 1 





Ocorre quando um processo descobre que não pode prosseguir

Transições 2 e 3 

São causadas pelo escalonador de processo



O processo não precisa tomar conhecimento que foi interrompido



Dispatcher = responsável pela reposição de contexto (voltar valores dos registradores na transição 3)

Transição 4 

Ocorre quando acontece um evento externo pelo qual um processo estava aguardando

Sistemas Operacionais

Prof. Flávio Márcio

5

Bloco de Controle de Processos 

Informação associada com cada processo 

Contador de Programa



Pilha de execução



Registradores da CPU



Estado do processo (apto, executando, bloqueado,etc)



Informações de escalonamento de CPU (tempo de processador, prioridade)



Informações de gerência de memória



Informações de status de I/O



Informações de arquivos abertos

Sistemas Operacionais

Prof. Flávio Márcio

6

Threads 

Processos são baseados em dois conceitos independentes: agrupamento de recursos e execução 



Threads são úteis quando há a necessidade de separá-los

Um thread (ou processo leve) é uma unidade básica de utilização da CPU. Consiste em: 





Contador de programa: para manter o controle da próxima instrução a ser executada Conjunto de registradores: contêm suas variáveis atuais de trabalho Pilha: traz o histórico de execução, e uma estrutura para cada processo chamado e não retornado

Sistemas Operacionais

Prof. Flávio Márcio

7

Threads 



Um thread compartilha com outros threads do mesmo processo: 

Seção de código



Seção de dados



Recursos do SO

Um processo tradicional ou pesado é igual a uma tarefa com apenas um thread

Sistemas Operacionais

Prof. Flávio Márcio

8

Threads 

Em uma tarefa com múltiplos threads, enquanto um thread servidor está bloqueado e esperando, um segundo thread na mesma tarefa pode executar 





Cooperação entre múltiplos threads na mesma tarefa confere maior produção (throughput) e performance Aplicações que requerem o compartilhamento de um buffer comum se beneficiam da utilização de threads

Exemplos: 



Um navegador Web pode ter um thread exibindo uma imagem enquanto outro recupera dados na rede Um editor de textos pode ter um thread lendo caracteres do teclado enquanto outro faz a verificação ortográfica

Sistemas Operacionais

Prof. Flávio Márcio

9

Threads 

Vantagens 

Capacidade de Resposta: tarefas podem ser executadas enquanto outras esperam por recurso



Compartilhamento de Recursos: facilita acesso



Economia: alocar memória e recursos para a criação de um processo novo é caro



Utilização de arquiteturas paralelas

Sistemas Operacionais

Prof. Flávio Márcio

10

Processos com um ou Vários Threads

Sistemas Operacionais

Prof. Flávio Márcio

11

Escalonamento: Conceitos Básicos 

A utilização máxima de CPU é obtida através de multiprogramação. Com um só processador, nunca haverá mais de um processo em execução



Quando dois ou mais processos estão na situação de pronto, o SO deverá fazer a escolha de qual processo será executado 

Escalonador é a parte do SO que escolhe processo



Utiliza algoritmos de escalonamento



A troca de processo é “cara” para a CPU

Sistemas Operacionais

Prof. Flávio Márcio

12

Comportamento do Processo 

Todo processo alternam surtos de uso da CPU com requisições de E/S



Tipos de surtos 

Orientado a CPU 



Orientado a E/S 



Passam a maior parte do tempo utilizando a CPU Passam a maior parte do tempo realizando E/S

A medida que a velocidade dos processadores aumentam os processos tendem a ficar orientados a E/S

Sistemas Operacionais

Prof. Flávio Márcio

13

Critérios de Escalonamento 

É fundamental o SO saber o momento certo de escalonar um processo



Decisões de escalonamento de CPU ocorrem quando o processo: 1. 2. 3. 4.

Muda do estado de execução para espera Muda do estado de execução para pronto Muda do estado de espera para pronto Termina



Escalonamento não-preemptivo um processo só perde a CPU por vontade própria (término ou chamada de sistema 1 e 4).



Escalonamento preemptivo o processo em execução pode perder a CPU para outro e maior prioridade (2 e 3).

Sistemas Operacionais

Prof. Flávio Márcio

14

Critérios de Escalonamento 

Características para comparação de algoritmos:  







Utilização de CPU: manter a CPU o mais ocupada possível Throughput: quantidade de processos que completam sua execução por unidade de tempo Tempo de retorno: quantidade de tempo para executar um processo Tempo de espera: quantidade de tempo que um processo gasta na fila de processos prontos Tempo de resposta: quantidade de tempo gasto entre a requisição e a produção da primeira resposta

Sistemas Operacionais

Prof. Flávio Márcio

15

Critérios de Escalonamento 

Máxima utilização de CPU



Máximo throughput



Mínimo tempo de retorno



Mínimo tempo de espera



Mínimo tempo de resposta

Sistemas Operacionais

Prof. Flávio Márcio

16

Algoritmos de Escalonamento 

Primeiro a chegar é servido (FIFO) 

Exemplo:

Processo

Duração de Surto

P1 24 P2 3 P3 

3

Suponha que os processos chegam na ordem: P1 , P2 , P3 O diagrama para o escalonamento é: P1 0

P2 24

P3 27

30



O tempo de espera para P1 = 0; P2 = 24; P3 = 27



O tempo de espera médio: (0 + 24 + 27)/3 = 17

Sistemas Operacionais

Prof. Flávio Márcio

17

Algoritmos de Escalonamento 

Primeiro a chegar é servido (FIFO) 

Suponha que os processos cheguem na ordem: P2 , P3 , P1



O diagrama para o escalonamento é: P2 0

P3 3

P1 6

30



O tempo de espera para P1 = 6; P2 = 0; P3 = 3



O tempo de espera médio : (6 + 0 + 3)/3 = 3



Muito melhor que o anterior



Efeito Comboio: pequenos processos atrás de longos processos

Sistemas Operacionais

Prof. Flávio Márcio

18

Algoritmos de Escalonamento 

Escalonamento job mais curto primeiro (SJF) 



Associa a cada processos o tamanho do seu próximo surto de CPU. Usa estes valores para escalonar o processo com o menor tempo Dois esquemas: 





Não-preemptivo – uma vez que a CPU é dada ao processo, não pode ser retirada até completar seu surto Preemptiva – se um novo processo chegar com um tempo de surto de CPU menor que o tempo restante do processo sendo executado, é feita a troca. Este esquema é conhecido como Menor-temporestante-primeiro (SRTF)

SJF é ótimo – sempre dá o mínimo tempo médio de espera para o conjunto de processos

Sistemas Operacionais

Prof. Flávio Márcio

19

Algoritmos de Escalonamento  

Escalonamento job mais curto primeiro (SJF) Exemplo Processo Chegada Tempo Surto P1

0.0

P2



2.0

4

P3

4.0

1

P4

5.0

4

SJF (não-preemptivo) P1

0 

7

7

P4

P2

P3

8

12

16

Tempo médio de espera = (0 + 7 + 8 + 12)/4

Sistemas Operacionais

Prof. Flávio Márcio

20

Algoritmos de Escalonamento  

Escalonamento job mais curto primeiro (SJF) Exemplo Processo Chegada Tempo Surto P1

0.0

P2



2.0

4

P3

4.0

1

P4

5.0

4

SJF (preemptivo) P1

0 

7

P2

2

P3

4

5

P1

P4

P2

7

11

16

Tempo médio de espera = (0 + 2 + 4 + 7)/4

Sistemas Operacionais

Prof. Flávio Márcio

21

Algoritmos de Escalonamento  

Escalonamento por prioridade Um número de prioridade (inteiro) é associado com cada processo



A CPU é alocada para o processo com maior prioridade (menor valor ≡ maior prioridade)



SJF é um escalonamento por prioridade, onde a prioridade é dada pelo tempo de surto



Problema: Starvation – processos com baixa prioridade podem nunca serem executados



Solução: Envelhecimento (Aging) – a prioridade aumenta com o tempo

Sistemas Operacionais

Prof. Flávio Márcio

22

Algoritmos de Escalonamento 

Round Robin (RR) 





Cada processo recebe uma pequena unidade de tempo de CPU (quantum), geralmente 10-100 ms. Após este tempo, o processo é retirado e inserido no fim da fila de prontos Se existirem n processos na fila de prontos e o quantum for q, cada processo terá 1/n de tempo de CPU em parcelas de no máximo q unidades de tempo por vez. Nenhum processo esperará mais que (n-1)q unidades de tempo Não precisa esperar até o final do quantum 

Quando um processo termina outro processo utiliza a CPU imediatamente

Sistemas Operacionais

Prof. Flávio Márcio

23

Algoritmos de Escalonamento 

Round Robin (RR) 

Desempenho 

q grande ⇒ FIFO



q pequeno ⇒ q deve ser grande em relação ao tempo de troca de contexto, ou o overhead será muito alto 

Se q possui 4ms e o tempo de chaveamento é 1ms, o resultado será péssimo

Sistemas Operacionais

Prof. Flávio Márcio

24

Algoritmos de Escalonamento  

Round Robin (RR) -> q = 20 Exemplo Processo Tempo de Surto P1 P2 P3 P4



O diagrama é: P1 0



53 17 68 24

P2 20

P3 37

P4 57

P1 77

P3

P4

97 117

P1

P3

P3

121 134 154 162

Tipicamente, maior média de retorno que SJF, mas melhor resposta

Sistemas Operacionais

Prof. Flávio Márcio

25

Algoritmos de Escalonamento 

Fila Multiplas 

A fila de prontos é particionada em filas separadas:  



Cada fila tem seu próprio algoritmo de escalonamento, por exemplo:  



primeiro plano (interativo) segundo plano (batch)

primeiro plano – RR segundo plano – FIFO

Deve haver escalonamento entre as filas 



Escalonamento de prioridade fixa: primeiro plano pode ter prioridade sobre o segundo plano. Possibilidade de starvation Fatia de tempo: cada fila recebe uma certa quantidade de tempo de CPU que pode ser escalonada entre seus processos. Por exemplo, 80% para primeiro plano em RR e 20% para o segundo plano em FIFO

Sistemas Operacionais

Prof. Flávio Márcio

26

Algoritmos de Escalonamento 

Fila Multiplas com Realimentação 



Um processo pode passar de uma fila para outra. O envelhecimento pode ser implementado desta maneira O escalonador de Filas Múltiplas com realimentação é definido pelos seguintes parâmetros: 

número de filas



algoritmos de escalonamento para cada fila







método usado para determinar a promoção de um processo a uma fila de maior prioridade método usado para determinar quando rebaixar um processo método usado para determinar em qual fila o processo deve entrar quando precisar de serviço

Sistemas Operacionais

Prof. Flávio Márcio

27

Algoritmos de Escalonamento 

Fila Multiplas com Realimentação 



Três filas: 

Q0 – quantum 8 ms



Q1 – quantum 16 ms



Q2 – FCFS

Escalonador 



Um novo job entra na fila Q0 servido por FCFS. Quando recebe CPU, o job tem 8 ms. Se não terminar em 8 ms, o job é removido para Q1. Em Q1 o job é servido por FCFS e recebe 16 ms adicionais. Se ainda não terminar, é transferido para Q2.

Sistemas Operacionais

Prof. Flávio Márcio

28

Sincronização de Processos 



Processos podem compartilhar armazenamentos em comum, onde cada um pode ler e escrever Problema 









Imagine que um spool tenha um vetor quem contém os nomes de arquivos a serem impressos Esse vetor possui duas variáveis: out – aponta para o próximo arquivo a ser impresso e in – aponta para a próxima posição vaga no vetor Um processo A ler a próxima posição livre (in) e é escalonado pela CPU Um processo B ler a próxima posição livre, armazena o arquivo e incrementa in O processo A armazena o arquivo a ser impresso e incrementa in 

O arquivo de impressão do processo B é perdido

Sistemas Operacionais

Prof. Flávio Márcio

29

Regiões Críticas 

O que fazer para evitar condições de disputa? 



Exclusão mútua: assegurar que processos sejam impedidos de usar uma variável ou arquivo compartilhado que já estiver em uso por outro processo

Região crítica 

Parte do código em que há acesso à memória compartilhada

Sistemas Operacionais

Prof. Flávio Márcio

30

Regiões Críticas 

Uma boa solução deve satisfazer: 1. Nunca dois processos podem estar simultaneamente em suas regiões críticas 2. Nada pode ser afirmado sobre velocidade ou sobre o número de CPUs 3. Nenhum processo executado fora da sua região crítica pode ser bloqueado por outros processos 4. Nenhum processo deve esperar eternamente para entrar em sua região crítica

Sistemas Operacionais

Prof. Flávio Márcio

31

Exclusão Mútua com Espera Ociosa 

Desabilitando interrupções 



Problema dessa abordagem 



O processo desabilita todas as interrupções logo após entrar em sua região crítica e reabilita-as antes de sair

Processos de usuário podem desabilitar interrupções e nunca reabilitá-las

Há casos que é necessários que o núcleo do SO desabilite alguma interrupção 

Enquanto estiver alterado variáveis ou listas

Sistemas Operacionais

Prof. Flávio Márcio

32

Exclusão Mútua com Espera Ociosa 

Variáveis de impedimento 

Exemplo: 





Se uma variável lock estiver marcada como 0 o processo entra na região crítica e a altera para 1 Se a variável lock estiver marcada como 1 o processo espera

Essa idéia não funciona 

Antes de alterar a variável para um o processo a lê como 0 e é escalonado pela CPU. Assim outro processo pode ler a variável como 0, alterá-la para 1 e entrar na região crítica

Sistemas Operacionais

Prof. Flávio Márcio

33

Exclusão Mútua com Espera Ociosa 

Alternância Obrigatória  



Baseada na seqüência lógica antecessor/sucessor Alterna o acesso à região crítica entre dois processos

Desvantagem  



Teste continuo do valor da variável compartilhada Se um processo falha o outro jamais entra na região crítica Viola a regra 2 se a parte não critica de um processo for outro B A muito maior que a do Processo

Processo while (TRUE){ while (turn!=0); // lock() região_critica turn=1; // unlock() } Sistemas Operacionais

while (TRUE){ while (turn!=1); // lock() região_critica turn=0; // unlock() }

Prof. Flávio Márcio

34

Exclusão Mútua com Espera Ociosa 

Solução de Paterson 

Antes de usar as variáveis compartilhadas, cada processo chama enter_region com seu próprio número de processo (0 ou 1)



Essa chamada fará com que ele fique esperando até que seja seguro entrar



Após usar as variáveis compartilhadas, o processo chama leave_region

Sistemas Operacionais

Prof. Flávio Márcio

35

Exclusão Mútua com Espera Ociosa 

Solução de Paterson

#define FALSE 0 #define TRUE 1 #define N 2 //número de processos int turn; //de quem a vez int interested[N]; //todos os valores iniciados com 0 void enter_region(int process) { //processo é 1 ou 0 int other; //número do outro processo other = 1 – process; //o outro processo interested[process] = TRUE; //mostra quem você está interessado turn = process; //altera o valor de turn while (turn==process && interested[other]==TRUE); //comando nullo } void leave_region(int process) { //processo: quem está saindo interested[process] = FALSE; //indica a saída da região crítica } Sistemas Operacionais

Prof. Flávio Márcio

36

Exclusão Mútua com Espera Ociosa 

A instrução TSL (Test and Set Lock) 



Proposta que requer auxílio de hardware

TSL RX, LOCK 

Copia o conteúdo da variável de memória LOCK no registrador RX e então armazena um valor diferente de zero no endereço de memória LOCK  

enter_region: TSL reg, lock Se LOCK > 0, seção crítica ocupada CMP reg, #0 JNE enter_region RET

Se LOCK = 0, seção crítica livre

leave_region: MOVE lock, #0 RET Sistemas Operacionais

Prof. Flávio Márcio

37

Semáforos 

Utiliza uma variável inteira (o semáforo) para controla o acesso ao recurso compartilhado 





Primitivas do semáforo 





O valor zero indica que nenhum sinal de acordar está pendente Um valor positivo N indica o número de sinais pendentes Down – Chamada quando o processo deseja acessar o recurso compartilhado Up – Chamada quando o processo deseja liberar o recurso compartilhado

As operações Down e Up são executadas de forma atômica sobre o semáforo

Sistemas Operacionais

Prof. Flávio Márcio

38

Semáforos 

Problema do produtor-consumidor 

Necessita 3 semáforos 

1 para garantir a exclusão mútua 



1 para bloquear os produtores o quando a fila estiver cheia (sem slots disponíveis) 



mutex – regição crítica: Usados para implementar exclusão mútua. Também chamados de binários (assumem apenas 0 e 1)

full – buffer cheio

1 para bloquear os consumidores o quando a fila estiver vazia (sem itens na fila) 

Sistemas Operacionais

empty – buffer vazio

Prof. Flávio Márcio

39

Semáforos define N 100 semaphore mutex=1; semaphore full=0; semaphore empty=N; void producer(void) { int item; while(1) { item=produz_item(); down(&empty); down(&mutex); insere_item(item); up(&mutex); up(&full); } }

Sistemas Operacionais

void consumer(void) { int item; while(1) { down(&full); down(&mutex); item=remove_item(); up(&mutex); up(&empty); consome_item(item); } }

Prof. Flávio Márcio

40

Related Documents


More Documents from "brenda_c_lima"

Facelets
June 2020 5
June 2020 3
June 2020 2