Escolar Documentos
Profissional Documentos
Cultura Documentos
1
Introdução aos Sistemas
Operacionais
Este material tem como base as
seguintes fontes:
– TANENBAUM. Sistemas Operacionais Modernos,
2ª Edição – Capítulo 2;
– OLIVEIRA; CARISSIMI; TOSCANI. Sistemas
Operacionais. 2ª Edição – Capítulo 2;
– Deitel, Deitel e Choffnes. Sistemas Operacionais –
Capítulos 3, 4, 5, 6 e 8.
– www.prenhall.com/tanenbaum_br
– pt.wikipedia.org/wiki/Sistemas_operacionais
2
Capítulo 2
Processos e Threads
2.1 Processos
2.2 Threads
2.3 Comunicação interprocessos
2.4 Problemas clássicos de IPC
2.5 Escalonamento
3
Introdução às Threads (1)
5
Introdução às Threads (3)
• Modelo de processo:
– Grupamento de recursos:
• código, dados, recursos;
– Execução:
• PC (registrador de próxima instrução)
• Registradores de trabalho
• Pilha com a história da execução.
6
Introdução às Threads (4)
• Processo x Thread
– Processos são usados para agrupar
recursos comuns
– Threads são entidades escalonadas
para executar em um processador
– As threads permitem que múltiplas
execuções ocorram no mesmo
ambiente de processo de forma
independente.
8
Introdução às Threads (6)
• Denominações
– Processos que possuem apenas uma
thread: processos singlethread ou
monothread
– Processo que possuem várias
threads: processos multithread
– Threads: processos leves ou
lightweight process
10
Introdução às Threads (8)
11
Introdução às Threads (9)
• Processos singlethreaded x
multithreaded
12
Introdução às Threads (10)
13
Introdução às Threads (11)
14
Introdução às Threads (12)
Thread_Backup
Thread_CorretorOrtografico
Thread_AnalisadorSemantico
17
Utilização de Threads (3)
Exemplo 1 – Editor de textos
19
Utilização de Threads (5)
Exemplo 1 – Editor de textos
• Pergunta 1:
– Este editor de textos poderia ser
projetado com cinco processos ao
invés de cinco threads?
20
Utilização de Threads (6)
Exemplo 1 – Editor de textos
• Resposta 1:
– Sim, mas com cinco processos
teríamos custo alto para realizar a
comunicação entre os processos,
pois são cinco espaços de endereço
distintos. Como as threads executam
no mesmo espaço, a comunicação é
direta.
21
Utilização de Threads (7)
Exemplo 1 – Editor de textos
• Pergunta 2:
– Este editor de textos poderia ser
projetado com um processo
singlethread, sem perda de
desempenho?
22
Utilização de Threads (8)
Exemplo 1 – Editor de textos
• Resposta 2:
– Sim, utilizando programação
orientada a eventos e interrupções,
mas com um modelo bastante
complexo. Além disso, estas
interrupções não poderiam resultar
em bloqueio do processo, senão o
processo perderia o processador a
cada interação com o usuário.
23
Utilização de Threads (9)
Exemplo 2 – Servidor Web multithread
26
Utilização de Threads (12)
Exemplo 3 – Servidor Web monothread
Paralelismo, chamadas
Multithread Seqüencial Bom
ao sistema com bloqueio
Sem paralelismo,
Processo
chamadas ao sistema Seqüencial Ruim
monothread
com bloqueio
Paralelismo, chamadas
Máquina de estados
ao sistema sem Orientada a interrupções Bom
finitos
bloqueio, interrupções
29
Threads de Usuário (1)
• Características
– Implementadas fora do kernel do
sistema operacional;
– Possibilitam a utilização de threads
em sistemas operacionais que não
suportam threads;
– Cada processo possui um sistema
supervisor de threads;
31
Threads de Usuário (3)
• Características
– Neste modelo as threads executam
no topo do sistema supervisor que é
capaz de realizar as operações
thread_create, thread_exit,
thread_wait, thread_yeld e outras.
32
Threads de Usuário (4)
• Características
– O sistema supervisor possui uma
tabela de threads, pois neste modelo
apenas o processo conhece as suas
threads (o sistema operacional não
reconhece a existência das threads);
33
Threads de Usuário (5)
• Problemas
– Quando uma thread de usuário faz
uma chamada bloqueante, todo o
processo é bloqueado;
– Esse modelo de thread não admite
que o supervisor (escalonador de
threads do processo) trabalhe com o
sinal de preempção
34
Threads de Núcleo (1)
• Características
– Não há necessidade de um sistema
supervisor para cada processo;
– Não há necessidade de tabelas de
threads para cada processo;
– O kernel possui uma tabela de
threads que gerencia as threads de
todo o sistema;
36
Threads de Núcleo (3)
• Problemas
– O chaveamento de contexto é mais
pesado para as threads de núcleo
(em relação às threads de usuário);
– Torna o escalonamento de processos
mais complicado, exigindo um
escalonador no kernel que trabalhe
com threads
37
Threads de Híbridas (1)
• Definição
– Formada por uma thread de núcleo
(escalonável pelo kernel) e várias
threads de usuário (escalonadas pelo
supervisor do processo)
– Assim, as threads de usuário fazem o
processamento normalmente e, quando
ocorre a necessidade de uma chamada
bloqueante, a thread de núcleo lida com
a situação
39
Leituras complementares:
• Leitura: OLIVEIRA; CARISSIMI; TOSCANI.
Sistemas Operacionais. 2ª Edição, Editora
Sagra-Luzzato, Porto Alegre, Novembro,
2001 – Capítulo 2;
• Leitura: Tanenbaum; Sistemas Operacionais
Modernos. 2ª Edição – Capítulo 2 (págs. 60
– 73).
40