SISTEMAS OPERACIONAIS I
PROCESSOS X THREAD
6.1
Processos e Thread
Além dos processos, os SOs modernos
também implementam os threads, também
conhecidos como "linhas de execução", que
compartilham as estruturas de dados de um
processo.
Prof. Celso Corazza 6.2 Sistemas Operacionais
Processos e Thread
Processo Thread(linha de execução)
É uma instância de um programa em
É uma linha de execução de processo;
execução
Um sistema operacional que executa
Um processo que possui várias linhas de
vários programas na memória é
execução é chamado de multithreaded;
chamado de multitarefa
Linhas de execução compartilham o
Processos compartilham o tempo de
tempo de processamento destinado a
processamento de um processador;
um processo;
A rapidez do processador produz a A rapidez do processador produz a
sensação que processos executam em sensação que threads executam em
paralelo; paralelo;
Exemplo: um navegador pode executar
Exemplo: cada instância de uma planilha
um FTP (File Transfer prococol)
eletrônica é um processo de um mesmo
enquanto o usuário navega pelo seu e-
programa;
mail;
Prof. Celso Corazza 6.3 Sistemas Operacionais
Processos e thread
Para que cada processo possa ser executado, o processador
divide o seu tempo de processamento para cada processo.
• Mudança de um processo para outro processo tem
um custo relativamente alto, processo atual precisa ser
descarregado.
• Mudança de contextos é chamada tecnicamente de
chaveamento de contexto e é o principal aspecto onde as
threads ganham dos processos.
O contexto das trheads é compartilhado e, portanto o tempo
de chaveamento de contexto é mínimo.
Prof. Celso Corazza 6.4 Sistemas Operacionais
Conceito de Processos
O conceito de Processo pode ser dividido em dois :
• Um conjunto de recursos necessários para a execução de programa.
Por exemplo :
• um espaço de endereçamento (virtual address space) que contêm o texto do
programa e os seus dados
• uma tabela de descrição de arquivos abertos
• informação sobre processos filhos
• código para tratamento de sinais (Manipulação de sinal)
• informação sobre o processo ( Permissões, Nome do usuário, Inventário) etc.
• Uma linha ou contexto de execução, chamada “Thread”
• é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que
podem ser executadas concorrentemente. É uma linha de execuções.
• Uma thread guarda informação sobre a próxima instrução a executar
• Registadores – valores das variáveis actuais
• Stack (pilha) – contem a história de execução com um “frame” para cada
procedimento chamado mas não terminado
Prof. Celso Corazza 6.5 Sistemas Operacionais
Dois Processos partilhando uma CPU
conceito
realidade
Troca de
processos
Prof. Celso Corazza 6.6 Sistemas Operacionais
O Modelo de Threads
Conceitos necessários para a execução de programa.
• Conjunto de recursos (Hardware e Software)
• Contexto de execução (Camadas Threads)
Assim
• Processos são usados para agrupar recursos.
• Threads são as entidades escalonadas para execução na
CPU.
Prof. Celso Corazza 6.7 Sistemas Operacionais
Processos X Threads
Processo
Código
Processo: Heavyweight Process:
(Processos pesados) IP
programas completamente separados
com suas próprias variáveis, pilha e Pilha Rotinas de interrupção
alocação de memória stack
Arquivos
Processo
Pilha Código
Threads: lightweight processes IP
stack
(Processos leves)
rotinas compartilham o mesmo Pilha
espaço de memória e variáveis IP Rotinas de interrupção
stack
globais Arquivos
Prof. Celso Corazza 6.8 Sistemas Operacionais
Processos X Threads
Processos são peso-pesados
Quando o processo está sendo executado por um
processador, ele ocupa espaços de memória e de
registro, chamado de contexto;
Cada processo possui um tempo de execução do
processador;
A mudança no processador de um processo é chamado
de chaveamento de contexto;
Threads são peso-leves
Threads também precisam dividir entre si o tempo de
execução do processador;
O chaveamento de contexto entre threads é muito mais
leve, pois as threads compartilham o mesmo contexto de
um processo;
Prof. Celso Corazza 6.9 Sistemas Operacionais
Beneficios de Threads X Processos
A criação e terminação de thread nova é em geral mais
rápida do que a criação e terminação de processo novo.
A comutação de contexto entre duas threads é mais
rápido do que entre dois processos.
A comunicação entre threads é mais rápida do que a
comunicação entre processos - porque as threads
compartilham tudo: espaço de endereçamento, variáveis
globais etc.
Multi-programação usando o modelo de threads é mais
simples e mais portável do que multi-programação usando
múltiplos processos.
Prof. Celso Corazza 6.10 Sistemas Operacionais
Uso Thread (1) Editor Texto
Processo
Thread
Processador de Texto com três threads.
Prof. Celso Corazza 6.11 Sistemas Operacionais
Uso Thread (2) : Web Server
Despacho thread
Trabalho thread
Cache pagina web
Servidor Web multithreaded
Prof. Celso Corazza 6.12 Sistemas Operacionais
Implementação de Threads
Existem duas abordagens principais para a
implementação de threads.
◦Threads em nivel de Kernel - System Calls.
◦Threads em nivel de usuário – Bibliotecas Thread.
Existem vantagens e desvantagens em ambos os
casos.
Também existe sistemas operacionais que implementam
threads usando uma abordagem mista dos dois métodos
principais, por exemplo o SO Solaris da Sun.
Prof. Celso Corazza 6.13 Sistemas Operacionais
Implementação de Threads no Kernel do SO
threads gerenciada pelo kernel
Prof. Celso Corazza 6.14 Sistemas Operacionais
Implementação deThreads no Kernel
Vantagens
◦ O kernel pode simultaneamente escalonar várias
threads do mesmo processo em vários processadores
(reais ou virtuais)
◦ As rotinas do próprio kernel podem aproveitar
threads.
Desvantagens:
◦ A troca entre threads implica ações do kernel e isto
tem um custo que pode ser significativo.
Ex.: Maior acesso implica em um consumo maior dos recursos de hardware.
Prof. Celso Corazza 6.15 Sistemas Operacionais
Implementação de Threads no nível de usuário
Uma biblioteca de threads
implementada ao nível de utilizador.
Prof. Celso Corazza 6.16 Sistemas Operacionais
Implementação de Threads no nível do usuário
Vantagens
A troca de Threads não envolve o kernel
◦ Não há o custo adicional de execução do kernel
◦ O OS não precisa oferecer apoio para threads –
portanto é mais simples.
Escalonamento pode ser especifico para uma aplicação
◦ Uma biblioteca pode oferecer vários métodos de
escalonamento portanto uma aplicação poderá
escolher o algoritmo melhor para ele.
Podem executar em qualquer SO
◦ As bibliotecas de código são portáveis
Desvantagens
Muitas das chamadas ao sistema são “bloqueantes” e o kernel bloqueia processos –
neste caso todos as threads de processo podem ser bloqueados.
O kernel vai atribuir o processo a apenas uma CPU portanto duas threads dentro do
mesmo processo não podem executar simultaneamente numa arquitetura com
múltiplas processadores
Prof. Celso Corazza 6.17 Sistemas Operacionais