arquitetura de computadores: processos e threads

72
www.evandrojunior.pro.br ANDREW S. TANENBAUM, Sistemas operacionais modernos - Terceira edição.

Upload: evandro-junior

Post on 21-Jul-2015

322 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: Arquitetura de Computadores: Processos e Threads

www.evandrojunior.pro.br

ANDREW S. TANENBAUM, Sistemas operacionais modernos - Terceira edição.

Page 2: Arquitetura de Computadores: Processos e Threads

www.evandrojunior.pro.br

Page 3: Arquitetura de Computadores: Processos e Threads

www.evandrojunior.pro.br

Page 4: Arquitetura de Computadores: Processos e Threads

www.evandrojunior.pro.br

Page 5: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Entidade dinâmica que consiste num programa em execução, os seus valores correntes,

informação de estado e recursos utilizados pelo sistema operativo.

Formação:

Um processo constitui uma atividade. Ele possui programa, entrada, saída e um estado.

Um único processador pode ser compartilhado entre os vários processos, com algum

algoritmo de escalonamento usado para determinar quando parar o trabalho sobre um

processo e servir um outro;

Definição:

www.evandrojunior.pro.br

Page 6: Arquitetura de Computadores: Processos e Threads

PROCESSOS

O escalonamento de processos ou agendador de tarefas (scheduling) é uma atividade

organizacional feita pelo escalonador (scheduler) da CPU ou de um sistema distribuído,

possibilitando executar os processos mais viáveis e concorrentes, priorizando determinados

tipos de processos.

Escalonamento :

www.evandrojunior.pro.br

Page 7: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Em qualquer sistema multiprogramado, a CPU reveza de programa para programa,

executando cada um deles por dezenas ou centenas de milissegundos;

www.evandrojunior.pro.br

Page 8: Arquitetura de Computadores: Processos e Threads

PROCESSOS

(a) Multiprogramação de quatro programas. (b) Modelo conceitual de 4 processos sequenciais, independentes. (c) Somente um programa está ativo a cada momento.

Modelo de Processo:

www.evandrojunior.pro.br

Page 9: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Há quatro eventos principais que fazem com que processos sejam criados:

1. Inicio do sistema.

2. Execução de uma chamada ao sistema de criação de processo por um processo em execução.

3. Uma requisição do usuário para criar um novo processo.

4. Inicio de um Job em lote.

Tecnicamente, em todos estes casos, um novo processo e criado por um processo existente

executando uma chamada ao sistema de criação de processo.

Criação de Processos

www.evandrojunior.pro.br

Page 10: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Também conhecidos por .bat.

É um arquivo de computador utilizado para automatizar tarefas.

É regularmente confundido com o modo de processamento de dados no qual são

processados em grupos, ou lotes, por meio de uma rotina agendada.

O batch neste caso, nada mais é um conjunto de comandos rodados sequencialmente.

Podemos compará-lo, grosso modo, aos scripts do Unix.

Batch ou arquivo de lote

www.evandrojunior.pro.br

Page 11: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Depois de criado, um processo começa a executar e faz o seu trabalho. Mais cedo ou mais

tarde o processo terminará, normalmente por uma das seguintes razoes:

› Saída normal (voluntária) – Na maioria das vezes os processos terminam porque fizeram

o seu trabalho. Outra saída normal e por exemplo quando o utilizador sai do programa

como deve ser.

› Saída por erro (voluntária) – Quando o processo descobre um erro fatal. O processo

emite uma chamada de saída ao sistema.

Término de Processos

www.evandrojunior.pro.br

Page 12: Arquitetura de Computadores: Processos e Threads

PROCESSOS

› Erro fatal (involuntário) – Quando o erro e causado pelo processo, muitas vezes um erro

de programa. Exemplos: quando encontra uma divisão por zero, instrução ilegal, etc.

› Cancelamento por um outro processo (involuntário) – Quando um processo executa

uma chamada ao sistema dizendo para cancelar algum outro processo. Em linux: kill.

Término de Processos

www.evandrojunior.pro.br

Page 13: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Pai cria um processo filho, processo filho pode criar seu próprio processo;

• UNIX chama isso de “grupo de processos”.

• Windows não possui o conceito de hierarquia de processos;

Todos os processos são criados iguais.

Hierarquias de Processos

www.evandrojunior.pro.br

Page 14: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Estados de processos

www.evandrojunior.pro.br

Page 15: Arquitetura de Computadores: Processos e Threads

1

PROCESSOS

Quando um processo descobre que não pode prosseguir passa

para o estado de bloqueado.

Transições entre os estados

www.evandrojunior.pro.br

Execução -› Bloqueado

Page 16: Arquitetura de Computadores: Processos e Threads

1

PROCESSOS

Exemplo:

cat teste | grep tree

O processo do grep tem de esperar pela saída do processo cat.

Se o processo grep tem tempo de CPU e o processo cat ainda

não terminou então o grep passa para o estado de bloqueado.

Transições entre os estados

www.evandrojunior.pro.br

Execução -› Bloqueado

Page 17: Arquitetura de Computadores: Processos e Threads

2

PROCESSOS

Transições causadas pelo escalonador de processos,

gerenciamento de tempo de CPU, Execução -> Pronto ocorre

quando o escalonador de processos decide que o processo em

execução já teve o seu tempo de CPU, e Pronto -> Execução

ocorre quando já todos os processos estiveram em execução

volta novamente para o mesmo.

Transições entre os estados

www.evandrojunior.pro.br

Execução -› Pronto e Pronto -› Execução

Page 18: Arquitetura de Computadores: Processos e Threads

3

PROCESSOS

Ocorre quando o processo que estava no estado bloqueado tem

disponível aquilo que estava à espera. Se o CPU estiver livre esse

processo passa logo para o estado de Execução, senão fica a

aguardar até chegar a sua vez.

Transições entre os estados

www.evandrojunior.pro.br

Bloqueado -› Pronto

Page 19: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Transições entre os estados

www.evandrojunior.pro.br

Page 20: Arquitetura de Computadores: Processos e Threads

PROCESSOS

O que causa uma transição?

www.evandrojunior.pro.br

• Pronto -> executando

– Algoritmo de escalonamento

• Executando -> pronto

– Interrupção de tempo

– Interrupção devida ao escalonador

– Decisão espontânea (yield)

• Executando -> bloqueado

– E/S – sincronização

Page 21: Arquitetura de Computadores: Processos e Threads

PROCESSOS

O que causa uma transição?

www.evandrojunior.pro.br

• Bloqueado -› pronto

-› Interrupção

• Executando -› encerrado

-› Interrupção (Ctrl-C)

-› Término normal

• Bloqueado, pronto -› encerrado

-› Interrupção (Ctrl-C, kill)

Page 22: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Mais um estado: suspenso

www.evandrojunior.pro.br

• Dois problemas principais para gerar os recursos:

-› A CPU é muito mais rápida do que a memória;

-› A memória é de tamanho finito.

• Precisa-se, então, poupar a memória.

• Por isso:

-› Processos bloqueados que estão na memória podem ser transferidos para o disco (swap) até sua E/S ser acabada.

-› Processos prontos podem também ser descarregados para o disco.

Page 23: Arquitetura de Computadores: Processos e Threads

PROCESSOS

CPU - bound (ligado à CPU)

Maior parte do tempo em estado de execução, ou seja, usando o processador .

I/O bound x CPU bound

www.evandrojunior.pro.br

I/O - bound (ligado à E/S)

Maior parte do tempo em estado de bloqueado . Fazendo operações de E/S .

Page 24: Arquitetura de Computadores: Processos e Threads

PROCESSOS

Um processo pode iniciar CPU-bound e tornar-se I/O-bound (e vice-versa) .

Melhor eficiente é o revezamento entre os dois.

I/O bound x CPU bound

www.evandrojunior.pro.br

Page 25: Arquitetura de Computadores: Processos e Threads

www.evandrojunior.pro.br

Page 26: Arquitetura de Computadores: Processos e Threads

Gerenciamento de processos

SO organiza os processos da fila de prontos

Periodicamente o ESCALONADOR de processos:

› Escolhe um processo da fila para executar

› Critério de escolha pode variar

Alguns critérios usados para escalonamento

› Ordem de chegada dos processos

› Fatia de tempo demandada pelo processo

› Prioridade do processo

www.evandrojunior.pro.br

Page 27: Arquitetura de Computadores: Processos e Threads

Gerenciamento de processos

Outros nomes para ESCALONADOR/ESCALONAMENTO:

› Despachante/despacho

› Dispatcher/dispatch

Quando um processo solicita uma operação de E/S

› Ele é interrompido e desviado para a fila de bloqueado.

› Posteriormente, ele retornará para o fim da fila de pronto.

› Então, será submetido ao critério de escalonamento da fila.

www.evandrojunior.pro.br

Page 28: Arquitetura de Computadores: Processos e Threads

Gerenciamento de processos

Capacidade do SO de interromper um processo a qualquer instante (a seu critério) e

retomar a execução a partir do ponto de interrupção.

www.evandrojunior.pro.br

Preempção

Page 29: Arquitetura de Computadores: Processos e Threads

Bloco de controle do processo (PCB)

Ao criar um processo, o SO cria um BCP (PCB).

› É uma tabela com informações relativas ao processo.

› Reside na RAM enquanto o processo existe.

› Acesso exclusivo do SO.

www.evandrojunior.pro.br

Page 30: Arquitetura de Computadores: Processos e Threads

Bloco de controle do processo (PCB)

Bloco de Controle do Processo (ou Descritor do Processo).

www.evandrojunior.pro.br

Page 31: Arquitetura de Computadores: Processos e Threads

www.evandrojunior.pro.br

Page 32: Arquitetura de Computadores: Processos e Threads

Escalonamento

Em sistemas multiprograma (multi-tarefa), a cada instante um ou mais processos podem estar

no estado pronto.

– Processos do sistema e de usuários

– Processos de vários usuários (sistema time-sharing)

– Mix de processos interativos e batch (simulação, folha de pagamento).

Basicamente, time-sharing consiste em alternar entre diferentes processos de forma que o usuário tenha a

percepção que todos os processos estão sendo executados simultaneamente, permitindo a interação com

múltiplos processos em execução.

www.evandrojunior.pro.br

Page 33: Arquitetura de Computadores: Processos e Threads

Escalonamento

Escalonador é responsável por gerenciar a fila de prontos, e escolher qual dos processos

prontos vai ser o próximo a usar CPU (de acordo com as prioridades dos processos)

Também é responsável por ajustar (aumentar/diminuir) a prioridade dos processos

www.evandrojunior.pro.br

Page 34: Arquitetura de Computadores: Processos e Threads

Escalonamento

Não existe um algoritmo ideal, cada algoritmo persegue um objetivo. Por exemplo:

– Garantir justiça (fairness): cada processo ganha fatia igual da CPU.

– Aumentar eficiência: manter utilização de CPU alta (próxima a 100%).

– Minimizar tempo de resposta (para processos interativos).

– Minimizar de tempo médio de permanência no sistema (Δt entre início-fim de processos batch).

– Maximizar vazão: maior número possível de processos processados por unidade de tempo.

Sempre que beneficia uma classe de processos, prejudica-se outras classes.

www.evandrojunior.pro.br

Page 35: Arquitetura de Computadores: Processos e Threads

Escalonamento

1. Escalonamento de longo prazo

Ao ser criado, processo recebe uma prioridade (vai para uma fila dos prontos)

2. escalonamento de curto prazo (“dispatching”)

Escolhe um dos processos da/s lista/s de prontos para executar

• Geralmente, o escalonamento de curto prazo dá um quantum de tempo (Δt) de CPU para

cada processo.

www.evandrojunior.pro.br

Page 36: Arquitetura de Computadores: Processos e Threads

Escalonamento

Têm parâmetros que precisam ser ajustados para maximizar a “satisfação média” de todos os

usuários e garantir execução eficiente das tarefas essenciais ao sistema (processos do

sistema) .

www.evandrojunior.pro.br

Principal problema: o

comportamento futuro de

um processo não é

previsível (quando fará

uso intensivo da CPU, e

quando fará E/S

frequente)

Page 37: Arquitetura de Computadores: Processos e Threads

Escalonamento de Curto Prazo

Ações e eventos que fazem um processo entrar na fila dos prontos.

www.evandrojunior.pro.br

Page 38: Arquitetura de Computadores: Processos e Threads

Tipos de Escalonamento Com relação ao momento da invocação do escalonador:

Preemptivo: a cada clock tick escalonador verifica se processo corrente já expirou seu

quantum de tempo, e se sim, interrompe-o, e escolhendo outro processo para executar

Não-preemptivo: escalonador só é chamado quando processo é bloqueado (chamada

de sistema), ou termina.

Com relação ao método de seleção do processo mais prioritário:

Uso da função P = Priority(p)

Regra de desempate (para processos de mesma prioridade)

• Escolha randômica

• Cronológica (FIFO)

• Cíclica (Round Robin) www.evandrojunior.pro.br

Page 39: Arquitetura de Computadores: Processos e Threads

www.evandrojunior.pro.br

Page 40: Arquitetura de Computadores: Processos e Threads

Possíveis Parâmetros da Função Prioridade

• Internos (do sistema)

– Tipo do processo (sistema vs usuário).

– Quantidade de memória usada.

– Tempo total de CPU requisitado.

– Tempo de serviço obtido / alcançado.

– Tempo total de permanência no sistema.

• Externos

– Prazo para término de ação (Deadline).

– Prioridade do usuário: root vs normal.

www.evandrojunior.pro.br

Page 41: Arquitetura de Computadores: Processos e Threads

First In First Out (FIFO)

Execução por ordem de chegada (não Preemptivo)

Tempo médio de espera? Bom?

www.evandrojunior.pro.br

Page 42: Arquitetura de Computadores: Processos e Threads

Shortest Job First (SJF)

Escalonamento não Preemptivo para processamento em lote

Tempo médio de espera: ? Bom?

www.evandrojunior.pro.br

Page 43: Arquitetura de Computadores: Processos e Threads

Escolha Circular - Round Robin

• Processos prontos ficam em uma fila de prontos

• Cada processo recebe um quantum de tempo de CPU. Após esgotar o tempo, é interrompido e posto no final da fila.

• Objetivo: justiça no atendimento de muitos processos centrados em E/S

www.evandrojunior.pro.br

Page 44: Arquitetura de Computadores: Processos e Threads

Escolha Circular - Round Robin

Sejam processos na fila com seus tempos de rajada:

• P1: 20

• P2: 12

• P3: 8

• P4: 16

• P5: 4

O Diagrama de Gannt e

tempo médio de espera

www.evandrojunior.pro.br

Page 45: Arquitetura de Computadores: Processos e Threads

Escalonamento com múltiplas filas (ML)

• Para sistemas com mix de processos interativos e em lote

• Processos são classificados segundo prioridade, e cada classe tem sua própria fila de prontos.

• Seleciona todos de prioridade 1; a seguir, todos de prioriade 2, etc.…

• Para evitar o problema de inanição (= alguns processos nunca ganham a vez), pode-se definir períodos de tempo máximos para cada categoria: por exemplo, 70% para 1, 20% para 2 …

www.evandrojunior.pro.br

Page 46: Arquitetura de Computadores: Processos e Threads

Comparação

Sistemas em lote

– FIFO, SJF, SRT

– FIFO é o mais simples

– SJF/SRT possuem tempos médios de turnaround (#processos/tempo) menores

Sistemas time-sharing

– Tempo de resposta é crítico

– RR puro ou MLF (c/ RR por nível) são apropriados

– A escolha do quantum de tempo q determina o overhead

• Quando q → ∞, RR se aproxima de FIFO

• Quando q → 0, overhead de troca de contexto (TC) → 100%

• Quando q >> overhead de TC, n processos executam desempenho ≈1/n CPU velocidade

www.evandrojunior.pro.br

Page 47: Arquitetura de Computadores: Processos e Threads

www.evandrojunior.pro.br

Page 48: Arquitetura de Computadores: Processos e Threads

Threads

Conceito

A necessidade de se fazer várias coisas simultaneamente aparece frequentemente

na computação. Para vários programas distintos, normalmente o próprio sistema

operacional gerencia isso através de vários processos em paralelo.

Em um programa só (um processo só), se queremos executar coisas em paralelo,

normalmente falamos de Threads.

www.evandrojunior.pro.br

Page 49: Arquitetura de Computadores: Processos e Threads

Threads

Conceitos

É uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrencialmente.

http://pt.wikipedia.org/wiki/Thread

Um pequeno programa que trabalha como um sub-sistema independente de um programa maior, executando alguma tarefa específica.

http://www.hardware.com.br/termos/thread

Linha de execução independente dentro de um mesmo processo.

http://www-di.inf.puc-rio.br/

"Duas tarefas ao mesmo tempo“

http://www.caelum.com.br/

www.evandrojunior.pro.br

Page 50: Arquitetura de Computadores: Processos e Threads

Threads

Os sistemas que suportam uma única thread (em real execução) são chamados de

monothread enquanto que os sistemas que suportam múltiplas threads são

chamados de multithread.

www.evandrojunior.pro.br

Page 51: Arquitetura de Computadores: Processos e Threads

Threads

www.evandrojunior.pro.br

Page 52: Arquitetura de Computadores: Processos e Threads

Threads

Vantagem

Um programa dividido em vários threads pode rodar mais rápido que um programa

monolítico, pois várias tarefas podem ser executadas simultaneamente.

Os vários threads de um programa podem trocar dados entre si e compartilhar o mesmo

espaço de memória e os mesmos recursos do sistema.

www.evandrojunior.pro.br

Page 53: Arquitetura de Computadores: Processos e Threads

Threads

Exemplo 1

www.evandrojunior.pro.br

Um exemplo simples seria um jogo, que pode ser modelado com linhas de

execução diferentes, sendo uma para desenho de imagem e outra para áudio.

Neste caso, há um thread para tratar rotinas de desenho e outro thread para tratar

áudio; No ponto de vista do usuário, a imagem é desenhada ao mesmo tempo em

que o áudio é emitido pelos alto-falantes; Porém, para sistemas com uma única

CPU, cada linha de execução é processada por vez.

Page 54: Arquitetura de Computadores: Processos e Threads

Threads

Exemplo 2

www.evandrojunior.pro.br

Imagine um programa que gera um relatório muito grande em PDF. É um processo

demorado e, para dar alguma satisfação para o usuário, queremos mostrar uma

barra de progresso. Queremos então gerar o PDF e ao mesmo tempo atualizar a

barrinha.

Page 55: Arquitetura de Computadores: Processos e Threads

Threads

Como funciona no Windows

O Windows têm mais facilidade para gerenciar programas com apenas um processo e vários

threads, do que com vários processos e poucos threads, pois Windows o tempo para criar um

processo e alternar entre eles é muito grande.

www.evandrojunior.pro.br

Page 56: Arquitetura de Computadores: Processos e Threads

Threads

Como funciona no Linux

O Linux e outros sistemas baseados no Unix por sua vez é capaz de criar novos processos

muito rápido, o que explica o fato de alguns aplicativos, como por exemplo o Apache,

rodarem muito mais rápido no Linux do que no Windows, ao serem portados para ele.

www.evandrojunior.pro.br

Page 57: Arquitetura de Computadores: Processos e Threads

Threads

Processos com um ou mais threads

www.evandrojunior.pro.br

Page 58: Arquitetura de Computadores: Processos e Threads

Threads

Principais Características

1. Cada thread tem a sua pilha própria, mas compartilha o mesmo espaço de

endereçamento do processo em que foi criada;

2. Se duas threads executam o mesmo procedimento/método, cada uma terá a

sua própria cópia das variáveis locais;

www.evandrojunior.pro.br

Page 59: Arquitetura de Computadores: Processos e Threads

Threads

Principais Características

3. As threads podem acessar todas os dados globais do programa, e o heap

(memória alocada dinamicamente);

www.evandrojunior.pro.br

Page 60: Arquitetura de Computadores: Processos e Threads

Threads

Exemplo de uso de threads

Um processador de texto com três threads.

www.evandrojunior.pro.br

Page 61: Arquitetura de Computadores: Processos e Threads

Threads

Um servidor web com múltiplas threads.

www.evandrojunior.pro.br

Page 62: Arquitetura de Computadores: Processos e Threads

Threads

Cada thread executa um procedimento que consome um request R, processa-o e gera uma resposta.

www.evandrojunior.pro.br

Page 63: Arquitetura de Computadores: Processos e Threads

Threads

ULT e KLT

Usualmente as threads são divididas em duas categorias: thread ao nível do

utilizador (em inglês: User-Level Thread (ULT)), e thread ao nível do núcleo (em

inglês: Kernel-Level Thread (KLT)).

www.evandrojunior.pro.br

Page 64: Arquitetura de Computadores: Processos e Threads

Threads

Thread de usuário

São suportadas pela aplicação, sem conhecimento do núcleo e geralmente são

implementadas por pacotes de rotinas (códigos para criar, terminar,

escalonamento e armazenar contexto) fornecidas por uma determinada biblioteca

de uma linguagem, como é o caso da thread.h (biblioteca padrão da linguagem C).

www.evandrojunior.pro.br

Page 65: Arquitetura de Computadores: Processos e Threads

Threads

Thread de kernel

A gestão da thread (KLT) não é realizada através do código do próprio programa;

todo o processo é subsidiado pelo SO.

www.evandrojunior.pro.br

Page 66: Arquitetura de Computadores: Processos e Threads

Threads

Thread de Usuário x Thread de kernel

www.evandrojunior.pro.br

Page 67: Arquitetura de Computadores: Processos e Threads

Modelo de Geração de Multithreads

Modelo Muitos-Para-Um

O modelo muitos-para-um mapeia muitos threads de nível de usuário para threads

do kernel.

www.evandrojunior.pro.br

Page 68: Arquitetura de Computadores: Processos e Threads

Modelo de Geração de Multithreads

Modelo Um-Para-Um

O modelo um-para-um mapeia cada thread de usuário para um thread de kernel, gera

mais concorrência do que o modelo muitos-para-um.

www.evandrojunior.pro.br

Page 69: Arquitetura de Computadores: Processos e Threads

Modelo de Geração de Multithreads

Modelo Muitos-Para-Muitos

O modelo muitos-para-muitos multiplexa muitos threads de nível de usuário para um

número menor ou igual de threads de kernel.

www.evandrojunior.pro.br

Page 70: Arquitetura de Computadores: Processos e Threads

Threads

Cancelamento

O cancelamento de threads corresponde à tarefa de terminar um thread antes que

se complete.

www.evandrojunior.pro.br

Page 71: Arquitetura de Computadores: Processos e Threads

Threads

Cancelamento

Por exemplo:

Se múltiplos threads estão pesquisando concorrentemente em um banco de dados

e um thread retorna o resultado, os threads que ainda estão sendo executados

podem ser cancelados.

www.evandrojunior.pro.br

Page 72: Arquitetura de Computadores: Processos e Threads

Threads

Cancelamento

Por exemplo:

Uma outra situação pode ocorrer quando um usuário pressionar um botão em um

navegador da Web. Com frequência, uma página da Web é carregada em um

thread separado. Quando um usuário pressionar o botão stop, o thread que estava

carregando a página é cancelado.

Um thread que está para ser cancelado é frequentemente denominado thread-

alvo.

www.evandrojunior.pro.br