Professor: Regiane Kawasaki
kawasaki@[Link]
Instituto de Ciências Exatas e Naturais
Faculdade de Computação
CBCC
Unidade III:
Processos e Threads
Sumário
UNIDADE II: PROCESSOS E THREADS
2.1. Motivação, Caracterização e Introdução;
2.2. Modelo de Processo;
2.3. Ciclo de Vida de um Processo
2.4. Tipos de Processos;
2.5. Escalonamento de Processos
2.6. Modelos Fundamentais;
2.7. Arquitetura de Threads;
2.8. Conclusão
Motivação
▪ São uma das mais antigas e importantes abstrações que
o sistema operacional oferece, ou seja, uma abstração de
um programa em execução;
Caracterização:
1. Eles mantêm a capacidade de operações concorrentes,
mesmo quando há apenas uma CPU disponível;
2. Os recursos são alocados ao processo quando ele é criado
ou enquanto está sendo executado;
3. Tradicionalmente, é formado por uma única thread, mas a
maioria dos SO modernos admite processos com múltiplas
threads;
Introdução
▪ Os primeiros sistemas computadorizados permitiam que
apenas um programa fosse executado de cada vez;
▪ Esse programa tinha o controle total do sistema e acesso a
todos os recursos do sistema;
▪ Os sistemas computadorizados modernos permitem que vários
programas sejam carregados na memória e executados
concorrentemente;
▪ Essa evolução exigiu controle mais rígido e maior
compartilhamento dos diversos programas
Processo: É um programa em execução, ou seja, é a unidade de
trabalho em um sistema moderno de tempo compartilhado.
Introdução
▪ A gerência de processos é uma das principais funções do
sistema operacional;
▪ Através dos processos, um programa pode alocar recursos,
compartilhar dados, trocar informações e sincronizar
execuções;
▪ Processos são executados concorrentemente, compartilhando
entre outros recursos, o uso do processador e da memória
principal, além dos dispositivos de E/S;
▪ Esse mecanismo de trocas rápidas (concorrência) é chamado
de multiprogramação;
Modelo de Processo
▪ Em um sistema multiusuário, cada usuário tem seu programa
associado a um processo;
▪ O usuário tem a impressão de possuir o processador e todos os
demais recursos exclusivamente para o seu uso.
▪ Para realizar a concorrência, o sistema precisa guardar todas as
informações do programa interrompido;
▪ Quando este retornar a ser executado, não lhe falte nenhuma
informação necessária a sua continuação;
▪ Essas informações fazem parte do PROCESSO.
▪ Processo é formado por três partes: Contexto de Hardware,
Contexto de Software e Espaço de Endereçamento.
Modelo de Processo
▪ A Figura ilustra de forma
abstrata os componentes
do modelo de um processo.
Contexto de Contexto de
Software Hardware ▪ A execução de um mesmo
programa pode variar, ou
Programa
seja, será função dos
recursos disponíveis.
▪ A falta de recursos pode
Espaço de
Endereçamento
impedir a execução com
sucesso de um programa.
Modelo de Processo
❑ CONTEXTO DE HARDWARE.
▪ Quando um processo está em execução, o seu contexto de
hardware está armazenado nos registradores do
processador;
▪ Quando ele perde a utilização da CPU, o sistema salva as
informações no contexto de hardware do processo.
▪ Armazena o conteúdo dos registradores gerais da CPU,
além dos registradores de uso específico;
▪ Contador de Programa (PC – Program Counter): Mantém sempre
armazenado o endereço da próxima instrução que será executada;
▪ Apontador de Pilha (SP – Stack Pointer): Guarda sempre o endereço do
último dado armazenado na pilha, ou seja, o endereço do topo da pilha;
Modelo de Processo
❑ CONTEXTO DE HARDWARE.
▪ Contexto de hardware é de fundamental importância em
ambientes Multiprogramáveis, pois os processos se
revezam na utilização da CPU.
▪ Processos podem ser interrompidos e, posteriormente,
restaurados.
▪ O S.O. salva o conteúdo dos registradores do processo que
está deixando a CPU e os carrega com os valores referentes
ao do novo processo que será executado.
▪ Essa troca de processos é denominada de concorrência, ou
mudança de contexto;
Modelo de Processo
❑ CONTEXTO DE HARDWARE.
Modelo de Processo
❑ CONTEXTO DE HARDWARE.
▪ Concorrência
PROG_1 PROG_2 PROG_3
Inst. 1.1 Inst. 2.1 Inst. 3.1
Inst. 1.2 Inst. 2.2 Inst. 3.2
Inst. 1.3 Inst. 2.3 Inst. 3.3
Inst. 1.4 Inst. 2.4 Inst. 3.4
Inst. 1.5 Inst. 2.5 Inst. 3.5
. . .
. . .
. . .
Informações de Informações de Informações de
Registradores Registradores Registradores
Processo X Processo Y Processo Z
Modelo de Processo
❑ CONTEXTO DE HARDWARE.
▪ Concorrência
▪ Mudança de contexto: É a troca de um processo por outro
no processador. Ação comandado pelo sistema operacional.
Modelo de Processo
❑ CONTEXTO DE SOFTWARE.
▪ Neste contexto são especificadas as características e limites
dos recursos que podem ser alocados pelo processo.
▪ Algumas características são determinadas no momento da
criação do processo, enquanto outras podem ser alteradas
durante sua existência.
▪ Arquivos de Contas: São especificados os limites dos
recursos que cada processo pode alocar, este arquivo é
gerenciado pelo administrador de sistemas.
▪ O Contexto de Software é composto por: Identificação,
Quotas e Privilégios.
Modelo de Processo
❑ CONTEXTO DE SOFTWARE.
1) IDENTIFICAÇÃO
▪ Cada processo criado pelo sistema recebe uma identificação
única, representada por um número – PID (Process
IDentification).
▪ Através do PID, o S.O. e outros processos podem fazer
referências a qualquer processo existente.
▪ O processo também possui a identificação do usuário
(Identificação única – UID – User IDentification) ou processo
que o criou.
▪ UID permite implementar um modelo de segurança, onde
objetos que possuem a mesma UID podem ser acessados.
Modelo de Processo
❑ CONTEXTO DE SOFTWARE.
1) IDENTIFICAÇÃO
Modelo de Processo
❑ CONTEXTO DE SOFTWARE.
2) QUOTAS
▪ São os limites de cada recurso do sistema que um processo
pode alocar.
▪ Caso uma quota seja insuficiente, o processo poderá ser
executado lentamente, interrompido durante seu
processamento ou mesmo não ser executado.
✓ Número máximo de arquivos abertos simultaneamente;
✓ Tamanho máximo de memória (principal e secundária);
✓ Número máximo de operações de E/S pendentes;
Modelo de Processo
❑ CONTEXTO DE SOFTWARE.
3) PRIVILÉGIOS
▪ Definem as ações que um processo pode fazer em relação a
ele mesmo, aos demais processos e ao sistema operacional.
▪ Privilégios que afetam o próprio processo permitem que
suas características possam ser alteradas, como: prioridade
de execução, limites de memórias;
▪ Privilégios que afetam os demais processos permitem, além
da alteração de suas próprias características, alterar as de
outros processos.
▪ Privilégios que afetam o sistema são os mais amplos e
poderosos (root, administrator).
Modelo de Processo
❑ ESPAÇO DE ENDEREÇAMENTO.
▪ É a área de memória pertencente ao processo onde as
instruções e os dados do programa são armazenados para
execução.
▪ Cada processo possui seu próprio espaço de endereçamento,
que deve ser devidamente protegido do acesso dos demais
processos.
Modelo de Processo
▪ O sistema mantém todas as informações sobre o contexto de
hardware, de software e do endereçamento em uma estrutura
chamada de Bloco de Controle de Processo (PCB);
nome
PID registradores
gerais
owner (UID)
prioridade de
execução registrador PC
data/ hora
de criação Contexto de Contexto de
Software Hardware
tempo de registrador SP
processador
quotas
Programa registrador
privilégios de status
Espaço de
Endereçamento
endereços de memória
principal alocados
Modelo de Processo
❑ BLOCO DE CONTROLE DE PROCESSO (PCB).
▪ O processo é implementado pelo sistema operacional
através de uma estrutura de dados chamada bloco de
controle de processos – PCB ( Process Control Block );
▪ Os PCBs de todos os processos ativos residem na memória
principal em uma área exclusiva do S.O;
▪ O tamanho dessa área, geralmente, é limitado por um
parâmetro do S.O. que permite especificar o número
máximo de processos que podem ser suportados
simultaneamente pelo sistema.
Modelo de Processo
❑ BLOCO DE CONTROLE DE PROCESSO (PCB).
Estado do Processo Indica o estado do
processo: novo, pronto,
Número do Processo interrompido, etc.
Contador de Programa
Indica o PID do processo.
Registradores Indica o endereço da
próxima instrução.
Limites de Memória
Lista de Arquivos Abertos
Prioridade ▪ O PCB serve como o repositório
para quaisquer informações que
... possam variar de um processo
para outro.
Modelo de Processo
Bloco de Controle de Processos
22
Ciclo de Vida do Processo
▪ Em um sistema multiprogramável, um processo não deve alocar a
CPU com exclusividade – deve existir o compartilhamento;
▪ Por conta disso, desde que é gerado, um processo muda
frequentemente de estado;
▪ O estado de um processo é definido pela atividade atual desse
processo;
Ciclo de Vida do Processo
❑ Um processo pode estar em diferentes estados:
▪ Novo (new): O processo está sendo criado. O sistema operacional adiciona um
novo PCB à estrutura e aloca um espaço de endereçamento na memória para
uso.
▪ Execução (running): As instruções estão sendo executadas, isto é, o processo
está utilizando a CPU;
▪ Pronto (ready): é quando está aguardando apenas para ser executado, sendo
que os critérios devem ser determinados pelo sistema operacional
(escalonamento);
▪ Espera (wait): é quando o processo aguarda por algum evento externo ou por
algum recurso para prosseguir seu processamento.
▪ Finalizado (terminated): O processo terminou a sua execução, isto é, o processo
terá o seu PCB retirado do sistema;
Ciclo de Vida do Processo
❑ Diferentes estados de um processo;
Ciclo de Vida do Processo
❑ CRIAÇÃO DE PROCESSO.
▪ Um processo pode ser criado de diversas maneiras, as três
principais são:
❑ Logon Interativo
▪ O usuário, por intermédio de um terminal, fornece ao sistema
um nome de identificação e uma senha.
Ciclo de Vida do Processo
❑ Linguagem de Comandos
▪ Um usuário pode, a partir do seu processo, criar novos
processos por intermédio de comandos das linguagens, sendo
o principal objetivo é a possibilidade da execução concorrente.
❑ Rotina do Sistema Operacional
▪ Um processo pode ser criado a partir de qualquer programa
executável com o uso de rotinas do sistema operacional.
Ciclo de Vida do Processo
❑ CRIAÇÃO DE PROCESSO.
▪ São maneiras de implementar a concorrência dentro de uma
aplicação, ou seja, busca-se subdividir o código em partes para
trabalharem de forma cooperativa.
✓ Processos Independentes: Não existe vínculo do processo
criado com o seu criador e a criação de um processo
independente exige a alocação de um PCB (contexto de
hardware, de software e espaço de endereçamento próprio).
Ciclo de Vida do Processo
❑ CRIAÇÃO DE PROCESSO.
✓ Subprocessos: São processos criados dentro de uma
estrutura hierárquica.
Ciclo de Vida do Processo
❑ CRIAÇÃO DE PROCESSO.
▪ O processo criador é denominado processo pai enquanto o
novo processo é chamado de subprocesso ou processo filho;
▪ O subprocesso pode criar outras estruturas de subprocessos;
▪ Dependência: Caso um processo pai deixe de existir, os
subprocessos subordinados são automaticamente eliminados;
▪ Também possuem seu próprio PCB.
▪ O processo pai pode compartilhar alguns recursos (como
memória e arquivos) entre vários processos filhos;
▪ Essa restrição (compartilhamento) impede que qualquer processo
sobrecarregue o sistema, criando muitos subprocessos.
Tipos de Processo
❑ Foreground: É aquele que permite a comunicação direta do usuário
com o processo durante o seu processamento.
❑ Background: É aquele onde não existe a comunicação com o
usuário durante o processamento. O processamento do tipo
batch é realizado através deste tipo.
Tipos de Processo
❑ Processos Pipe: É quando pode-se associar o canal de saída de um
processo ao canal de entrada de um outro processo.
saída do
Processo A
entrada do saída do
Processo A Processo B
entrada do
Processo B
Processo A Processo B
Tipos de Processo
❑ CPU-Bound: Quando passa a
maior parte do tempo no estado E/S
de execução, ou seja, utilizando o CPU
processador;
CPU-Bound
❑ I/O-Bound: Quando passa a
E/S
maior parte do tempo no estado
de espera, pois realiza um CPU
elevado número de operações de
E/S; I/O-Bound
Escalonamento de Processo
▪ O objetivo da multiprogramação é ter processos em execução o
tempo todo, para maximizar a utilização da CPU.
▪ Por conta disso, um processo migra entre diversas filas de
escalonamento no decorrer do seu tempo de vida;
▪ O sistema operacional precisa selecionar, para fins de
escalonamento, processos vindos de alguma maneira dessas filas;
▪ O processo de seleção é executado pelo escalonador apropriado;
❑ Objetivos do Escalonamento na CPU.
▪ Manter o processador ocupado a maior parte do tempo;
▪ Balancear a utilização do processador entre os diversos processos;
▪ Limitar o tempo de CPU para cada processo;
Escalonamento de Processo
carregar descarregar
Processos descarregados
parcialmente executados
início Fila de Processos CPU fim
Prontos
E/S Fila de E/S Pedido de E/S
Fatia de Tempo
Expira
Filho Executa Cria um Processo
Filho
Ocorre Espera por uma
Interrupção Interrupção
Modelos Fundamentais
▪ Até o final da década de 1970, sistemas operacionais
suportavam apenas processos com um único programa fazendo
parte do seu contexto;
▪ Em 1979, foi introduzido o conceito de processos leves, onde o
espaço de endereçamento de um processo era compartilhado
por vários programas;
▪ Em 1980, com o desenvolvimento do sistema operacional Mach,
ficou clara a separação entre dois tipos de processos;
▪ Os processos passaram a ser classificados como Monothead e
Multithread.
Modelos Fundamentais
❑ MONOTHREAD.
▪ É aquele que suporta apenas um
programa no seu espaço de
endereçamento;
Contexto de Contexto de
▪ Nesse ambiente, aplicações Software Hardware
concorrentes são implementadas
apenas com o uso de múltiplos
processos independentes ou Programa
Espaço de
subprocessos; Endereçamento
▪ Exemplos: MS-DOS e Windows
(versões iniciais);
Modelos Fundamentais
❑ MONOTHREAD.
• Desvantagens:
▪ O uso de processos no desenvolvimento de aplicações
concorrentes demanda consumo de diversos recursos:
▪ CPU: Alocação e desalocação de recursos sempre que um
processo é criado/finalizado;
▪ Comunicação: Cada processo possui seu próprio espaço de
endereçamento, o que torna a comunicação difícil e lenta
(sinais, semáforos, memória compartilhada, troca de
mensagens);
Modelos Fundamentais
❑ MULTITHREAD.
▪ Pode compartilhar o espaço de
endereçamento com inúmeras
outras threads; Contexto Contexto Contexto
de hardware de hardware de hardware
▪ Nesse ambiente, aplicações
Contexto de
software
concorrentes podem ser
implementadas dentro de um
mesmo processo; Thread 1 Thread 2 Thread 3
Espaço de
endereçamento
▪ Exemplo: Maioria dos sistemas
operacionais modernos.
Modelos Fundamentais
❑ PROCESSO MONOTHREAD x PROCESSO MULTITHREAD.
Modelos Fundamentais
❑ THREADS.
▪ Foi introduzido na tentativa de reduzir o tempo gasto na
criação, eliminação e troca de contexto de processos nas
aplicações concorrentes, bem como economizar recursos do
sistema como um todo;
▪ Em ambientes Multithreads, um único processo pode
suportar múltiplos threads, cada qual associado a uma parte
do código de aplicação;
▪ Não é necessário haver diversos processos para
implementar a concorrência, pois threads compartilham o
processador da mesma maneira que um processo;
Modelos Fundamentais
❑ THREADS.
▪ Possuem seu próprio contexto
de hardware, porém
compartilham o mesmo Contexto
de hardware
Contexto
de hardware
Contexto
de hardware
contexto de software e espaço
Contexto de
software
de endereçamento.
▪ Permite que a comunicação de Thread 1 Thread 2 Thread 3
Espaço de
threads dentro de um mesmo endereçamento
processo seja simples e rápida.
Representação de
processo e threads.
Modelos Fundamentais
❑ THREADS.
▪ Threads são subrotinas de programas que podem ser
executadas de forma assíncrona, ou seja, executadas
paralelamente/concorrentemente ao programa chamador;
▪ Dependendo da implementação de thread para determinada
plataforma, os threads podem ser gerenciados pelo sistema
operacional ou pela aplicação do usuário que o cria;
▪ Embora muitos sistemas operacionais suportem threads, as
implementações variam consideravelmente;
Modelos Fundamentais
❑ MULTITHREADS.
• Motivação na Criação de Thread
▪ Projeto de Sofware: Devido à modularidade e ao projeto de
compiladores, possibilidade de executar segmentos de
códigos independentemente do restante da aplicação.
▪ Desempenho: Execução paralela pode reduzir
significativamente o tempo requerido para uma aplicação
multithread concluir sua tarefa.
▪ Cooperação: Os threads de processos podem se comunicar
usando seu espaço de endereçamento compartilhado.
Modelos Fundamentais
❑ MULTITHREADS.
• Vantagens:
▪ Minimização de alocação de recursos do sistema,
associada a utilização concorrente;
▪ Diminuição do overhead na criação, troca e eliminação de
processos;
▪ Possibilidade de resposta de várias solicitações
concorrentemente/paralelamente;
Modelos Fundamentais
❑ MULTITHREADS.
• Vantagens:
▪ Comunicação: compartilham o mesmo contexto de
software e espaço de endereçamento → Threads
compartilham o processador da mesma maneira que
processos (contexto de hardware independentes).
▪ Implementação Interna de Threads: utiliza o TCB (Bloco de
Controle de Threads) → Contexto de hardware e
informações exclusivas de cada thread.
▪ Permite separar a unidade de alocação de recursos da
unidade de escalonamento.
Modelos Fundamentais
❑ MULTITHREADS.
Unidade de alocação Unidade de
de recursos escalonamento
Thread Thread Thread
1 2 3
C.H. C.H. C.H.
C.S.
CPU seleciona um dos threads e
Thread Thread Thread
não o processo.
1 2 3
E.E.
Modelos Fundamentais
❑ MULTITHREADS.
Modelos Fundamentais
❑ BLOCO DE CONTROLE DE THREAD - TCB.
▪ Como dividem o mesmo espaço de endereçamento, também
compartilham as mesma variáveis globais;
▪ Thread pode ter acesso a qualquer endereço de memória
dentro do espaço de endereçamento do processo;
▪ Compartilham o mesmo conjunto de arquivos abertos,
processos filhos, sinais, etc.;
▪ Possuem contexto de hardware diferenciado, ou seja, cada
thread possui seus próprios registradores, pilha, estado, etc.
▪ Essas informações são salvas no Bloco de Controle de Thread
(TCB);
Modelos Fundamentais
❑ BLOCO DE CONTROLE DE THREAD - TCB.
Itens por Processo Itens por Thread
Espaço de Contador de
Endereçamento Programa
Variáveis Globais Registradores
Arquivos Abertos Pilha
Processos Filhos Estado
Alarmes Pendentes
Sinais
Informações
Modelos Fundamentais
❑ Bibliotecas Threads.
▪ Uma biblioteca threads fornece ao programador uma API
para a criação e o gerenciamento de threads;
▪ Existem duas formas principais de implementar uma
biblioteca threads;
▪ A primeira, é fornecer uma biblioteca inteiramente no espaço do
usuário;
▪ A segunda, é implementar uma bilbioteca no nível do kernel, com
suporte direto do sistema operacional;
▪ Três bibliotecas de threads são utilizadas:
1. POSIX Pthreds;
2. Win32;
3. Java;
Modelos Fundamentais
1) POSIX Pthreads.
▪ O IEEE definiu uma API para threads no padrão IEEE 1003.1c,
que possibilita criar programas com threads portáteis;
▪ Essa é uma especificação para o comportamento da thread, e
não uma implementação.
▪ Diversos sistemas implementam: Solaris, Linux, Mac OS X e
Tru64 UNIX;
▪ Existem implementações shareware em domínio público
para os diversos sistemas operacionais Windows;
▪ Pode ser fornecida como biblioteca no nível usuário ou no
nível kernel;
Modelos Fundamentais
1) POSIX Pthreads.
▪ Cada um tem um
Chamada de Thread Descrição identificador, um
pthread_create Cria um novo thread. conjunto de registros
pthread_exit Conclui a chamada de thread. (inclusive o PC), e um
conjunto de atributos
pthread_join Espera que um thread
específico seja finalizado. que são armazenados em
pthread_yield Libera a CPU para que outro
uma estrutura.
thread seja executado.
▪ Os atributos incluem o
pthread_attr_init Cria e inicializa uma estrutura tamanho da pilha, os
de atributos do thread.
parâmetros de
pthread_attr_destroy Remove uma estrutura de
escalonamento e outros
atributos do thread.
itens necessários à
utilização do thread.
Modelos Fundamentais
2) Win32.
▪ A técnica para criar threads usando a biblioteca threads
Win32 é semalhante à técnica Pthreads;
▪ Assim como na Pthreads, quando uma thread é criada um
conjunto de atributos é passado à função de criação;
▪ Esses atributos incluem informações de segurança, o
tamanho da pilha e um flag que pode ser marcado para
indicar se a thread deve ser iniciada em um estado suspenso;
▪ A biblioteca Win32 é uma biblioteca no nível do kernel
disponível no sistema Windows;
Modelos Fundamentais
2) Win32.
▪ A API Win32 é a principal API para a família de sistemas
operacionais da Microsoft;
▪ Uma ID de thread, identificando a thread de forma exclusiva;
▪ Um conjunto de registradores representando o status do
processador;
▪ O conjunto de registradores, pilhas e área de armazenamento
privado é conhecido como contexto da thread;
Chamada de Thread Descrição
CreateThread () Cria um novo thread.
TerminateThread() Conclui a chamada de thread.
WaitForSingleObject() Espera que um thread
específico seja finalizado.
Modelos Fundamentais
3) Java.
▪ As threads são um modelo fundamental da execução do
programa em Java;
▪ A linguagem Java e sua API fornecem um rico conjunto de
aspectos da criação e gerenciamento de threads;
▪ Todos os programas Java incluem pelo menos uma única
thread de controle;
▪ A API de threads Java normalmente é implementada usando
uma biblioteca threads disponível no sistema hospedeiro;
▪ A JVM está sendo executada, portanto, em cima de um
sistema operacional hospedeiro;
Modelos Fundamentais
3) Java.
Programa Java Carregador API Java
arquivos .class de Classes arquivos .class
Interpretador
Java
JVM
Sistema Hospedeiro
(Windows, Linux, etc)
Arquitetura de Threads
▪ Há dois modos principais de implementar um pacote de
threads: no espaço do usuário e no núcleo;
▪ Essa escolha é um pouco controversa, porém é também
possível, uma implementação híbrida;
Ambientes Arquiteturas
DCE (Disributed Computing Environment) Modo usuário
Compaq Open VMS versão 6 Modo usuário
Microsoft Windows 2000 Modo kernel
Compaq Unix Modo kernel
Compaq Open VMS versão 7 Modo kernel
Sun Solaris versão 2 Modo híbrido
Windows XP e Solaris Ativação do Escalonador
Arquitetura de Threads
❑ Threads: ESPAÇO DO USUÁRIO
▪ O pacote de threads é inserido totalmente dentro do espaço
(modo) do usuário;
▪ O núcleo (kernel) não é informado sobre a existência dele,
logo, irá gerenciar os processos como monothread;
▪ Essa abordagem é interessante, pois pode-se utilizar threads em
um sistema operacional que não suporte threads;
▪ Os threads são implementados por uma bilbioteca;
▪ Quando os threads são gerenciados no espaço do usuário,
cada processo precisa de sua própria tabela de threads;
▪ Para manter o controle dos threads naquele processo;
Arquitetura de Threads
❑ Threads: ESPAÇO DO USUÁRIO
▪ Fazer o chaveamento de threads é
mais rápido que desviar o
controle para o núcleo;
▪ Se uma thread ficar bloqueada, o
núcleo naturalmente bloqueia o
processo inteiro, mesmo que
outras threads possam ser
executadas;
▪ Se uma thread começa a executar,
nenhuma outra thread naquele
processo poderá executar sequer
uma vez;
Arquitetura de Threads
❑ Threads: ESPAÇO DO KERNEL
▪ O núcleo sabe da existência das threads e, por conta disso,
passa a gerenciá-las;
▪ O núcleo (kernel) tem uma tabela de threads que
acompanha todos os threads do sistema;
▪ A tabela de threads do núcleo contém os registradores, o estado e
outras informações de cada thread;
▪ O núcleo também mantém a tradicional tabela de processos para
acompanhamento destes;
▪ Quando um thread é bloqueado, é opção do núcleo executar
outro thread do mesmo processo ou um thread de outro
processo;
Arquitetura de Threads
❑ Threads: ESPAÇO DO KERNEL
▪ Possui um maior custo para
criar e destruir threads, pois
são operações realizadas pelo
núcleo;
▪ Logo, haverá constante
chaveamento: usuário –
núcleo - usuário;
▪ Não precisam de nenhuma
chamada não-bloqueante,
pois o núcleo pode escalonar
outra thread para ser
executada;
▪ Pode-se utilizar múltiplos
processadores ou núcleos,
pois o sistema reconhece o
escalonamento de threads.
Arquitetura de Threads
❑ Threads: HÍBRIDAS
▪ São modos de combinação das threads de usuário com
threads de núcleo com a finalidade de aprimorar as
vantagens de ambas;
▪ Um deles é usar threads de núcleo e, então, multiplexar
threads de usuários sobre alguns ou todos os threads de
núcleo;
▪ O programador pode decidir quantos threads de núcleo usar e
quantos threads de usuário multiplexar sobre cada um;
▪ Esta abordagem permite o máximo de flexibilidade;
Arquitetura de Threads
❑ Threads: HÍBRIDAS
▪ Nesta abordagem, o núcleo
sabe apenas sobre os threads
de núcleo e escalona-os;
▪ Alguns desses threads podem
ter multiplexado diversos
threads de usuários;
▪ São criados, destruídos e
escalonados do mesmo modo
que threads de usuário em
um processo que executa SO
sem capacidade multithread;
▪ Cada thread de núcleo possui
algum conjunto de threads de
usuário que aguarda sua vez
para usá-lo;
Arquitetura de Threads
❑ Threads: ATIVAÇÃO DO ESCALONADOR
▪ Serve para copiar a funcionalidade dos threads de núcleo,
porém com melhor desempenho e maior flexibilidade;
▪ Em geral, são associados aos pacotes de threads de usuário;
▪ A eficiência é conseguida evitando-se transições desnecessárias
entre o espaço do usuário e o do núcleo;
▪ Se uma thread bloqueia, não há razão para envolver o núcleo, com
isso, economiza-se a sobrecarga da transição núcleo-usuário;
▪ O sistema de tempo de execução no espaço do usuário pode
bloquear o thread de sincronização e ele mesmo escalonar outro;
Arquitetura de Threads
❑ Threads: ATIVAÇÃO DO ESCALONADOR
Thread 5
Thread 3
Thread 6
Thread 4
Thread 2
Thread 1
Modo Usuário
BIBLIOTECA
KERNEL Modo kernel
Arquitetura de Threads
❑ SINAIS.
▪ São interrupções gerados por softwares ou pelo sistema
operacional, ou pelos processos usuários que notificam ao
processo que um evento ocorreu.
▪ Sinal Síncrono: Ocorre como resultado direto de uma instrução
executada pelo processo ou thread em execução.
▪ Sinal Assíncrono: Ocorre devido a um evento não relacionado com a
instrução corrente; esses sinais devem especificar um identificador
(ID) de processo para indicar o receptor do sinal.
Conclusão
▪ Um processo é um programa em execução e, enquanto ele é executado,
ele muda de estado (ciclo de vida);
▪ O estado de um processo é definido pela atividade atual desse processo, ou
seja, o que ele está “fazendo” naquele instante;
▪ Os sistemas operacionais precisam fornecer um mecanismo para os
processos pai criarem novos processos filhos, porém, pode-se criar,
também, processos independentes;
▪ Já uma thread é um fluxo de controle dentro de um processo, porém,
pode-se ter processos com diversos fluxos de controle diferentes dentro
do mesmo processo, são os chamados multithread;
▪ As threads podem estar em sistemas em nível de usuário, kernel,
híbridas e ativadas pelo escalonador;
▪ Capítulo 3: Processos;
▪ Capítulo 4: Threads;
▪ Capítulo 2: Processos e Threads;