Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistemas Operativos
2023/2024
João L. M. Pereira
CLAV-256
joao.pedro.pereira@uevora.pt
Baseado nos slides do Capítulo 4 (Threads, SMP, and Microkernels) do livro Operating Systems: Internals and
Design Principles, 7th Edition, Dave Bremer, Otago Polytechnic, N.Z., 2008, Prentice Hall.
Revisão: Estados dos processos
● Trace
○ Comportamento de um processo individual
■ listagem de todas as sequências de instruções executadas para o processo
○ Comportamento pode ser caracterizado
■ através da forma como os “traces” de diferentes processos são intercalados
● Dispatcher
○ Programa que faz a troca do processador
■ entre vários processos
2
Revisão: Execução dos processos - traces
3
Revisão:
Execução dos processos
Visão do processador
4
Revisões: Modelo de 2 estados (Processos)
● em execução (running)
● em não execução (not-running)
5
Revisões: Modelo de 7 estados (Processos)
6
Processos e Threads
Processos tradicionais têm duas características
1. Resource ownership
○ Processos incluem um espaço de endereçamento virtual para guardar a imagem do processo
○ O SO fornece mecanismos de proteção para prevenir interferências não desejadas entre
processos, no que diz respeito aos recursos
2. Scheduling/Execution (Escalonamento/Execução)
○ Segue uma linha de execução (trace), que pode estar intercalada com outros processos
○ Cada processo tem
■ um estado de execução (running, ready, etc…),
■ uma prioridade
■ é “scheduled” e “dispatched” pelo SO
○ Processos tradicionais são sequenciais:
■ Apenas uma linha de execução 7
Processos e Threads
● A unidade de “dispatching”
○ thread ou um lightweight process (processo leve)
● Multithreading
○ Capacidade do SO suportar múltiplos caminhos de execução concorrentes, num único
processo
8
Threads de um processo
9
Abordagens single thread
10
Abordagens multithreaded
11
Processos
● Processos têm
○ Um espaço de endereçamento virtual para guardar a imagem do processo
● Acesso protegido a:
○ Processadores
○ Outros processos
○ Ficheiros
○ Recursos de I/O
12
Várias Threads num Processo
13
Threads vs Processos
14
Vantagens das Threads
15
Threads em sistemas Single-User e
Multiprocessing
Exemplos de uso de Threads num sistema Single-User
● Processamento em foreground e background
○ Uma thread para mostrar menus e input do utilizador, outra para executar e atualizar a
visualização
● Processamento assíncrono
○ Uma thread faz backups periódicos de forma independente do resto do programa
● Velocidade de execução
○ Ler um conjunto de dados (tarefa bloqueante) enquanto outra tarefa processa dados
17
Estados de execução das threads
18
Execução de threads
19
RPC com Single Thread
20
RPC com uma thread por pedido ao servidor
21
Multithreading usando apenas um processador
22
Sincronização de threads
23
Tipos de implementação de threads
24
User Level Threads (ULTs)
25
Relação entre estados dos ULTs
e estados dos processos
● Scheduling
○ é feito apenas sobre as aplicações
○ application specific
27
Desvantagens de ULTs
○ Quando uma ULT executa uma system call, não é apenas a thread que fica bloqueada, mas
todas as threads do processo
○ Uma aplicação multithreaded não consegue tirar partido das vantagens associadas ao
multiprocessamento
28
Ultrapassar as desvantagens das ULTs
● Jacketing
29
Kernel-Level threads
30
Vantagens de KLTs
31
Desvantagens de KLTs
32
Abordagens mistas/combinadas
● A maioria do escalonamento e
sincronização das threads é feito ao nível
da aplicação
● Exemplo: Solaris
33
Relação entre Threads e Processos
34
Múltiplos Cores & Multithreading
35
Efeito de múltiplos cores no desempenho
Amdahl’s law Exemplo Representativo
37
Aplicações que beneficiam de multiprocessadores
● Aplicações multi-processos
○ Caracterizadas pela presença muitos processos com uma única thread
● Aplicações Java
○ A JVM é um processo multithead que disponibiliza escalonamento e gestão de memória
para aplicações Java
38