0% acharam este documento útil (0 voto)
4 visualizações93 páginas

Diferença entre Processos e Threads

O capítulo aborda os conceitos de processos e threads em sistemas operacionais, destacando a multiprogramação, a criação e término de processos, e a hierarquia entre eles. Além disso, discute as vantagens do uso de threads, como compartilhamento de espaço de endereçamento e eficiência em sistemas com múltiplas CPUs, além de apresentar problemas como condições de corrida e soluções como semáforos e monitores. O material é adaptado de 'Sistemas Operacionais Modernos' de Andrew S. Tanenbaum.

Enviado por

riverasousa
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações93 páginas

Diferença entre Processos e Threads

O capítulo aborda os conceitos de processos e threads em sistemas operacionais, destacando a multiprogramação, a criação e término de processos, e a hierarquia entre eles. Além disso, discute as vantagens do uso de threads, como compartilhamento de espaço de endereçamento e eficiência em sistemas com múltiplas CPUs, além de apresentar problemas como condições de corrida e soluções como semáforos e monitores. O material é adaptado de 'Sistemas Operacionais Modernos' de Andrew S. Tanenbaum.

Enviado por

riverasousa
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Capítulo 2

Processos e Threads
Prof. Fernando Freitas

Material adaptado de: TANENBAUM, Andrew S.


Sistemas Operacionais Modernos. 3ª edição.
Disponível em: [Link]

slide 1 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Processos
• Computadores modernos
– Várias tarefas ao mesmo tempo
– Cada instante um programa
– Cada segundo vários programas
– Pseudoparalelismo

slide 2 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O modelo de processo

slide 3 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O modelo de processo
• Multiprogramação
– Troca rápidas

• Processos
– Não possui taxa uniforme
– Não possui taxa reproduzível

• Diferença processo x programa


– Fabricação de um bolo

slide 4 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Criação de processos
• Eventos que causam a criação de processos:
– Inicialização de sistema.
– Execução de uma chamada de sistema de criação de
processo por um processo em execução.
– Requisição do usuário para criar um novo processo.
– Inicialização de uma tarefa em lotes.

• Linux (fork), Windows (CreateProcess)


– Espaços de endereçamento iguais (Linux)
– Espaços de endereçamento diferentes (Windows)

slide 5 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Término de processos

Eventos que causam o término de um processo:

• Saída normal (voluntária).


• Saída por erro (voluntária).
• Erro fatal (involuntário).
• Cancelamento por outro processo (involuntário).

slide 6 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Hierarquia de processos
• Pai cria um processo filho, processo filho pode criar
seu próprio processo
• Formam uma hierarquia
– UNIX chama isso de “grupo de processos”
• Windows não possui o conceito de hierarquia de
processos
– Todos os processos são criados iguais

slide 7 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Estados de processos

slide 8 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Estados de processos - Escalonamento

slide 9 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Implementação de processos

slide 10 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Implementação de processos

slide 11 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Modelando a multiprogramação

slide 12 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Exercícios
1. O que é pseudoparalelismo?
2. Podemos criar programas baseados somente no
critério tempo? Justifique.
3. Cite os eventos que causam a criação de
processos.
4. Cite os eventos que causam o término de
processos.
5. Quais os estados de um processo? Comente.

slide 13 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Uso do thread
Vantagens:
• Compartilham espaço de endereçamento e dados
• São criadas e destruídas de forma mais rápida (até 100x)
• Permitem que atividades se sobreponham se houver
muita E/S
• Muito úteis em sistemas com múltiplas CPU´s
• Tornam possível manter a idéia de processos
sequenciais e mesmo assim conseguem obter
paralelismo

slide 14 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Uso do thread
Formatação do texto

slide 15 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Uso do thread

slide 16 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Uso do thread

slide 17 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Uso do thread

slide 18 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O modelo de thread clássico

slide 19 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O modelo de thread clássico
• Multithread = Múltiplos threads por processo
• Threads distintos em um processo não são tão
independentes quanto processos distintos
• Não há proteção entre threads
– Impossível
– Não é necessário
– Devem cooperar e não competir
• Cada thread tem sua pilha que armazena rotinas
chamadas que ainda não retornaram

slide 20 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O modelo de thread clássico

slide 21 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O modelo de thread clássico

slide 22 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O modelo de thread clássico
• Threads devem ser corteses
• Complicações
– Chamadas fork() – alocação extra de memória
• Threads devem ser pensadas e projetadas com
cuidado para funcionarem corretamente

slide 23 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Threads POSIX
Pthreads = Padrão
de threads
definidos pelo
padrão IEEE
1003.1c

slide 24 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Threads
POSIX

slide 25 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Exercícios
1. Quais as vantagens de utilizarmos threads?

2. O que são processos multithreads? Cite um


exemplo.

3. Porque não há proteção entre threads?

4. O que são Pthreads?

slide 26 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Implementando threads
• Espaço do usuário
– Pode ser implementado em SO que não suporte thread
– Cada processo tem sua própria tabela de threads
– Chaveamento mais rápido – não envolve núcleo
– Vantagens
• Próprio algoritmo de escalonamento
– Desvantagem
• Falta de página bloqueia processo inteiro – SO não sabe sobre thread

slide 27 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Implementando threads
• Espaço do núcleo
– Única tabela de threads

– Núcleo pode executar uma nova thread quando a thread em


execução for bloqueada

– Alto custo de criação e destruição de threads


• reciclagem.

slide 28 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Implementando threads no espaço do
usuário e no espaço do núcleo

slide 29 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Implementações híbridas

slide 30 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Ativações do Escalonador
• Objetivo – imitar a funcionalidade dos threads de núcleo
– ganha desempenho de threads de usuário
• Evita transições usuário/núcleo desnecessárias
• Núcleo atribui processadores virtuais para cada processo
– deixa o sistema supervisor alocar threads para processadores
• Problema:
– Baseia-se fundamentalmente nos upcalls - o núcleo (camada
inferior) chamando procedimentos no espaço do usuário (camada
superior)

slide 31 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Threads pop-up
• Chegada de uma mensagem = Criação de um novo
thread para lidar com a mensagem
• Conhecido como thread pop-up
• Não possui história = criados rapidamente
• Vantagem:
– Latência menor entre chegada da mensagem e início do
processamento

slide 32 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Threads pop-up

slide 33 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Convertendo o código monothread em código multithread
• Processo complicado. Problemas:
– Variáveis globais a um thread específico. Solução:
• Proibir o uso de variáveis globais
• Cada thread possui sua própria variável global privada
• Linguagens não possui declarações de variáveis intermediárias.
– Rotinas de bibliotecas não são reentrantes. Solução:
• Bit de proteção = elimina grande parte do paralelismo
– Tratamento de sinais
• Núcleo não sabe sobre threads = não pode tratar sinais corretamente
– Gerenciamento de pilha
• Núcleo não conhece threads = não consegue controlar transbordo de
pilha

slide 34 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Convertendo o código monothread em
código multithread

slide 35 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Convertendo o código monothread em
código multithread

slide 36 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Exercícios
1. Cite as vantagens e desvantagens de se
implementar threads no espaço do usuário.
2. Cite as vantagens e desvantagens de se
implementar threads no núcleo.
3. O que são ativações do escalonador?
4. O que são threads pop-up?
5. Cite duas dificuldades para converter códigos
monothreads em multithreads.

slide 37 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Condições de corrida
OBS:
Depuração de código
pode ser inútil para detectar
condições de corrida

slide 38 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Regiões críticas
Condições necessárias para evitar condições de
corridas:

• Dois processos não podem estar simultaneamente dentro


de suas regiões críticas.
• Nada pode ser afirmado sobre a velocidade ou
sobre o número de CPUs.
• Nenhum processo sendo executado fora de sua região
crítica pode bloquear outros processos.
• Nenhum processo deve esperar eternamente para entrar
em sua região crítica.
slide 39 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 40 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Exclusão mútua com espera ociosa

Propostas para obtenção de exclusão mútua:

• Desabilitando interrupções.
• Variáveis do tipo trava.
• Chaveamento obrigatório.
• Solução de Peterson.
• A instrução TSL.

slide 41 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Desabilitando Interrupções

Não é uma solução adequada pois:

• Perigoso dar este privilégio a usuários


• Problema com múltiplos processadores

slide 42 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Variáveis do tipo trava

Solução apresenta problema de condições de


corrida

slide 43 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Chaveamento obrigatório
• Não é uma boa ideia quando
temos um processo mais lento
envolvido
• Viola a regra 3

slide 44 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Solução de Peterson

slide 45 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


A instrução TSL

slide 46 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


A instrução XCHG

slide 47 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Dormir e acordar
• Espera ociosa
– Desperdício de CPU
– Pode ter efeitos inesperados
• Inversão de Prioridade

• Solução
– Bloqueio ao invés de espera ociosa

slide 48 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O problema produtor-consumidor
Problema:

• Bit de sinal perdido


- Pode adormecer
eternamente

• Bit de espera pelo


sinal de acordar
- Resolve para
casos simples

slide 49 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Semáforos

slide 50 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Mutexes

slide 51 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Exercícios
1. Defina condição de corrida.
2. Defina região crítica.
3. Cite e comente 3 soluções para exclusão mútua com
espera ociosa.
4. Descreva o funcionamento do chaveamento obrigatório.
5. Descreva o funcionamento da instrução TSL.
6. Qual o problema de se trabalhar com espera ociosa.
7. De forma resumida, diga no que consiste o problema do
produtor-consumidor.

slide 52 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Mutexes em Pthreads

slide 53 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Mutexes em Pthreads

slide 54 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Mutexes em Pthreads

(Continua)

slide 55 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Mutexes em
Pthreads
(Continuação)

slide 56 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Monitores
• Semáforos. Problemas:
– Cuidado!
– Controle de bloqueio por conta do programador
– Erro sutil pode por tudo a perder
• Monitores
– Somente um processo ativo por vez
– Compilador implemente exclusão mútua
– Programador precisa apenas converter regiões críticas p/
rotinas do monitor
– Solução está na introdução de variáveis condicionais (não
são contadores)

slide 57 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Monitores

slide 58 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Monitores

(Continua)

slide 59 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


(Continuação)
Monitores

slide 60 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Monitores

slide 61 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Monitores

slide 62 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Monitores

slide 63 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Semáforos x Monitores
• Monitores
– Deixam a programação paralela menos sujeita a erros
– Problema:
• Conceito de programação – O compilador deve conhecê-lo

• Semáforos
– Linguagens não apresenta semáforos
• Fácil inclusão

• Conclusão
– Semáforos: Nível muito baixo
– Monitores: Não são úteis
– Nenhum deles permite troca de informação entre máquinas. Deve-
se buscar outra solução.
slide 64 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Troca de mensagens
• Apresentam muitos problemas complexos e dificuldades
de projeto que não ocorrem com semáforos ou monitores.
Ex:
– Distinção entre nova mensagem e retransmissão
– Evitar ambiguidade em nomes de processos
– Autenticação (Evitar impostor)
– Copiar mensagens é mais lento do que realizar operações sobre um
semáforo ou monitor
– Pode utilizar caixas postais ou utilizar a estratégia Rendezvous
(Encontro marcado em francês)
• Bastante utilizada em sistemas de programação paralela.

slide 65 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O problema produtor-consumidor com troca
de mensagens

slide 66 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O problema produtor-consumidor com troca
de mensagens

slide 67 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Barreiras
• Nenhum processo pode
avançar p/ próxima fase
até que todos os processos
estejam prontos a fazê-lo

• Ex. de uso: Problema de


Relaxação da física ou da
engenharia

slide 68 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Escalonamento
• Sistemas em lote: Escalonamento simples
• Sistemas multiprogramados: Escalonamento
complexo
– Computadores pessoais – Escalonamento não é tão
importante.
– Servidores e estações de trabalho – Escalonamento
importante
• Escalonador deve se preocupar com uso eficiente da
CPU

slide 69 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Comportamento escalonamento-processo
• Dois tipos:
– Limitados pela CPU
– Limitados por E/S

• Evolução das CPU´s


– Processos tendem a ficar limitados por E/S

slide 70 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Comportamento escalonamento-processo

slide 71 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Escalonamento
• Quando escalonar
– Criação de um novo processo
– Término de um processo
– Bloqueio de um processo
– Interrupção de E/S

• Algoritmos divididos em duas categorias


– Preemptivos
– Não preemptivos

slide 72 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Categorias dos algoritimos de
escalonamento
• Em lote.
• Interativa.
• Tempo real.

slide 73 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Exercícios
[Link] funcionam as variáveis de condição?
2.O que são os monitores?
[Link] as vantagens e desvantagens dos monitores sobre os
semáforos.
[Link] os principais problemas enfrentados pela troca de
mensagem?
[Link] nos computadores pessoais o escalomanento não
é tão importante quanto nos servidores e estações de
trabalho?
[Link] qual(is) situação(ões) deve ser tomada a decisão de
escalonar um processo?

slide 74 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Objetivos dos algoritmos de escalonamento

slide 75 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Objetivos dos algoritmos de escalonamento
Observações:

– Melhor ter juntos na memória alguns processos


limitados pela CPU e outros por E/S, do que
somente um destes tipos.

– Maior vazão, não significa necessariamente


melhor tempo de retorno

slide 76 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Escalonamento em sistemas em lotes
• Primeiro a chegar, primeiro a ser servido
− Vantagens: Fácil de entender e programar, justo
− Desvantagem: pode atrasar processos orientados a computação

• Tarefa mais curta primeiro


− Todas as tarefas devem estar disponíveis simultaneamente

• Próximo de menor tempo restante


− Versão preemptiva do anterior
− Permite bom desempenho para novas tarefas curtas

slide 77 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Tarefa mais curta primeiro

Média 14 min

Média 11 min

slide 78 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Escalonamento em sistemas interativos
• Escalonamento por chaveamento
circular.
• Escalonamento por prioridades.
• Filas mútiplas.
• Próximo processo mais curto.
• Escalonamento garantido.
• Escalonamento por loteria.
• Escalonamento por fração justa.
slide 79 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Escalonamento por chaveamento circular

slide 80 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Escalonamento por prioridades

slide 81 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Escalonamento em sistemas de tempo real
Podem ser:

• Estáticos
• Decisão é tomada antes de iniciar a execução

• Dinâmico
• Decisão é tomada durante a execução

slide 82 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Política x Mecanismo
• Problema
• O escalonador raramente faz a melhor escolha

• Solução:
• Mecanismo de escalonamento no núcleo, mas
a política é estabelecida por parâmetros de um
processo de usuário

slide 83 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


Escalonamento de threads

(Continua)

slide 84 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


(Continuação)

slide 85 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


O problema do jantar dos filósofos

Acesse o endereço a seguir para ver um exemplo prático:


[Link]

slide 86 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


slide 87 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 88 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 89 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
slide 90 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
O problema dos leitores e escritores

slide 91 © 2010 Pearson Prentice Hall. Todos os direitos reservados.


slide 92 © 2010 Pearson Prentice Hall. Todos os direitos reservados.
Exercícios
1. Diferencie vazão e tempo de retorno.
2. Um dos objetivos dos sistemas interativos é a proporcionalidade. O
que vem a ser proporcionalidade?
3. O escalonador nem sempre toma as melhores decisões. Como
melhorar isto?
4. Diferencie o funcionamento dos algoritmos: menor tempo restante e
tarefa mais curta primeiro.
5. Como funciona o algoritmo de escalonamento round-robim.
6. Diferencie escalonamento por prioridade e escalonamento por filas
múltiplas.
7. Quais os tipos de escalonamento de threads possíveis?
8. Descreva no que consiste a idéia básica envolvida no problema do
jantar dos filósofos
slide 93 © 2010 Pearson Prentice Hall. Todos os direitos reservados.

Você também pode gostar