Professional Documents
Culture Documents
Escalonamentos preemptivos
um processo pode ter sua execução
interrompida e voltar para a fila dos prontos.
Exemplos:
Round-Robin (fatia de tempo/quantum).
Com prioridades para desempatar…
Threads Prioridades / múltiplas filas com realimentação.
Com Round-Robin para desempatar
Lembrando a implementação do
Plano da aula de hoje processo…
Introdução: do processo ao thread. Área dados (SisOp)
HEAP
Mapeamento threads/processos
1:1, N:1, N:M
BSS Dados não inicializados
Exemplos de implementações Data Dados inicializados
Solaris, Windows 2000. Texto PC
Código
1
O espaço de endereçamento do
O processo é…
processo
Texto: contém as instruções binárias do código executável Um programa em execução
do processo (imagem).
Uma unidade de escalonamento
Dados: espaço para as variáveis do processo, declaradas Um fluxo de execução
como globais no programa.
Um conjunto de recursos (contexto) gerenciados
Heap: memória para alocação sob-demanda durante a pelo Sis. Op.
execução
Alocação dinâmica (malloc/free) Registradores (PC, SP, …)
Memória
Pilha: memória para alocação: Descritores de arquivos
De variáveis locais a sub-rotinas (vide chamada de funções); Etc…
Do endereço de retorno de uma sub-rotina.
Área do usuário vs. área do sistema. A troca de contexto é uma operação pesada
Deve acontecer cada vez que há decisão de
escalonamento
Thread ID
PC4
PC1 SP4 Ponteiros para outras threads
SP1 PC3 Ponteiro para o PCB em que se encontra.
SP3 Inclusive o espaço de endereçamento do processo pai!
Informação de escalonamento
Prioridade, estado, tipo de escalonamento…
Processo
2
Vantagens das threads Dois tipos de threads
São processos leves (!= processos pesados). Thread “usuário”
Troca de contexto mais rápida;
Fator 5 no caso de SOLARIS.
Uma biblioteca dá suporte a (criação, escalonamento…),
Tempo de criação menor que executa em modo usuário.
Fator 30 no caso de SOLARIS. O núcleo não interfere nas threads.
Logo, diminui o tempo de resposta do sistema; Vantagens: muito rápidas de gerenciar pois não
necessitam do núcleo (chamada de sistema…)
Maior facilidade para mesclar threads I/O-bound com Exemplo: bibliotecas Pthreads (POSIX), threads de
threads CPU-bound. SOLARIS.
3
Um exemplo de uso do modelo
O modelo 1:1
N:1: Java Threads
Java disponibiliza uma interface de programação Cada thread de usuário é mapeado
com threads.
Um programa Java executa dentro de uma em uma thread de núcleo.
máquina virtual Dessa forma, o Sis. Op. escalona as
A JVM é executada, em geral, como um processo único.
A JVM usa várias threads para seu gerenciamento
threads na CPU e não há blocagem.
Memória, coleta de lixo… Adaptado a arquiteturas multi-
O mapemanto das threads Java da JVM para as processadas.
threads do Sis. Op. depende da implementação da Problema: maior custo de
JVM!
Caso seja para threads de usuário, pode ter ilusão de criação/manutenção das threads
assincronismo!
No Windows, mapeamento 1:1 com threads de núcleo. Limita-se o número de threads
disponíveis em tais sistemas.
4
Mapeamentos threads – LWP –
Organização do núcleo e threads
Processos no Solaris
Um LWP é mapeado a uma thread de núcleo Um Sis. Op. pode ser:
(1:1). Monolítico: o núcleo é constituído de um
Ou seja, o núcleo escalona a entidade LWP. processo só.
As threads (de usuário) podem ser: Não-interrompível: sem preempção
Limitadas : sempre estão mapeadas em um dado LWP Interrompível. Necessita de mecanimsos de
Ilimitadas: podem ser mapeadas em qualquer momento sincronização!
em qualquer LWP. Convencional: o núcleo é executado com
o mapeamento é decidido em nível de usuário!
vários processos/threads.
Implementação: Desde Solaris 2.0; Windows 95…
Thread = thread-id, registradores (PC, SP), pilha e
prioridade.
Com micro-núcleo
Processos servidores prestam serviços a tudo o que
LWP = registradores, memória e contabilidade (no
espaço do núcleo). não está no micro-núcleo
Thread de núcleo: prioridade, escalonamento, ponteiro Há troca de mensagens entre os processos do Sis.
Op.
para o LWP ativo.
5
Conclusão sobre threads No próximo episódio…
O recurso mais moderno dos Sistemas
Operacionais
Vem embutido desde 1998, 2000…
Exemplo de uso de threads: a norma
Existem várias bibliotecas de programação
concorrente com threads: POSIX e a biblioteca pthreads
Pthread, Java Threads, …
Em geral em nível de usuário. Gerenciamento de threads,
Tornou-se a unidade básica de escalonamento na sincronização…
CPU quando o Sis. Op. oferece threads de núcleo
Ex.: Windows
Por isso, cada vez mais, as noções vistas com
processos se aplicam, na realidade de hoje, a
threads:
Algoritmos de escalonamento;
Sincronizações.
Sobra um problema: decidir a granularidade.