Please enable JavaScript.
Coggle requires JavaScript to display documents.
Threads, MAPA MENTAL 4 DISCIPLINA: SO 2025/2 ALUNO(A): Raquel Nascimento…
Threads
4.1 Visão Geral
Unidade básica de utilização de CPU
Individual (por thread)
ID thread
Contador programa
Registradores
Pilha
Compartilhado (processo)
Código
Dados
Recursos SO (arquivos, sinais)
Processo Tradicional = 1 thread
ex: Navegador web
Threads separadas para cada item
Benefícios
programa funciona mesmo que algum item não
ex: site abre mesmo sem todas as img
Compartilhamento de recursos
Economia
Utilização de arquiteturas multiprocessadas
4.2 Programação Multicore
CPUs new: múltiplos cores
Permite paralelismo real
Paralelismo x Concorrência
Paralelismo:
tarefas simultâneas
Concorrência:
múltiplas tarefas(n ao mesmo tempo)
Concorrência SEM paralelismo: possível
Paralelismo + Concorrência: comum
Desafio: programas se adptarem ao sistema
5 areas principais
Tipos Paralelismo
Dados (Data)
Distribui subconjuntos mesmo dado
Mesma operação cada um
Ex: buscar estrelas em imagem
Tarefas (Task)
Distribui tarefas diferentes
Múltiplos núcleos
Mesmo dado ou não
Ex: buscaEstrela + buscaPlanetas
ambos podem ser usados
4.4 Bibliotecas de Threads
API criação/gerenciamento
Implementação
Espaço Usuário: Sem suporte kernel, Código/dados modo usuário
Nível Kernel: Suporte direto SO, Código/dados espaço kernel
Criação
Assíncrona
Pai cria → retoma execução
execução concorrente
execução independente
Pouco compartilhamento
Ex: servidores multithreaded
Síncrona
Pai cria → espera todos
Tarefas concorrentes
Pai continua: após retorno dos filhos
Compartilhamento significativo
Combina resultados
Três Principais
POSIX Pthreads
Especificação IEEE 1003.1c
Linux, Mac OS X, Windows
Implementações disponíveis
Windows Threads
API Windows: windows.h
Java Threads
API rica
Herdar Thread + run()
Implementar Runnable (mais usada)
Mais fácil usar API da propria linguagem
4.3 Modelos Geração Multithreads
Tipos
Usuário: biblioteca nível usuário
Kernel: admitidos pelo kernel (maioria SO modernos)
4.3.1 Modelo Muitos-para-Um (N:1)
N threads usuário → 1 thread kernel
desvantagem
Impróprio MP: 1 por vez no kernel
Processo bloqueado: 1 thread bloqueia
Poucos sistemas
4.3.2 Modelo Um-para-Um (1:1)
Cada thread usuário → thread kernel
vantagem
Maior concorrência e
Uso MP efetivo
desvantagem
Custoso criar kernel threads, pode Prejudica desempenho
Linux e Windows
4.3.3 Modelo Muitos-para-Muitos (M:N)
Muitos usuário → muitos kernel (≤)
Número threads kernel: específico aplicação/máquina
criação suficiente threads do kernel
4.5 Questões Relacionadas Criação
Banco Threads (Pool)
Esperam trabalho
Evita criação indiscriminada
Limita número threads
Controla sistema
Java: java.util.concurrent
Cancelamento
Terminar antes conclusão
Assíncrono
Imediato
Problemático: recursos não liberados
Java: stop() depreciado
Adiado
Verifica periodicamente
Cancellation points
Término ordenado
Manipulação Sinais
UNIX: Notifica: evento particular
Gerado → Entregue → Tratado
Opções Entrega
Thread: sinal aplica
Cada thread: processo
Certos threads: processo
Área específica: todos sinais
Windows: Simulam sinais UNIX
Ativações Escalonador
M:N e dois níveis
Comunicação: número apropriado
LWP (Processo Leve)
LWP (Processo Leve)
Estrutura intermediária
Processador virtual
Ligado: thread kernel
SO escalona threads kernel
Mecanismo
Upcalls: kernel → biblioteca
Comunicação eventos
Mantém número correto
MAPA MENTAL 4
DISCIPLINA: SO 2025/2
ALUNO(A): Raquel Nascimento