Anda di halaman 1dari 20

Sistemas Operacionais

Rmulo Silva de Oliveira


Alexandre da Silva Carissimi
Simo Sirineo Toscani
11
!"#$%&'# )*%+',"-.'"# /
Sumrio
Implementao do conceito de processos e threads
Escalonamento
Escalonadores no preemptivos
Escalonamento
Escalonamento preemptivos
!"#$%&'# )*%+',"-.'"# 0
Introduo
Multiprogramao pressupe a existncia simultnea de vrios processos
disputando o processador
Necessidade de intermediar esta disputa de forma justa
Gerncia do processador
Algoritmos de escalonamento
Necessidade de representar um processo
Implementao de processos
Estruturas de dados
!"#$%&'# )*%+',"-.'"# 1
Representao de processo
Processo um programa em execuo
reas na memria para cdigo, dados e pilha
Possui uma srie de estados (apto, executando, bloqueado, etc.) para
representar sua evoluo no tempo, implica em:
Organizar os processos nos diferentes estados
Determinar eventos que realizam a transio entre os estados
Determinar quando um processo tem direito a utilizar o processador
Necessrio manter informaes a respeito do processo
e.g.: prioridades, localizao em memria, estado atual, direitos de
acesso, recursos que emprega, etc.
!"#$%&'# )*%+',"-.'"# 2
Bloco descritor de processo
Abstrao de processo implementado atravs de uma estrutura de dados
Bloco descritor de processos (Process Control Block - PCB)
Informaes normalmente presentes em um descritor de processo
Prioridade
Localizao e tamanho na memria principal
Identificao de arquivos abertos
Informaes de contabilidade (tempo CPU, espao de memria, etc.)
Estado do processador (apto, executando, bloqueando, etc.)
Contexto de execuo
Apontadores para encadeamento dos prprios descritores de processo etc.
!"#$%&'# )*%+',"-.'"# 3
Os processos e as filas
Um processo sempre faz parte de
alguma fila
Fila de livres
Nmero fixo (mximo) de
processos
Alocao dinmica
Fila de aptos
Fila de bloqueados
Eventos realizam transio de uma fila
outra
livres
Aptos
Executando
Bloqueado
0
1
2
3
4
5
!"#$%&'# )*%+',"-.'"# 4
Exemplo de bloco descritor de processos (1)
struct desc_proc{
char estado_atual;
int prioridade;
unsigned inicio_memoria;
unsigned tamanho_mem;
struct arquivos arquivos_abertos[20];
unsigned tempo_cpu;
unsigned proc_pc;
unsigned proc_sp;
unsigned proc_acc;
unsigned proc_rx;
struct desc_proc *proximo;
}

struct desc_proc tab_desc[MAX_PROCESS];

Estrutura de dados representado bloco descritor de processo
!"#$%&'# )*%+',"-.'"# 5
O modelo de processo
Processo representado por:
Espao de endereamento: rea p/ armazenamento da imagem do
processo
Estruturas internas do sistema (tabelas internas, reas de memria, etc.)
Mantidos no descritor de processos
Contexto de execuo (pilha, programa, dados, etc...)
Pilha
Pilha Dados
Processo
Dados Cdigo
SP PC
Espao de
usurio
Espao de
sistema
!"#$%&'# )*%+',"-.'"# 6
Pilha
Pilha Dados
Processo 1
Dados Cdigo
SP
PC Espao de
usurio
Espao de
sistema
Pilha
Pilha Dados
Processo n
Dados Cdigo
SP
PC
...
Vrios processos
Um fluxo de controle por processo
Troca de processo implica em atualizar estruturas de dados internas do
sistema operacional
e.g.: contexto, espao de endereamento, etc...
!"#$%&'# )*%+',"-.'"# 78
Vrios fluxos em um nico processo
Um fluxo de instruo
implementado atravs do contador
de programa (PC) e de uma pilha
(SP, Stack Pointer)
Estruturas comuns compartilhadas
Cdigo
Dados
Descritor de processo
Conceito de thread
Pilha
Pilha Dados
Processo 1
Dados Cdigo
SP
2

PC
1

Espao de
usurio
Espao de
sistema
SP
1

SP
3

PC
3

PC
2

!"#$%&'# )*%+',"-.'"# 77
Multiprogramao pesada
Custos de gerenciamento do modelo de processos
Criao do processo
Troca de contextos
Esquemas de proteo, memria virtual, etc.
Custos so fator limitante na interao de processos
Unidade de manipulao o processo (arquivo)
Mecanismos de IPC (Inter Process Communications) necessitam
tratamento de estruturas complexas que representam o processo e
sua propriedades
Soluo
Aliviar os custos, ou seja, reduzir o peso das estruturas envolvidas
!"#$%&'# )*%+',"-.'"# 7/
Multiprogramao leve
Fornecido pela abstrao de um fluxo de execuo (thread)
Basicamente o conceito de processo
Contexto de uma thread
Registradores (pilha, apontador de programa, registradores de uso
geral)
Comunicao atravs do compartilhamento direto da rea de dados
!"#$%&'# )*%+',"-.'"# 70
Implementao de threads
Threads so implementadas atravs de estruturas de dados similares ao
descritor de processo
Descritor de threads
Menos complexa (leve)
Podem ser implementadas em dois nveis diferentes:
Espao de usurio
Espao de sistema
!"#$%&'# )*%+',"-.'"# 71
Modelo N:1
Threads a nvel de usurio
User level threads ou ainda process scope
Todas as tarefas de gerenciamento de threads so feitas a nvel da
aplicao
Threads so implementadas por uma biblioteca que ligada ao
programa
Interface de programao (API) para funes relacionadas com
threads
e.g.: criao, sincronismo, trmino, etc.
O sistema operacional no enxerga a presena das threads
A troca de contexto entre threads feita em modo usurio pelo
escalonador embutido na biblioteca
No necessita privilgios especiais
Escalonamento depende da implementao
!"#$%&'# )*%+',"-.'"# 72
Vantagens e desvantagens
Vantagens:
Sistema operacional divide o tempo do processador entre os
processos pesados e, a biblioteca de threads divide o tempo do
processo entre as threads
Leve: sem interao/interveno do sistema operacional
Desvantagens:
Uma thread que realiza uma chamada de sistema bloqueante leve ao
bloqueio de todo o processo
e.g.: operaoes de entrada/sada
No explora paralelismo em mquinas multiprocessadoras
!"#$%&'# )*%+',"-.'"# 73
Modelo 1:1
Threads a nvel do sistema
kernel level threads ou ainda system scope
Resolver desvantagens do modelo N:1
O sistema operacional enxerga as threads
Sistema operacional mantm informaes sobre processos e sobre
threads
Troca de contexto necessita a interveno do sistema operacional
O conceito de threads considerado na implementao do sistema
operacional
!"#$%&'# )*%+',"-.'"# 74
Vantagens e desvantagens
Vantagens:
Explora o paralelismo de mquinas multiprocessadoras (SMP)
Facilita o recobrimento de operaes de entrada/sada por clculos
Desvantagens:
Implementao mais pesada que o modelo N:1
!"#$%&'# )*%+',"-.'"# 75
Porque utilizar threads ?
Permitir a explorao do paralelismo real oferecido por mquinas
multiprocessadores (modelo M:N ou 1:1)
Aumentar nmero de atividades executadas por unidade de tempo
(throughput)
Diminuir tempo de resposta
Possibilidade de associar threads a dispositivos de entrada/sada
Sobrepor operaes de clculo com operaes de entrada e sada
!"#$%&'# )*%+',"-.'"# 76
Vantagens de multithreading
Tempo de criao/destruio de threads inferior que tempo de criao/
destruio de um processo
Chaveamento de contexto entre threads mais rpido que tempo de
chaveamento entre processos
Como threads compartilham o descritor do processo que as porta, elas
dividem o mesmo espao de endereamento, o que permite a
comunicao por memria compartilhada sem interao com o ncleo
!"#$%&'# )*%+',"-.'"# /8
Leituras complementares
R. Oliveira, A. Carissimi, S. Toscani; Sistemas Operacionais. Editora
Bookman, 2010.
Captulo 4.
A. Silberchatz, P. Galvin; Operating System Concepts. (4
th
edition).
Addison-Wesley, 1994.
Captulo 4