UNIVERSIDADE
TUIUTI DO PARANA
Dalmir Montagna
Gustavo Gonl(alves
SIMULADOR
DE ESCALONAMENTO
Curitiba
2004
Coelho
DE CPU DO WINDOWS
2000
Dalmir Montagna
Gustavo Gon~alves Coelho
SIMULADOR
DE ESCALONAMENTO
DE CPU DO WINDOWS
Monografia
apresentada
ao curso
2000
de Sistemas
de
Informar;80 da Faculdade de Ciencias Exalas e
Tecnologia da Universidade Tuiuti do Parana,
como requisito parcial
bach a rei em Sistemas
para a oblen.yao
de lnformar;8o.
Orienladora:
Martins
Curitiba
2004
Giulliana
de Souza
do grau de
TERMO
DE APROVA<;Ao
Dalmir Montagna
Gustavo
SIMULADOR
Esla dissertar;ao
Gon<;alves Coelho
DE ESCALONAMENTO
foi julgada e aprovada
de Informar;80
DE CPU DO WINDOWS
para a oblem,:ao
da Universidade
Curitiba,
do titulo de 8acharel
Tuiuli do Parana.
12 de novembro
Ricardo
Oliveira
de 2004.
Pereira
Bacharelado
do Parana
Sistemas de Informac;:ao Universidade
Orientadora:
Tuiuli
Prof. Giulliana Martins de Souza
Universidade
Tuiuli do Parana·
FaCET
Prof. Fabio Dias de Araujo
Universidade
Tuiuli do Parana
- FaCET
Prof. Patricia
Universidade
do Parana
- FaCET
Prof. Evandro Alberto Zatti
Universidade
Tuiuli do Parana
- FaCET
Bassi
Tuiuli
do Curso
2000
de Sistemas
SUMARIO
1INTRODUI;:AO..
.
2 CONCEITOS DE SISTEMAS OPERACIONAIS..
2.1 ESTRUTURAS
DE UM SISTEMA OPERACIONAL
2.1.1 Sistemas Monoliticos....
.
2.1.2 Sistemas em camadas ..
2.1.3 Maquinas Virtuais..
.
2.1.4 ExoKernels ..
2.1.5 Modelo Cliente/Servidor
..
.
2.1.6 Compara,ao
entre as estruturas
.
3 PROCESSOS..
.
3.1 INTRODUyAO..
3.2 MODELO DE PROCESSO..
3.3 TROCA DE CONTEXTO..
3.4 CONSIDERAyOES
IMPORTANTES
SOBRE PROCESSOS..
3.4 CRIAyAO DE PROCESSOS
.
3.5 TERMINO DE PROCESSOS
3.6 HIERARQUIA
DE PROCESSOS
3.7 TIPOS DE PROCESSOS..
3.8 ESTADOS DE UM PROCESSO
.
3.9 BLOCO DE CONTROLE
DE PROCESSOS
3.10 COOPERAyAO
ENTRE PROCESSOS
3.11 CONSIDERAyOES
SOBRE SINCRONIZAyAO..
4 THREADS..
4.1.0 MODELO DE THREADS..
4.2 MULTITHREADING
4.3 STARVATION
(ESPERA INDEFINIDA)..
4.4 CONSIDERAyOES
SOBRE THREADS
5 ESCALONAMENTO
.
5.1 ALGORITMOS
DE ESCALONAMENTO..
.
5.1.1 Como avaliar um algoritmo de escalonamento
..
5.1.2 Considera90es sabre as algoritmos de escalonamento
6 WINDOWS 2000
6.1 ARQUITETURA
DO SISTEMA.. .
.
6.1.1 Modelo do sistema operacional
6.1.2 Considera90es
sobre a arquitetura do Windows 2000..
6.1.3 Portabilidade
6.1.4 Multi-processamento simetrico....
.
6.1.5 Principais componentes
de sistema
..
6.1.6 Edi,oes do Windows 2000
6.2 PROCESSOS
6.2.1 Estrutura de um processo
6.3 THREADS..
.
6.3.1 Estados de um thread
.
6.4 GERENCIAMENTO
DE THREADS
6.4.1 0 escalonador - Dispatcher
6.4.2 Niveis de prioridade
6.4.3 Prioridades de Tempo Real
6.4.4 Idle Thread.. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
10
10
10
11
11
13
13
14
16
16
17
18
19
..20
22
24
26
27
29
30
33
34
35
36
..36
38
39
.40
.45
.46
47
.47
.47
..50
50
51
.
.
52
55
56
56
60
61
63
66
67
70
71
6.4.5Incrementos
de prioridade..
.
72
6.4.6 Quantum..
.
77
6.4.7 Cenarios de escalonamento
84
6.4.8 Escalonando threads..
.
89
6.4.9 CONSIDERA<;OES
SOBRE 0 ESCALONAMENTO
NO WINDOWS 2000
90
7 ESTRATEGIA
PARA DESENVOLVIMENTO
DO PROTOTIPO..
. 92
7.1 PROBLEMA.
.
92
7.2 SOLu<;Ao
PROPOSTA..
.
92
7.2.1 Linguagem de Programa,ao
.
.
93
7.2.2 Metodologia
.
93
7.2.3 Banco de Dados...
.
94
8 DOCUMENTA<;Ao
DO PROTOTIPO...
.
95
8.1 MODELO ENTIDADE RELACIONAMENTO
..
. 102
8.2 CASOS DE USO.. .
.
104
8.2.1 Caso de Uso - Instru,oes ...
... 104
8.2.2 Caso de Uso - Recursos....
... 105
8.2.3 Caso de Uso - Tipos de Recursos..
... 106
8.2.4 Caso de Uso - Processos I Threads..
.
107
8.2.5 Caso de Uso - Dispatcher...
.
108
8.3 DIAGRAMAS
DE CLASSE..
. 109
8.3.1 Diagrama de cia sse - Dispatcher
109
8.3.2 Diagrama de cia sse - Processos
.
110
8.3.3 Diagrama de classe - Threads..
.
110
8.3.4 Diagrama de classe -Instru,oes..
.
.
110
8.3.5 Diagrama de classe - Recursos..
.
111
8.3.6 Diagrama de classe - Tipo Recursos..
.
111
8.3.7 Diagrama de classe - Prioridades
.
111
8.3.8 Diagrama de classe - Acesso a Dados..
. 111
8.4 TESTES E VALlDA<;AO....
.
112
8.4.1 Descri,ao dos pad roes de threads e processos utilizados nos testes
112
8.4.2 Descri,ao dos testes
.
113
9 CONCLUSAO
.
122
GLOSSARIO...
.
124
REFERENCIAS..
. 125
APENDICES .
.
126
1 MANUAL DO USUARIO..
.
126
2 MANUAL DE INSTALA<;AO DO SOFTWARE..
.
141
L1STA DE QUADROS
QUADRO 1: CARACTERisTICAS
DAS EDII;:OES DO WINDOWS 2000
QUADRO 2: ALGUMAS INFORMAC;;OES DO BLOCO EPROCESS.
.
QUADRO 3: MAPEAMENTO
ENTRE AS CLASSES DE PRIORIDADE
WIN32
PRIORIDADES
NUMERICAS
DO KERNEL..
.
QUADRO 4: INCREMENTO
DE PRIORI DADE, POR TIPO DE DISPOSITIVO
QUADRO 5: CAMPOS DO VALOR WIN32PRIORITYSEPARATlON...
.
QUADRO 6: VALORES DE QUANTUM..
QUADRO 7: 0 VALOR WIN32PRIORITYSEPARATION....
.
55
58
E AS
68
73
80
..81
83
LlSTA DE FIGURAS
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
FIGURA
1: 0 modele de maquinas virtuais
12
2: 0 Modelo cliente·servidor
.
.
14
3: Diagrama de estados de processos...
.
28
4: Uma visao da arquitetura do Windows 2000 .
... 48
5: Diferen9a entre multi-processamento simetrico e assimelrico..
.
52
6: Informa9oes de inicializa9ao do Windows 2000 que estao no registro 53
7: Estruturas de dados associadas com processos e threads
57
8: Estados de um thread..
.
63
9: Aumento e redu9ao de prioridade..
.
74
10: 0 valor Win32PrioritySeparation..
.
82
11: A caixa de dialogo "Performance
Options"..
.
83
12: Troea de contexto por evento externo
.
85
13: Preemp9ao de um thread
87
14: Termino do quantum e escalonamento..
.
89
15: 0 Dispatcher Database..
.
90
16: Os projetos que formam 0 prot6tipo
95
17: Estrutura do projeto WOSS_Dispatcher.
.
96
18: A arquitetura do Windows 2000 e 0 prot6tipo...
.
102
19: 0 modele Entidade·relacionamento
do prot6tipo..
.
103
20: Execu9ao do escalonador....
.
115
21: Altera9ao de prioridade de um processo .
.
116
22: Altera9ao de prioridade - confirma9ao .
.
117
23: Altera9ao do plano de execu9ao de um proeesso
118
24: Defini9ao de parametros de configura9ao
..
.
119
25: Compara9ao entre simula90es de threads.
.
120
RESUMO
Sistemas
operacionais
sao ferramentas
fundamentais
para os sistemas
de
informagc3o,
pais
eles
gerenciam
0
hardware
e software.
Estruturas
de
escalonamento
geralmente sao complexas e apresentam urn grau de abstrac;ao que
muitas vezes dificulta a compreensao
das mesmas. Visando facilitar a compreensao
desses conceitos, esse projeto de gradu8C;8o apresenta urn prot6tipo que, ulilizando
as estruturas de escalonamenlo
do sistema operacionat
Microsoft Windows 2000,
simula 0 comportamento destas, mostrando em detalhes 0 funcionamento do
algoritmo de escalonamento e as estruturas que formam 0 escalonador;
e
desmistificando
Palavras-chave:
0
funcionamento
Processos,
do escalonador
threads,
de urn sistema
escatonamento.
operacional.
1 INTRODUc;:Ao
operacionais
sao formados
pelo gerenciamento
do hardware
Os sistemas
responsaveis
disso, eles constituem
desempenho,
0
e segurang8
em que ela
Urn grande desafio
todos os aspectos
Para
uma
entender
na teoria,
de sistemas
dado
desmistificar
0
funcionamento
o
atividades
threads.
0
objetivo
funcionam
operacionais
funcionamento
desse
essenciais
projeto
dos sistemas
sao
que
Alem
aplicativos executam. 0
e totalmente
de pendente
sao dificeis
e
estruturas,
a
sistemas
entre si. Algumas
de serem
inerente
a interaC;80 entre eles.
destes
e relacionam-se
e compreender
operacionais
e entender
funcionamento
que
dessas
e de fundamental
de sistemas
de gerencia
do
grau de abstragao
delas
complexas
do computador.
esta executando.
compreensao
como as estruturas
complexas
de uma aplic8y.30
no aprendizado
de seus algoritmos
melhor
e software
ambiente em que os software
estabilidade
do sistema operacional
par estruturas
compreendidas
maioria
delas.
uma ferramenta
e
preciso
estruturas
apenas
Para ajudar
que demonstre
a
0
importancia.
e desenvolver
operacionais:
um prot6tipo
que simuta
0 gerenciamento
uma das
de processos
e
10
2 CONCEITOS
DE SISTEMAS
Segundo
em urn
DU
monilor,
Tanenbaum
(2001),
mais processos,
interfaces
programas
que
extremamente
camada
de
todos
todos
chamada
as dispositivos
0
A
estrutura
interagem
de
as partes
No modele
procedimentos
de
de Sistema
urn
sistema
em que
impressoras,
de entrada
urn teclado,
e saida.
e
corretamente
Operacional,
aos programas
tern
a
de usuarios
urn
Escrever
urn trabalho
sao equipados
que
consiste
com
uma
fun<;ao de
uma interface
operacional
e
ele
0
dividido
funcionamento
OPERACIONAL
define
e como
como
cada
0
uma
correto do sistema
seu
e
c6digo
dessas
partes
operacional.
Monoliticos
monolitico,
forma
possuem
(TANENBAUM,2001).
dispositivos
DE UM SISTEMA
entre si para garantir
escritos
esses
moderno
hardware.
2.1.1 Sistemas
sao
discos,
dispositivos
e fornecer
2.1 ESTRUTURAS
organizado,
principal,
e outros
compulacional
Par esse motivQ, as computadores
software
para
um sistema
memoria
rede
controlam
diffcil.
contralar
mais simples
de
OPERACIONAIS
que
nao existe
possam
interfaces
uma hierarquia,
ser
chamados
bern definidas
e varios
uns
procedimentos
pelos
e sao visiveis
outros.
uns aos
Os
outros
II
Em sistemas
operacionais
c6digo do sistema operacional
(SOLOMON,
RUSSINOVICH,
baseados
e drivers
na estrutura
monolitica,
de dispositivo executam
a maioria
do
em modo kernel
2000).
2.1.2 Sistemas em camadas
Nesse
mode 1o,
que a camada
0
A principal
e
inferiores.
Uma
GAGNE,
e hardware
precisa
das camadas
e
de camadas
sao
saber
e necessaria
camadas,
ea
rnais alta
interface
sendo
com
a modularidade.
fornecidas
como
saber
estas
apenas
fazem. Dessa forma, cada camada oevlta a existencia
opera,oes
em varias
0
2003).
as opera<.;:oes que
nao
inves disso,
e dividido
hardware e a camada
do modelo
com
camada
Ao
operacional
GALVIN,
vantagem
implementada
implementadas.
e0
mais baixa
usuario (SILBERSCHATZ,
camada
sistema
pelas
opera<.;:6es
que estas
0
sao
operac,;:oes
de certas estruturas
mais altas (SILBERSCHATZ,
Cad a
camadas
GALVIN,
de dados,
GAGNE,
2003).
2.1.3 Maquinas Virtuais
Atrav8S
do conceito
de que um processo
disponiveis
maquina
de maquina
possui seu proprio
na maquina
real,
real. (SILBERSCHATZ,
au seja,
GALVIN,
virtual,
0
sistema
processador,
0
processa
GAGNE,
operacional
memoria
possui
2003).
uma
cria a ilusao
e outros
copia
recursos
virtual
da
12
Um
computador
compartilhando
pode
ter
varias
maquinas
virtuais,
cada
uma
delas
todos as recursos disponiveis na maquina real. As maquinas virtuais
podem executar qualquer sistema operacional
(SILBERSCHATZ,
GALVIN,
A figura 1 apresenta
GAGNE,
0
que seja suportado
na maquina
real
2003).
modelo de maquinas
virtuais:
Processos
Processos
Processos
Kernel
Kernel
Msquina virtual
1
Maquina
Kernel
virtual
2
Implementa(fao
M;:\quina virtual
3
da msquina virtual
Hardware
FIGURA
GAGNE,
2003).
1:
0 modelo
de
maquinas
virtuais
(SILBERSCHATZ,
GALVIN,
13
2.1.4 ExoKernels
o
e urn
exokemel
por atribuir recurSDS
programa
para as maquinas
A principal
diferenC;:8 do conceito
que nesse
modelo,
apenas
com
urn
que executa
em modo
virtuais e gerenciar
de exokernel
dos
recursos
e
e responsavel
a execuc;:.3o das mesmas.
para 0 modelo
e criado urn clone do computador
subconjunto
kernel
e
de maquina virtual
real para cada usuario,
disponiveis
no
porem,
computador
real
(TANENBAUM,2001).
Uma vez que as recursos de cada maquina virtual sao apenas subconjuntos
dos
da maquina
reCurSD$
disco. 0 exokernel
cada maquina
e necessaria
real, nao
precisa
apenas
manitorar
virtual (TANENBAUM,
remapear,
quais
par exemplo,
recursos
foram
recursos
designados
de
para
2001).
2.1.5 Modelo Cliente/Servidor
Uma
servidores
caracteristica
executando
endereyas,
e a minima
comunicayEio
de mecanismas
comunica,iio
Uma
sistemas
do modele
em modo
possivel
entre processos
servidor
usuario,
cada
e
do codigo do kernel
clientes
e processos
de troca de mensagens.
Nesse
entre cliente e servidor
(TANENBAUM,
modelo
desse
e
de varios
em seu proprio
executando
servidores
modelo,
das vantagens
distribuidos.
a existencia
processo
processos
espayo
em modo kernel.
de
A
pode ser feita atraves
a kernel
gerencia
tada
a
2001).
que adaptabilidade
para
0
usc em
14
ocorrer na mesma maquina
de rede (TANENBAUM,
ou entre maquinas
diferentes, atraves de uma conexao
2001).
A figura 2 mostra 0 modelo Cliente-servidor.
Processo
Servidor de
mem6ria
clienle
Modo
usuario
Modo
Kernel
o
c!ienle oblem 0
serviyo enviando
mensagens
para 0
processo servidor.
FIGURA
2.1.6
estrutura
0 modelo Cliente-servidor
Comparagao
Dentre
possui suas
2:
entre
as estruturas
vantagens
tern rela9ao
apresentadas
com
tambem com as caracteristicas
0
0
acima,
observa-s8
e, dessa
forma,
objetivo
e
interessante
nao
e
devido
necessario
camada inferior e superior. Isso facilita bastante
para a manuten980
desempenho
a escolha
do projeto de sistema
a
abstra980
c6digo isolado. Assim, para desenvolver
inserido em uma das camadas,
facilidade
fica bastante
cad a estrutura
que
da melhor
operacional
e
especificas que cada estrutura possui.
A estrutura em camadas
por cad a cam ada e
2001).
as estruturas
e desvantagens,
direta
(TANENBAUM,
e depura980
comprometido.
0
que
desenvolvimento
operacional.
oferecida
a c6digo que sera
ter urn conhecimento
do sistema
e
profunda da
e traz uma maior
Por outro lado, 0
15
Na estrutura
monolitica
0
que trata de um mesma objeto
sistema
operacional
tssa pode dificultar
c6digo
nao tern urna hierarquia
ou entidade
e parte do c6digo
pode ticar em urna determinada
area do
e outra parte que trata do mesmo objeto em um local diferente.
um pouco
0
processo
de depura<;:ao.
Hoje, alguns sistemas operacionais podem utilizar-s8 dos principais
conceitos
de algumas
operacional
caracteristicas
das estruturas
pode ser definido
como
apresentadas
monolitico,
do modele Cliente-servidor.
aeirna. Por exemplo,
mas, apesar
disso,
urn sistema
pode
possuir
16
3 PROCESSOS
De acordo
programa
em execu93o.
processador,
tarefas.
com Silberschatz,
memoria,
Esses
Galvin
0 processo
arquivos
recursos
precisara
e dispositivos
sao alocados
para
0
e Gagne
(2003),
de certos
de entrada
processo
um processo
recursos,
e saida
como
e um
tempo
para realizar
no momento
de
suas
de sua cria930
ou durante a sua execuy3o.
3.1 INTRODU<;:Ao
No mesmo
computador
in stante
pode tambem
em uma tela au impressora.
alterna entre programas,
Com isso, as usuarios
e tambem
tratado
de hardware
em que esta executando
Em urn sistema
executando
pseudoparalelismo,
que Dcorre em sistemas
mais CPUs compartilhando
Processos
em contraste
multiprocessados
a mesma memoria
ern urn sistema
a
cada urn par uma determinada
Algumas
fisica)
de usuario,
a saida
de multiprograma9ao,
tern uma jlusao de paralelismo.
como
urn programa
estar lendo dados do disco e mostrando
urn
de texto
CPU tambern
fatia de tempo.
vezes, esse contexte
com
(que
0
paralelismo
passu em duas
real
au
(TANENBAUM, 2001).
de multiprogramalYElo,
segundo
Tanenbaum
e
Woodhull:
Em um sistema de multiprogramayao, a CPU tambem alterna de um
programa para outro, execulando cada um por dezenas ou centenas de
milissegundos. Enquanlo, estritamente falando, em qualquer inslante de
tempo, a CPU esta executando s6 um programa, no curso de 1 segundo,
ela pode funcionar para varios programas, dando aos usuarios a ilusao de
paralelismo. (2000, p. 47).
17
Urn processo, na visao de Andrew S. Tanenbaum:
e basicamente
um programa
em execu~ao.
sende conslituido
do c6digo
executavel,
dos dados referentes
ao cooigo, da pilha de execullao, do valor
do conlador
de programa
(registrador
PC), do valor do aponlador
de pilha
(registrador
SP). dos valores dos demais regislradores
de hardware,
alem
de um conjunlo de oulras informal/ces
necessarias
execucao
do
programa.
(1992, p. 10).
a
3.2 MODELO
o
DE PROCESSO
conceito de modelo de processo segundo a atica de Tanenbaum e
Woodhull:
Neste modele, todo 0 software execulavel
no computador,
freqOentemenle
incluindo a sistema operacional,
e organizado
em um numera de processos
seqilenciais,
au somente
processos
para simplificar.
Urn processo
um
programa
ern execuryao,
incluindo
os valores
atuais
do contador
de
programa,
registradores
e variaveis.
Conceitualmente,
cada processo
lern
sua pr6pria CPU virtual. Na realidade,
naluralmenle,
a CPU allerna de urn
processo
para oulro, mas, para enlender
0 sistema,
muito mais facil
pensar em uma coleryao de processos
que execulam
em (pseudo)
paralelo
do que !enlar acompanhar
como a CPU allerna de um programa para oulro.
Essa rapida alternancia
chamada multiprogramayao.
(2000, pA7).
e
e
e
Com a CPU alternando entre processos, a velocidade em que urn processo
executa sua cornputa'tao nao sera uniforme e provavelmente nem mesmo
reproduzivel se
0
mesmo processo executar novamente. Assim, os processos nao
devem ser programados com suposi't0es baseadas em tempos determinados
(TANENBAUM,2001).
18
3.3 TROCA DE CONTEXTO
A traca
informagoes
informac;bes
e
de contexte
do
processo
do
(SILBERSCHATZ,
que
pr6ximo
GAGNE,
A traca de contexto
de
contexto,
operaciona1.
operag8o
estava
ocorre
que
consiste
executando
processo
GALVIN,
exeCUc;8.0 por Dutro processo.
traca
uma
que
foi
e, em
salvar
selecionado
todas
as
carregar
para
as
execuC;8o
2003).
quando
ha necessidade
de trocar
Existe uma serie de situ8y6es
e, algumas
em
seguida,
delas
podem
variar
0
processo
que podem acionar
de
acordo
com
0
em
uma
sistema
Dentre elas, destacam-se:
• 0 processo terminou de executar sua fatia de tempo \
• 0 processo terminou sua execuyao;
•
0 processo
liberou
0
processador
porque
precisa
aguardar
por uma
operal'ao de 110;
•
0 processo
por algumas
sistema
em execugao
precisa
raz6es, de acordo
operacional)
1 Intervalo de tempo, definido pelo sistema
outro processo seja escalonado.
S8r
interrompido
com as politicas
e urn novo processo
operacional,
(issa pode ocorrer
de escalonamento
ira executar.
que 0 processo
tem para executar
ate que
do
19
3.4 CONSIDERA<;:OES
Os conceitos
processos.
e
acima
Todo sistema
mais importante,
mostram
operacional
processo
que
processo.
Os metod os existentes
caracteristicas
executando
de cada sistema
Conclui-se
sua execug8o,
continue
0
possui
pode
ser
variam
do processo
trabalho
importancia
da alternElncia
para decidir
prioridade
qual processo
em que instante
8,
interrompido
entre
para
dar
e sao implementados
urn
lugar
a outro
de acordo
com as
operacional.
a implementa9ao
alual,
para que seja passivel
seu
SOBRE PROCESSOS
urn metoda
tern maior
e fundamental
que
salvar as informa90es
a grande
qual processo
QU,
esta
IMPORTANTES
antes que
que
posteriormente
0
de estruturas
processo
0
exatamente
que possam
outro processo
possa
iniciar
que esta deixando
do
ponto
em
a
que
CPU
ele
foi
interrompido.
Um
outro
fator
importante
desempenho
do sistema
ocorrem
em
um determinado
contexto
sao realizadas.
realizar
esse
operacionais
tipo
conseqOencia,
Qutros
sistemas
tempo
0 objetivo
0
bastante
a quantidade
e a velocidade
e diminuir
Para
fatias
0
operacionais
de
numero
significativo
para
de trocas
de contexto
com
essas
ao maximo
resolver
tempo
0
e responsavel
operacional
esse
maiores
de trocas
implementam
c6digo do nucleo do sistema que
processos.
ser
c6digo do sistema
de operayao.
reduzindo
pode
que
tempo
que
tracas
necessario
0
de
para
e outro, para que a CPU passe mais tempo executando
do que
utilizam
e
operacional
alternar entre um processo
c6digo dos processos
que
problema,
para
de contexto
tecnicas
que e necessario
para
por realizar
alguns
cada
sistemas
processo,
que sao
otimizar
0
para
em
necessarias.
ao maximo
a troca de contexte
0
entre
20
3.4 CRIA<;AO DE PROCESSOS
Urn processo
exemplo,
precisa de certos recurSDS para realizar
tempo de CPU, memoria,
GALVIN,
GAGNE,
(System
a chamada
enquanto
daquele
suas tarefas,
como par
de 110 (SILBERSCHATZ,
varios novas processos,
processos
Cada
formando
durante
urn desses
uma "rvore
criados
e
da chamada
0 processo
chamado
pode,
de
que fez
de processo
sao cham ados de processos
novas processos
de processos
atraves
a sua execu,ao.
para criar novas processos
as novas
processo.
processos,
pode criar
Call) create-process,
de sistema
que
e dispositivos
2003).
Urn processo
sistema
arquivos
pai,
filhos
par sua vez, criar noves
(SILBERSCHATZ,
GALVIN,
GAGNE,
2003).
Um processo
de uma chamada
os processos
arvore
CPU,
pode ser pai de processos
de sistema
filhos
memoria,
arquivos,
au
operacional
ao processo
sobrecarregue
0
ser pais de Qutros
Estes
operacional
sistema
processos
filhos
dispositivos
pod em
(ou subprocess
para a cri8C;8o de processo
podem
geneaI6gica).
filhos
compartilhar
pai.
Nesta
criando
durante
processos
de 110) diretamente
os
recursos
segunda
(como
recurSDS
cedidos
disponibilizados
situayao,
muitos processos
execuc;ao,
a sua
filhos
pod em tsr seus
os) atraves
evita-se
que
e
em uma
(tempo
de
pelo
sistema
pelo
sistema
urn processo
filhos (SILBERSCHATZ,
GALVIN
e GAGNE, 2000).
Quando
urn processo
em termos de execu,ao
•
0
(SILBERSCHATZ,
processo
processos
cria urn novo processo,
pai
filhos;
continua
GALVIN,
a executar
duas
GAGNE,
possibilidades
existem,
2003):
concorrentemente
com
seus
21
o processo
terminado
Existem
novo processo
pai espera ate que alguns ou todos os seus filhos tenham
de executar.
duas possibilidades
(SILBERSCHATZ,
GALVIN,
e uma
• 0 processo filho
•
0 processo
No UNIX,
cansiste
filho tern um programa
em um copia do espayo
0 processo
necessaria
substituir
0
chamada
de sistema
de sistema
processo
0
Quando
processos
eles.
0
associat;(ao
disparado
plano
pode
quando
naquela
e fazem
ocioso
maquina,
requisil'oes
sendo disparado
uma chamada
ate
que
GAGNE,
algum
seu
processos
que sao
trabalho
nos quais
para
nao tern
tern alguma
plano pode ser projetado
a maior parte do tempo
outro
processo
de entrada
quando
0
2003).
plano,
mas ao inves disso,
urn novo e-mail chega.Um
para aceitar
plano,
em segundo
ficando
a
em primeiro
em segundo
em particular,
novo programa,
normal mente alguns
que executam
urn processo
e
prontos2,
GALVIN,
interat;(ao com os usuarios
com usuarios
a
ele pade disparar
inicializado,
que executam
isso,
Quando
pai nao liver mais nada pra
para fora da fila de
e
paL Com
facilitada.
com um
processo
(SILBERSCHATZ,
operacional
Por exemplo,
ser projetado
0
e
filhe
fork e
de sistema
do processo
executando,
e-mails que sao recebidos,
sendo
hospedado
fithe estiver
sao processos
funt;(ao especifica.
carregado nele.
do processo
Se
deles sao proceSSQs
que tern alguma
para aceltar
usada.
de um
pai;
criado pela chamada
de enderec;os
sua execul'ao
sistema
Alguns
Outros
nenhuma
e
de endere90s
2003):
pai e 0 processo
para mover ele mesma
sao criados.
e
espac;o de memoria
execlp
processo
filho termine
GAGNE,
copia do processo
um novo processo
comunic8C;8o entre
fazer enquanto
em termos de espalfo
para
uma requisil'ao
mas
em segundo
um
site Web
chega,
para
22
servi-Ia. Os processos que ficam em segundo
plano para tralar alguma
atividade
como e-mail, paginas web, noticias, impressao e assim par diante sao chamados
daemons,
nos sistemas
UNIX.
Grandes
sistemas
de
passu em dezenas
normalmente
deles. No UNIX, 0 programa ps pode ser usado para listar as processos que estao
em execu,ao.
mostra
0
utilizado
No Windows
que estil
executando.
(TANENBAUM,
mostra
Urn processo
momento
(SILBERSCHATZ,
tarefas para
termina
0
pode
GALVIN
Depois que
0
sabre
gerenciador
0
de
uma
tarefas
os
processos,
incluindo
estatisticas
e
de
e outras informa96es.
quando
pedir
e GAGNE,
processo
sua
que
instruC;flo final
0
devido
sistema
e
executada.
operacional
0
Neste
exclua
2000).
e criado,
ele pode iniciar a sua execuC;flo e fazer as
a uma
das
cedo ou tarde
seguintes
0
condi,oes
novo processo ira
(TANENBAUM,
2001):
Fila onde sao colocados todos os processos que estao prontos para serem escalonados pelo
sistema operacional.
2
vez
freeware chamada Process Explorer. Ele
qual ele foi projetado. Entretanto,
normalmente
+ AL T + DEL
DE PROCESSOS
processo
0
2000,
usuario, atributos de seguran98
conta de
CTRL
de tarefas, no Windows 2000, existe a possibilidade de
detalhadas
3.5 TERMINO
terminar,
No Windows
download de uma ferramenta
informa9oes
memoria,
pressionar
2001).
Alem do gerenciador
fazer um
95/98/Me,
23
•
Saida normal (voluntaria);
•
Saida com erro (voluntaria);
•
Erro fatal (Involuntario);
•
Terminado
A maioria
Quando
por outro processo
dos processos
urn compilador
tarefa
esla terminada.
Essa
(TANENBAUM,
teste.c e
0
Processos
invalid
e
chamada
digita
0
e quando
arquivo naD existe, dessa
0
2001).
seu
0
trabalho.
compilador
no UNIX
executa
que sua
e ExitProcess
que os parametros
corretos
no
processo descobre urn erro fatal.
teste.c para compilar 0 programa
forma, 0 compilador
uma
caixa
simplesmente
de dialogo
sejam informados
° termino
devido a um
0
cc
naD terminarn quando recebem
normalmente
A terceira razao para
processo, geralmente
urn Exit
comando
as. Ao inves disso, apresentam
solicitando
fizeram
eles
Call) para dizer aD sistema operacional
para terminar
urn usuario
interativos
(TANENBAUM,
porque
2001).
A segunda razao
Por exemplo,
(involuntario)
term ina de compilar urn programa,
uma chamada de sistema (System
Windows
termina
para
(TANENBAUM,
de um processo
termina.
parametres
0
usuiuio
2001).
e urn erro causado
pelo
bug no programa. Exemplos inciuem executar
uma instruyao ilegal, referenciar memoria que nao existe, ou realizar uma divisao por
zero.
Em alguns
sistemas
sistema operacional
interrompido
(UNIX,
por exemplo),
um
processo
pode
que ele deseja tratar alguns erras. Nesse caso,
ao inves de terminado
quando
um desses
erros ocorrer
informar
0
ao
processo e
(TANENBAUM,
2001).
A quarta razao para
executar
uma chamada
para que ele termine
0
termino de um processo
de sistema
alguns
outros
(System
e
Cam solicitando
processos.
que
0
pracesso
ao sistema
No UNIX, essa chamada
pode
operacional
e0
kill, a
24
funr;ao Win32 correspondente
casas,
0 processo
as permiss6es
sistemas,
todos
que
necessarias
quando
os
para
TerminateProcess.
que
Entretanto,
executar
foram
esse
criados
UNIX
0
Em ambos
0 termino de Qutros processos
e
par
Windows
0
deve
tipo de opera98o.
0 proceSSD term ina, voluntariamente
processos
imediatamente.
e
no Windows
esla solicitando
Em alguns
ou de alguma
ele
sao
nao
outra
tambem
funcionam
as
passuir
forma,
terminados
dessa
forma
(TANENBAUM,2001).
No casa de procesSDs
ocorrer
pais e processDS
por razoes como (SILBERSCHATZ,
•
0 filho excedeu
0 pai esta saindo,
continue
pai e
0
sistemas,
filho continuam
criar novos processos,
ao filho nao
e
0
sistema
e mais
que fcram
necessaria,
operacional
podera
2000):
alocados;
ou exigida;
nao permite
que urn filho
se seu pai terminar.
3.6 HIERARQUIA
Em alguns
e GAGNE;
seu usa de alguns dos recursos
A tarefa atribuida
•
filhos, 0 termino do processo
GALVIN
DE PROCESSOS
quando
urn processo
a ser associados
formando
de certas
uma hierarquia
cria outro processo,
formas.
0 processo
de processos.
0
processo
filho pode
Cad a processo
apenas um pai, mas pode ter zero, um, do is ou mais filhos (TANENBAUM,
2001).
tern
25
Segundo
Tanenbaum
e Woodhull:
Os sistemas
operacionais
que suportam
0 conceito
de processo
devem
romecer
alguma
maneira
de criar lodos as processos
necessarios.
Em
sistemas muito simples, au em sistemas projetados
para executar
um unico
aplicativo (por exemplo, controlar urn dispositivo
em tempo real),
passivel
ter lodos as processos que serae necessarios
alguma vez logo que 0
sistema
inicia. Na maiaria dos sistemas.
entrelanto.
preciso dispor de
alguma maneira de criar e de destruir processos conforme
necessaria
durante a operar;:8o. No MINIX. as processos
sao criados pela chamada
de
sistema fork, que cria uma c6pia id€mtica do processo que fez a chamada.
0
processo filho tambem pode executar fork, entao, tambeffi e passive! abler
uma arvore inteira de processos.
Em outros sistemas operacionais
existem
chamadas
de sistema para criar um processo, para carregar sua memoria e
para come{,:ar a rodar. Qualquer
que seja a natureza exata da chamada de
sistema,
os processos
precisam
dispor de uma maneira
de criar oulros
processos.
(2000, p. 48).
e
e
No UNIX, urn processo,
urn grupo de processos.
entregue
teclado
para todos
todos
Quando
um usuario
os membros
(geralmente
todos
os seus filhos e seus descendentes
envia um signal do leclado,
do grupo de processos
os processos
a\ivos
atualmente
que foram
criados
formam
0
e
signal
associado
na janela
ao
atual)
(TANENBAUM,2001).
Como
utilizadas,
serao
inicializac;:ao
imagem
um
do
outro
exemplo
apresentadas
UNIX.
Urn
de inieializa9aO.
inforrnando
terminal.
quantos
Esses
processos
a processo
comandos
podem,
inteiro
Quando
ele
existem.
aguardam
de login
por exemplo,
pertencem
modo
algumas
processo
terrninais
sucedido,
no sistema
do
executa
como
as
informac;:oes
especial,
inieia
eharnado
sua
de
sobre
0
init,
esta
execuc;:ao,
ele
processo
sao
processo
de
presente
Ie um
alguem
efetuar
urn shell
login.
para
(mica
illvare.
Se um login
receber
Assim,
com
0
comandos.
na
arquivo,
Oepois disso, ele eria urn novo processo
iniciar mais processos.
a uma
arvores
par
e bem
Esses
todos os processos
processo
init na raiz
(TANENBAUM,2001).
o
processos.
Windows,
Todos
em contraste,
os processos
nao possui
sao iguais.
nenhum
0 unico
conceito
de hierarquia
lugar onde exisle
de
alga como
26
uma hierarquia
e
de proceSSDs
e criado.
quando urn processo
Nesse casa, 0 pai
reeebe urn token especial chama do de handle, que ele usa para contralar
filho. Entretanto,
ele
e
0
processo
livre para passar esse token para Qutros processos,
dessa
nao podem deserdar seus filhos
forma, invalidando a hierarquia. Processos no UNIX
(TANENBAUM,2001).
3.7 TIPOS DE PROCESSOS
Segundo Silberschatz, Galvin e Gagne (2003), um processo pode tambem
ser classificado de acordo com
0
a maior parte do tempo utilizando
tempo realizando opera90es
seu comportamento.
0
Existem processos que ficam
processador e Qutros que ficam a maior parte do
de entrada e saida.
Os processos podem ser caracterizados
em dais principais tipos:
•
CPU Bound: Sao processos que fazem usa intensive do processador.
•
110 Bound:
Sao
processos
que
ficam
a maior
parte
do tempo
realizando opera~6es de entrada e saida.
A maiaria
normalmente,
dos processos
processos
executando
em
um sistema
operacional
sao,
110 Bound.
De acordo com Silberschatz, Galvin e Gagne (2003), essa distin~ao entre
processos de acordo com
alguns
algaritmos
de
0
seu comportamento
escalonamento.
Eles
e uma variavel
utilizam
essas
importante
informa90es
para
para
balancear a utiliza9ao do processador entre esses diferentes tipos de processos.
Alem das infarma90es
de c6digo que serao executadas,
tambem uma area especifica onde sao armazenadas
par exemplo,
conteuda de registradares,
um processa possui
infarma90es
de controle, como
ponteiros, a estada do processo,
lista de
arquivos abertos. Esta area e conhecida como BCP (Bloco de controle de
27
processos)
GAGNE,
ou
como
PCB
(Process
Control
Block)
(SILBERSCHATZ,
GALVIN,
2003).
3.8 ESTADOS
Os estados
DE UM PROCESSO
de urn processo,
segundo
Tanenbaum
e Woodhull:
Embora cada processo
seja uma entidade
independenle.
com seu proprio
conladar de programa e estado interno, as processos freqOentemente
precisam interagir entre si. Urn processo pade gerar alguma saida que outro
processo uliliza como entrada. No camanda de shell ~cal chapler1
chapter2
chapter3
\ grep tree~ a primeiro processo,
executando
cat, da saida a Ires
arquivos
concalenados.
0 segundo
processo,
executando
grep, seleciona
todas as linhas que Gontem a palavra "tree~. Dependendo
das velocidades
relaUvas dos dais processos
(que dependem
da complexidade
relativa dos
programas
e de quanta de tempo de CPU cada urn leve), pade acontecer
que grep esteja pronto para executar,
mas nao haja nenhuma
entrada
esperando
par ele. Ele deve, entao, bloquear
ate que alguma
entrada
esteja disponive1. (2000, pA8, 49).
Quando
pode continuar,
disponivel.
urn processo
em geral,
Tambem
capaz de executar,
e possivel
processar
No prirneiro
caso, e um aspecto
processo
que um processo,
porque
temporariarnente.
caso,
a linha de comando
tecnico
ele faz isso
esta esperando
seja interrompido
CPU a outro processo
diferentes.
bloqueia,
porque
0
ele nao
que ainda
nao esta
sistema
operacional
decidiu
pronto e
dedicar
a
Essas duas condic;:oes sao completamente
do usuario
do sistema
logicamente
que esta conceitualmente
a sus pen sao e inerente
seu proprio processador)
porque
uma entrada
ao problema
(Nao
ate que ela seja digitada).
(falta de CPUs suficientes
(TANENBAUM,
2001).
se pode
No segundo
para dar a cada
28
Cada processo
GALVIN,
GAGNE,
pode estar em urn dos seguintes
estados
(SILBERSCHATZ,
2003):
1. Novo: 0 processo esta sendo criado.
2.
Executando:
a
3. Espera:
aguardando
4.
Pronto:
Instru90es estao sendo executadas.
processo
est';
a finaliza~ao
0 processo
esperando
por
de urna opera~ao
esta pronto para
algurn
evento
(est,;
de /10, por exernplo).
ser escalonado
pelo sistema
operacional.
5. Terminado:
0 processo terminou sua execu9c3o.
A figura 3 apresenta as transi90es
entre os estados:
Saida
InterrupC80
FIGURA
GAGNE,
3: Diagrarna
de estados
de processos
(SILBERSCHATZ,
GALVIN,
2003).
Os estados possiveis de urn processo e
podem variar de acordo com
0
sistema operacional.
0$
names
dados a estes estados
29
3.9 BLOGO DE GONTROLE
a
tabela)
bloco de controle
que armazena
que executa
executar
processos
de processos
informaryoes
sabre
precisa de urn BCP.
urn programa,
e lima
ou BCP
1995-2000).
modernos
e sofisticados
obviamente
principais
dependentes
(CALLARI,
o
e eficiente.
do sistema,
e podem
Dadas de identific8ry8o
•
Dadas de estado do processador;
•
Dadas de controle
BCP
tern um papel
operacional,
durante
a execugao,
(SILBERSCHATZ,
0
armazena
varios
gerenciamento
dessas estruturas
ser classificados
em
de
sao
tres categorias
do processo.
do processo:
urn processo
de processos
que sao utilizadas
quando
ocorre
uma
do
e alteradas
troca
de contexto
2003).
e representado
informac;oes
no gerenciamento
informac;oes
utilizadas
GAGNE,
no sistema
sobre
variar de um sistema
Estado
para que
Os detalhes
muito importante
e que sao
GALVIN,
as seguintes
•
BCP
0
de
do processo;
pois ele armazena
Cad a processo
pelo BCP podem
para
1996):
•
sistema
armazena
correta
(uma
ou programa
constr6i urn bIDeD de controle
itens de dados diferentes, os quais sao necessarios
processos ocorra de forma
de dados
usuario faz uma requisiry80
um
operacional
(BROWN,
multitarefa
estrutura
Cad a processo
os processos.
Quando
a sistema
para aquele programa
Em sistemas
DE PROGESSOS
0
operacional
processo
operacional
por um BCP.
(as informac;oes
para outro):
indica a situac;ao atual do processo.
pode ser, por exemplo,
0 BCP
armazenadas
pronto ou executando.
0 estado de
30
•
Contador de instruc;6es (Program
indica 0 enderec;o
da proxima
counter):
instruc;8.o
0
contador
de
instruc;oes
a ser executada
para
0
processo.
•
Registradores
de CPU: os registradores
podem variar em numera
e
tipo, de acordo com a arquitetura do computador.
•
Informac;6es de escalonamento:
proceSSD,
ponteiros
inclui informac;oes de prioridade
para filas de escalonamento
do
e Qutros parametres
de escalonamento.
Informac;:oes de gerenciamento
para a gerenciamento
de mem6ria:
de memoria,
informac;oes utilizadas
como, par exemple,
informac;oes
de tabelas de paginas e tabelas de segmentos, de acordo com a
arquitetura
do gerenciamento
de
memoria
utilizado
pelo
sistema
operacional em questao.
•
Informac;oes
sabre
a execuc;8.o
do processo,
como
par exemplo,
a
quantidade de tempo de CPU utilizado.
• Informal'oes de entrada e saida: lista de dispositivos de entrada e
saida
alocados
(SILBERSCHATZ,
3.10 COOPERA<;;Ao
para
processos
cooperativ~
independentes
processo,
GAGNE,
lista
de
arquivos
abertos
2003).
ENTRE PROCESSOS
Os processos concorrentes
ser
0
GALVIN,
executando
ou
em um sistema operacional
processos
se ele afeta ou pode ser afetado
cooperativ~s.
Um
por outros processos
podem
processo
e
executando
no
31
sistema.
Qualquer
processo
processo
cooperalivo
que compartilha
(SILBERSCHATZ,
Existem algumas raz6es
de processos
cooperalivos
compartilhado),
e
GALVIN,
GALVIN,
de informa90es:
em um mesmo
passive
GAGNE,
peda~o
GAGNE,
uma vez que
de informa~ao
e
urn
2003).
que fazem com que seja interessante
(SILBERSCHATZ,
Compartilhamento
estar interessados
Qutros processos
dados com
a utilizalYEIo
2003):
varios usuarios pod em
(por exemplo,
um arquivo
I oferecer urn ambiente para permitir acesso concorrente
para esse tipo de recurso.
Velocidade
execute
computacional:
mais rapidamente,
e
S8
e
necessaria que uma tarefa especifica
passivel quebrar
essa tarefa
em sub-tarefas,
cnde
cad a uma delas estara executando em paralelo com as Qutras.
Modularidade:
pode ser
necessaria construir
0
sistema de forma modular,
dividindo as funyoes de sistema em processos separados ou threads.
Conveniencia:
mesmo um usuario pode ter muitas tarefas nas quais ele
esta trabalhando ao mesmo tempo. Por exemplo, um usuario pode estar editando,
imprimindo e compilando urn programa em paralelo.
Para que seja possivel executar processos cooperativos concorrentemente,
e necessario sincronizar 0
aces so as areas compartilhadas, utilizando mecanismos
de sincronizag8o, que podem ser mecanismos base ados em
mecanismos
baseados
em software
(SILBERSCHATZ,
GALVIN,
hardware
GAGNE,
ou
2003).
Existem algumas situagoes em que multiplos processos precisam atualizar
dados compartHhados, como par exempla, uma variavel comum, a atualiza980 de
uma tabela ou a gravag80 de um arquivo. Esta parte do c6digo ou recurso que deve
ser acessada de forma exclusiva
importante
do sistema
e que,
e
quando
chamada de seryao critica. Uma caracteristica
um processo
esta executando
em sua se~ao
32
critica,
nenhum
Assim,
a
Dutro processo
pode ter
execUI;ao de s8y6es
(SILBERSCHATZ,
GALVIN,
criticas
GAGNE,
permissao para entrar nesta s8c;ao critica.
pelos
baseados
em software
podem
desempenho
problema
Porem,
da
solUl;(ao nao
esta
passar
interrupvoes
critica
com a desabilitavao
uma
e
passivel
devem ser desabilitadas.
como a utiliza,3o
das instru,oes
exclusiva
rnais
exemplo
de sincronizayao
Caracteristicas
simples
de
e melhorar
as instru,oes
0
TestAndSet
2003).
pode ser resolvido
de interrupc;oes
mensagem
mecanismos
em hardware.
programayao
citar como
GAGNE,
S€C;c30
existem
base ados
de
Pode-se
GALVIN,
uniprocessados
necessaria
a tarefa
do sistema.
(SILBERSCHATZ,
o
e mecanismos
tarnar
mutua mente
2003).
Como foi men cion ado anteriormente,
hardware
e
processos
em urn ambients
para
cada
facilmente
no momento
multiprocessado,
processador
ja
informanda
Para estes casas, existem
TestAndSet
em ambientes
de sua utilizac;ao.
(SILBERSCHATZ,
outras
que seria
que
as
alternativas,
GALVIN,
GAGNE,
2003).
Dentre as me canis mas de sincronizavao
e
0
semafaro.
operavoes
Urn semaforo
atomicas3
e uma variavel
de software,
inteira
wait e signal. A operavao
incrementa
(SILBERSCHATZ,
3 Uma operar;ao
um
semaforo
GALVIN,
at6mica
GAGNE,
(ou indivisivel),
4 Oependendo
da implemeniar;ao,
ciclos de cpu desneeessariamente,
utilizayao.
quando
um dos mais comuns
e acessada
wait, decrementa
mesmo for maior que zero, ou coloca a processo
signal
que
0
em estada
processo
atraves
um semafaro
de espera4•
terminar
das
S8
A operav8o
de
utiliza-Io
2003).
deve ser executada
ate 0 fim e nao pode ser interrompida.
0 processo pode tambem fiear em loop, simples mente utilizando
aguardando
ate que 0 semaforo seja liberado para a sua
a
33
3.11 CONSIDERAC;;OES
A
garante
sincroniz8y2l0
que
Observa-se
acesso
0
entre
e
processos
as areas
que a sincronizagao
SOBRE SINCRONIZAC;;Ao
extremamente
compartilhadas
pode garantir
0
recursos e, dessa forma, garantir a integridade
acessadas
Conclui-se
tambem
recursos
uniprocessados
pela desabilitag80
Observa-se
processos
de ciclos
isso
seja feitD de forma
consistente.
acesso
exclusivo
de
mutuamente
a
informac;5es que 56 podem ser
que as mecanismos
sistema
utilizados
sao
operacional
multiprocessados,
que utiliza multiplos
para
sincroniz8gao
diferentes
para
dada a complexidade
processadores
maior
e os problemas
de
sistemas
de urn
causados
interrupc;oes nestes sistemas.
de
que uma forma
e a utillzayao
com extrema
um semaforo
do
e sistemas
sistema computacional
utilizados
pais
par urn processD de cada vez.
determinados
entre
importante
cautela
gere um problema
de cpu de forma
interessante
de semaforos.
e deve-se
de se controlar
Porem,
evitar ao maximo
conhecida
desnecessaria,
devem
ser
que a implementay30
de
como espera ocupada,
apenas
a sincronizayao
os semaforos
aguardando
que e a utilizayao
a Ilbera<;3o de um
semMaro.
Outra considera<;30
que as opera<;6es
uma situay30
mecanismos
importante
na implementa<;30
wait e signal ocorram
de sey30 critica).
utilizados
Neste
em sistemas
atomicamente
caso,
especial
uniprocessados
de um semaforo
(0 que tambem
aten<;ao deve
e multiprocessados.
e garantir
caracteriza
ser dada aos
34
4 THREADS
Segundo
processo
Tanenbaum
(1995),
na maioria dos sistemas
operacionais,
tern um espayo de endereryo e um unico thread de controle.
quase a definig80
nas quais
de urn processo.
e desejavel
urn espago
que
de endereryos
fossem processos
mas
separados
recursos
do
sistema
o
conceito
necessario
para
a
compartilhamento
entre threads
traca
de
(SILBERSCHATZ.
sistemas
operacionais
utilizado
para as operaQoes
maior utilizayao
dos conceitos
de
a tempo
e
mais rapida
arquivos
ao
e outros
processo
abertos,
para
melhorar
0
de contexte
a me sma area de
e outros
recursos
do
que os projetistas
de
2003).
ao maximo
operacional
0
tempo de CPU que e
e, conseqOentemente,
dos processos
ter uma
ou threads de usuarios.
de processos
a troca de contexto.
thread
de processamento
a troca
uma das coisas
e otimizar
ao inves
bastante
S8
Todos os threads
relacionados
processos
muito
GAGNE,
do sistema
de threads
como
de mem6ria
ja que eles compartilham
de
anteriormente,
vem buscando
de fato, otimiza
com a utilizayao
processo,
GALVIN,
estao
entre
e
da CPU para a execuyao
A utiliza930
execu93o,
contexto
lista
paralelo,
compartilhado).
de um processo.
para reduzir
De fato,
memoria,
Como foi mencionado
que
situ8goes
compartilhando
2003).
foi criado
de
de um mesmo
endereQamento
processo
GAGNE,
de recursos.
em
de endereyos
espac;:o de enderegamento
0
de thread
freqOentemente
de controle
parcial mente
pelo espayo
operacional
GALVIN,
threads
basica de execuyao
compartilham
(SILBERSCHATZ,
disso, ocorrem
executando
(exceto
o thread e a unidade
de urn processo
Apesar
ten ham multiplos
S8
cad a
De fata, isso e
como
unidade
basica
Alem disso, observa-se
a cooperayao
e compartilhamento
de
que
de
35
informa<;oes
entre
mecanismos
processos
threads
de urn mesma
de protey80
nao
sao
que sao
processo
implementados
implementados
entre
ja que os
tambem foi facilitada,
pelo sistema
threads
que
operacional
pertencem
entre
a urn mesma
processo.
4.1. 0 MODELO
Uma
processos
das
e fazer
ambiente
DE THREADS
vanta gens que os threads
com que multiplas
de urn processo,
executando
em paralelo
em um mesma
mas independentes
e anal090
computador.
compartilham
vezes
possuirem
cham ados
Threads
como
diferentes
espacyo de enderecyos,
variaveis
memoria
mesmo
globais.
Uma
fisica,
algumas
que
Todos
cada
dentro do espa90 de endere90s
limpar completamente
que pod em ser de usuarios
os threads
dentro
Ter
muitos
executando
de
do mesma
threads
em paralelo
compartilham
0
mesma
e Qutros recurSDS. No ultimo casc,
discos,
impressoras
propriedades
e outros
dos processos,
0 termo
os
recursos.
eles sao
e
multithreading
threads
nao sao completamente
as threads
sao permitidos
que eles compartilham
thread
pode
do processo,
e que podem
independentes
tem exatamente
acessar
tambem
cada
0
mesmo
as mesmas
endere90
de
um thread pode ler, gravar ou
a pilha de um outro thread.
dilerentes
gerenciamento
2001).
que significa
vez
urn do outro.
processes.
em um processo
processos.
0
ao
ocorrer
a situacyao em que multiplos
(TANENBAUM,
sao em diferentes
casa,
de lightweight
tam hem usado para descrever
em um mesmo processo
agregam
possam
multiplos processos
arquivos abertos
a mem6ria
Pelo lato de os threads
algumas
a ter
No primeiro
espa90 de endereCfamento,
processos
execu90es
Dilerente
ser hostis
dos processos,
uns aos outros,
um
36
processo
tern sempre
urn
unfeD propriettuio,
presumidamente, criou multiples
nao
brigar.
Alem
compartilham
de
compartilhar
tambem
mesma
0
um
au
seja,
urn
unieD usuario,
que
para que eles possam cooperar entre si, e
threads
espa,o
conjunto
de
endere90s,
de arquivos
todos
abertos
as
threads
e processos
filhos
(TANENBAUM,2001).
4.2 MULTITHREADING
Urn sistema
operacional
que
suporta
multithreading
diferentes partes de urn programa simultaneamente.
multi-processados
GALVIN,
sao
GAGNE,
Os
•
da
beneficios
dos
GALVIN,
GAGNE,
forma
possivel
(SILBERSCHATZ,
sistemas
operacionais
multithreading
sao
2003):
Melhor tempo de resposta;
Compartilhamento
•
de recursos;
Utilizar.;:aode arquiteturas multi-processadas.
4.3 STARVATION
Alguns
starvation.
melhor
executar
2003).
principais
(SILBERSCHATZ,
utilizados
consegue
Assim as recursos de sistemas
algoritmos
Urn processo
(ESPERA
INDEFINIDA)
de escalonamento
em starvation
sofrem
de um problema
pode quase
conhecido
nunca ser selecionado
par
pelo
escalonador
para execuc;:8o. Existem alguns metodos que podem ser utilizados para
resolver
problema
a
de
starvation,
que
tambem
depend em
do
algoritmo
de
37
escalonamento
utilizado
e da forma com que
sistema
0
operacional
trata essa
situac;ao.
o
sistema
primariamente
operacional
Windows
fun~6es de gerenciamento
2000
de
passui
urn thread
que
executa
memoria, mas tambem e respons;3vel
por verificar, a cada segundo, se existem threads que estao no estado de pronto a
mais de 300 ticks de clock (se considerarmos um arquitetura x86 uniprocessada
ande
0
tick de clock ocorre a cada 10 milisegundos
aproximadamente
issa representa
urn perfodo de
3 segundos). Se ele encontrar threads nessa situ8yElO, 0 Balance
Set Manager
aumenta a prioridade do thread para 15 e da a ele 0 dobro de tempo de
urn quantum
normal. 0 thread
ira executar com prioridade 15 ate terminar
0
seu
quantum (que nesse casa, corresponde ao dobro de urn quantum normal), e, em
seguida,
sua prioridade
ira voltar nova mente para a sua prioridade base original
(SOLOMON, RUSSINOVICH, 2000).
Para evitar urn consumo excessive de recursos do sistema
Set Manager
verifica
encontrar threads
apenas 16 threads
no estado de starvation,
0
thread
Balance
cada vez que ele executa, e, se ele
ele faz a elevac;ao de prioridade para ate
no maximo 10 threads de cada vez (SOLOMON, RUSSINOVICH, 2000).
38
4.4 CONSIDERA<;:OES
Atraves
importancia
dos conceitos
(principalmente
SOBRE THREADS
de multithreading
quando
S8
conclui-se
que
trata de urn sistema
e
de fundamental
operacional
de time
a utilizal'80 de multiplos threads em urn processo.
sharing),
Urn dos principais beneficios observados com
0
e
multithreading
a
possibilidade de outra parte do c6digo de urn programa continuar sua execu,;;o
enquanto ocorre uma Operal'80 de flO. Observa-se tambem que devido ao
compartilhamento
threads
do conjunto
do processo,
de recursos
a troca de contexte
bern mais rapida que entre threads
naD
e necessaria
carregar
que estao
entre threads
de diferentes
novamente
em projetos
de sistemas
tem como objetivo
diminuir
suas
para
operayoes,
executando
processos
do sistema operacional
0
que,
tempo
utilizado
de aplicayoes
forma,
usuarias
seja melhorado.
todos
as
processD
pois no primeiro
e
casa,
do processo.
cad a vez maior dos desenvolvedores
operacionais
dessa
para
de um mesma
processos,
todo 0 contexte
Fica claro que existe uma preocupa<;ao
envolvidos
disponiveis
de criar
pelo sistema
0
metod os e tecnicas
operacional
processador
para realizar
passe
e, consequentemente,
que
mais
0
tempo
desempenho
39
5 ESCALONAMENTO
Escalonamento
e0
de pronto para a execug8o.
de escalonamento que
e
processo de escolha de urn thread que esta no estado
0 criterio
de escolha esta relacionado
com
0
algoritmo
utilizado pelo sistema operacional (SILBERSCHATZ,
GALVIN, GAGNE, 2003).
o
e
objetivo do escalonamento
dividir
0
tempo de CPU
processos, fazendo com que dessa forma a utilizac;:ao dos recurSO$
entre varios
do computador
seja muito mais produtiva (SILBERSCHATZ, GALVIN, GAGNE, 2003).
o
sistema
operacional
toma
decis6es
de escalonamento
nas seguintes
situa,6es (SILBERSCHATZ, GALVIN, GAGNE, 2003):
•
Quando
um
thread muda do estado executando
pode ocorrer em uma situ8yao
• Quando um thread
quando
para espera
- issa
de requisiy80 de entrada e saida;
muda do estado de executando para pronto -
uma interrUpC;8o
ocorre
ou quando
urn thread
com maior
prioridade entra em uma das filas de pronto.
•
Quando urn
thread muda do estado de espera para pronto - uma das
situ8c;6es em que issa ocorre
e
quando uma operal):3o de entrada e
saida foi completada;
Quando um thread
termina a sua execu,ao
(SILBERSCHATZ,
GALVIN, GAGNE, 2003).
Urn conceito muito importante em escalonamento
de multiprogramal):3o.
0 objetivo da multiprogramal):30
de processos
e
maximizar
e0
conceito
a utilizal):3o do
processador, fazendo com que algum processo esteja executando todo
0
tempo,
40
aproveitando
aD maximo
ocioso (SILBERSCHATZ,
GALVIN,
Em urn sistema
executando
ao mesmo
processo
e
tempo,
selecionado
entaD
de contexto
as informa(foes
sua
(SILBERSCHATZ,
execUf;ao,
GALVIN,
Existem
sistema
A escolha
operacional
0
vez para
processo
salvas
ate
urn processo
que
que
estava
Quando
em
outro
executando
tern
para urna das filas de
sao carregadas
selecionado
Dutro
sao mantidos
executar.
e ele volta
estara
processo
seja
e ele
escalonado
2003).
DE ESCALONAMENTO
varios algoritmos
e desvantagens.
a sua
do processo
GAGNE,
5.1 ALGORITMOS
apenas
Dessa forma, varios processos
execu9ao,
naD fique
2003).
urn processador,
aguardando
para
as suas informa90es
pronto. Em seguida,
inicia
GAGNE,
com apenas
em urn dado momento.
memoria
todas
0 tempo do process ad or de forma que 0 mesma
de escalonamento,
do algoritmo
depende
das
cada urn com suas vantagens
de escalonamento
caracterfsticas
e da
apropriado
arquitetura
para cada
do
sistema
operacional.
o
escalonamento
Preemptiva:
dos
criterios
operacional.
baseado
mudanya
que
pode ocorrer
a execu~ao
sao
para
0
estado
pelo
operacional
uma situagao
de pronto
thread que esta em execuyao.
um algoritmo
de um thread
utilizados
Em urn sistema
em prioridades,
de escalonamento
de forma preemptiva
ou nao-preemptiva.
pode ser interrornpida,
algoritmo
de
que utiliza um algoritmo
que causa
de um thread
Essa situa~ao,
preemptivo
dependendo
escalonamento
a preempgao
do
de escalonamento
de um thread
que tern mais prioridade
em urn sistema
baseado
sistema
operacional
em prioridades
e a
que um
que utiliza
faz com que 0
41
thread em execuc;:ao
troca de contexto.
sofra preempC;:80
A preempc;ao
par prioridade,
tambem
pode
e ocorra imediatamente
ocorrer
por tempo
uma
(0 quantum
do
thread em execu<;:ao terminou).
a execUly80 de urn thread nao pade ser interrompida.
Nao~preemptiva:
thread em execuc;ao
quando
GAGNE,
entrar
somente
no estado
ira liberar
de wailing
a CPU quando
voluntariamente
terminar
0
sua exeCUC;ao ou
(SILBERSCHATZ,
GALVIN,
2003).
Os principais
algoritmos
de escalonamento
sao (MACHADO,
MAlA, 2002):
Nao-preemptivos:
acordo
terminar,
FIFO
(First-in,
First-out):
com
a ordem
de
no metodo
chegada.
FIFO,
No algoritmo
ou ate que ele libere a CPU (MACHADO,
os threads
sao executados
FIFO,
thread
urn
executa
de
ate
MAlA, 2002).
Vantagens:
•
Fecil de implementar;
•
Nao ocorre starvation.
Oesvantagens:
•
Nao
existe
executam
ate
compartilhamento
0
tim.
de
CPU,
pois
todos
os
threads
42
Shortest
de acordo com
executam
Job First: no metoda SJF as threads
tempo de execu98o.
0
primeiro
(MACHADO,
(au processos)
Os threads que utilizam
sao ordenados
menos
tempo de CPU
MAlA, 2002).
Vantagens:
•
Facil de implementar;
•
0 tempo media de
turnarounc!
e muito born.
Desvantagens:
Threads
podem
•
que
primeiro.
preemptivo.
a
algoritmo
de
prioridade nao-preemptivo,
pronto ele vai para
poder executar
Alguns
prioridades
0
ira executar.
CPU
para
quando
urn
sistemas
outros
prioridades
prioridade
Os threads
par prioridade
pode
executar
e escolhido
utiliza
preemptivQ
do que
ou
0
n80-
thread
uma troca de contexto
e
execuc;:8o. No casa do algoritmo de
para
quando um thread com maior priori dade entra na fila de
0
termino do thread em execw;:ao para
MAlA, 2002).
operacionais
utilizam
sistemas
operacionais
altas (SILBERSCHATZ,
numeros
baixos
utilizam
GALVIN,
para
numeros
GAGNE,
determinar
altos
2003).
Tempo decorrido entre 0 instante de chegada do processo na fila de pronlos ale que ele seja
completado.
5
uma
com maior prioridade,
S8r
thread com maior prioridade
inicio da fila, e aguarda
(MACHADO,
altas;
de
par
entra na fila de pronto, ocorre imediatamente
o thread com maior prioridade
determinar
escalonamento
0 escalonamento
No preemptivQ,
em execu980
tempo
de estimar I saber a tempo de CPU que um job utilizani.
prioridade para detinir que thread
executam
de bastante
sofrer starvation;
Necessidade
Prioridade:
precisam
para
43
Vantagens:
·°
algoritmo baseado em prioridade
e
execu,ao
e
melhor que
0
FIFO, pois a
definida de acordo com a importancia do thread
ou
processo.
Desvantagens:
•
Processos
de baixa priori dade podem
sofrer starvation.
algoritmo
e
Preemptivos:
Round-robin:
sistemas
0
operacionais
de
de tempo-compartilhado.
FIFO, com a diferen,a de que ele
uma fila circular,
seu
e quando
quantum6 termine.
do quantum que
round-robin
e
utilizado
especial mente
e bastante
0 round-robin
similar
em
aD
preemptivo. Os threads sao organizados em
sao selecionados
A performance
desse
para execuc;ao
algoritmo
iraQ executar
depende
ate que 0
muito do tamanho
e utilizado (MACHADO, MAlA, 2002).
Vantagens
•
Facil de implementar;
•
80m
compartilhamento
de recursos.
Desvantagens
•
Tern caremcia
Ex.: processos
6
Tambem chamado de
time-slice
de prioridades,
do sistema
0 que
e necessaria
operational.
(fatia de tempo).
em varias
situ8c;:oes.
44
Multiplas
au processos
filas: no algoritmo
sao classificados
utilizam
diferentes
threads
que executam
de escalonamento
em diferentes
filas de pronto
diferentes
filas por tipo de processos,
processos
batch,
para processos
grupos.
para threads
em segundo
de multiplas
Alguns
filas, os threads
sistemas
operacionais
que executam
em primeiro
plano. Qutros sistemas
operacionais
como,
por exemplo,
uma fila de pronto para processos
plano
uma fila de pronto
de sistema,
e
utilizam
para
outra fila de pronto
que rodam em modo usuario e assim por diante (MACHADO,
MAlA,
2002).
Vantagens:
Oiferentes
algoritrnos
de escalonamento
cada fila de pronto, de acordo com
forma, pode-s8
determinar
0
podem
ser utilizados
para
tipo de processo
da fila. Oessa
mais eficientes
para cada tipo
algoritmos
de processo.
Desvantagens:
Casa
0
processo
fila durante
Multiplas
mude de comportamento,
a execu98o.
Isso torna
filas com realimentat;ao:
com a diferenc;a
de que os processos
podem
Com
processos
utiliza~ao
de tempo de
algoritmo,
para
possa
(MACHADO,
utilizac;ao
semelhante
de fila de acordo
que inicialmente
110 sao colocados
de
a
mudar
e
de
MAlA, 2002).
CPU
ser
de
urn pouco ineficaz.
ao anterior,
com
tern uma
CPU sao colocados em filas de men or prioridade
com maior utilizac;ao de operac;6es
que
ele nac pode mudar
algoritmo
esse algoritmo
comportamento.
esse
0
0
seu
maior
e processos
ern filas de maior prioridade
balance ada entre
esses
processos
45
Casa
colocado
em
(MACHADO,
0 processo
uma
mude
seu comportamento
fila de maior
ou menor
durante
prioridade.
a execUI;:ao,
de acordo
com
sle
e
0
caso
processos
que
MAlA, 2002).
Vantagens:
Distribui,ao
mais
fazem
intensive
usa
justa
do tempo
de CPU
entre
CPU e processos
de
que
fazem
muitas
opera<;:oesde entrada e saida.
Desvantagens:
e mais
Implementayao
complexa
5.1.1 Como avaliar um algoritmo
que aS Qutros algoritmos.
de escalonamento
Uma serie de criterios podem ser utilizados para
escalonamento.
•
Alguns deles estao apresentados
S8
avaliar urn algoritmo de
abaixo:
Throughput: numera de processos completados em uma unidade de
tempo;
•
Turnaround:
•
Tempo
processo
•
tempo
decorrido
entre
0
instante
de
chegada
do
na fila de prontos ate que ele seja completado;
de espera
Eficiimcia
(Waiting
time): tempo total na fila de prontos;
do escalonador:
executando
todo
escalonador
esta
considerado
overhead. Portanto,
escalonador
seja
otimizado,
0
periodo de tempo em que
tarefas
e
do
sistema
necessario
de forma que
0
operacional
e
c6digo
do
que
as tarefas
0
do sistema
46
operacional
consumam
(SILBERSCHATZ,
0
GALVIN,
menor
tempo
GAGNE,
todos
os
algoritmos
de
processador
2003).
5.1.2 Considera<;:oes sobre os algoritmos
Considerando~se
passivel
de
de escalonamento
escalonamento
apresentados
acima, conclui-se que, obviamente, cada algoritmo apresenta determinadas
vantagens
e desvantagens.
A eficacia
algoritmo
de urn algoritmo
par si 56, mas tambem,
de escalonamento
do tipo de aplic8y30
naD depende
que
e executada
apenas
utilizando
do
urn
dado algoritmo de escalonamento. Como a grande maioria dos sistemas
operacionais
algoritmo
e desenvolvido
de escalonamento
no sistema
Observa-s8
algoritmo
usa generico,
nao e passive I determinar
que forem
qual
0
executadas
operacional.
escalonamento
sistema
para
ideal para todas as aplic8c;oes
e
operacional
que
urn criteria
a caracteristica
baseado
de escalonamento
fatias de tempo equivalentes
interessante
do sistema
para a escolha
operacional.
em tempo compartilhado,
que
possa
dar uma
para a execuyao
0
do algoritmo
Por exemplo,
ideal
e
a utiliza,ao
ilusao de paralelismo,
de cada processo.
para
de
um
de um
utilizando
47
6 WINDOWS
2000
Para urn melhor entendimento
2000, que
e 0 foco
do gerenciamento
desse trabalho, seraa apresentados
de processos no Windows
alguns conceitos importantes
sobre a arquitetura do sistema operacional Windows 2000 da Microsoft.
6.1 ARQUITETURA
Na maioria
separadas
executa
dos sistemas
privilegiado,
0 codigo de aplic890es
de modo u5uario),
multi-usuarios as aplic8r;:6es
operacionais
do c6digo do sistema operacional
em modo
hardware;
DO SISTEMA
com acesso
-
0
a
dad os do sistema e acesso
c6digo do sistema
sao
operacional
ao
executa em urn modo nao privilegiado (chamado
com urn conjunto
limitado de interfaces
disponiveis,
Iimitado a dados do sistema e sem acesso direto ao hardware
acesso
(SOLOMON,
RUSSINOVICH, 2000).
6.1.1 Modelo do sistema operacional
o
Windows
2000
e considerado um
maioria do c6digo do sistema operacional
sistema operacional monolitico pois a
e drivers
de dispositivos compartilham
0
mesmo espago de mem6ria protegido no modo kernel (SOLOMON, RUSSINOVICH,
2000).
Embora
alguns autores considerem
microkernef, ele nao
e um
0
Windows
2000
como baseado
em
sistema operacional baseado no modelo de microkernef,
48
na defini~ao
classica
do modele,
operacional
(como
gerenciador
de entrada
onde
gerenciador
0
e saida)
de
os componentes
mem6ria,
executam
proprio espa~o de endere~amento,
principais
gerenciador
como processDs
de
do sistema
processos
separados
em modo usuario (SOLOMON,
e
em seu
RUSSINOVICH,
2000).
Alem
componentes,
modele
disso,
fazendo
observa-s8
Cliente/Servidor.
que ale passui
IS50
divisao em camadas
mensagens
uma analise
fica bastante
da arquitetura
caracteristicas
evidente
S8
dos serviyos que executam
entre processos
clientes
do Windows
e processos
A figura 4 mostra de forma simplificada
fortemente
for analisada,
2000 e seus
inspiradas
em modo kernel
a
e a traca de
servidores.
a arquitetura
do Windows 2000:
rwlIWlT"'"
TT ."
I pam'll
T
no
par exempla,
I
Modo
Modo
Windows
2000
usu6rlo
kernel
E.l!;ccutlvo
I • ,.
Hardw{Jrfl
FIGURA
4:
Abstrnct/o/l
Uma
(HAL)
Layrlf
visao
da
arquitetura
do
Windows
2000
(SOLOMON,
RUSSINOVICH,2000).
a
a camada
Windows
mais
2000 Executivo
baixa).
Alguns
e a camada
dos
principais
superior do Ntoskrnl.exe
componentes
do
(0 kernel
Windows
e
2000
49
Executivo
sao
Configura~6es,
Gerenciador
0
Gerenciador
(SOLOMON,
de
processos
de Entrada
RUSSINOVICH,
e
e Saida e
0
threads,
de
design
conseguem
informa90es
interfaces
partes escritas
que precisam
em C++.
S8
no kernel
algumas
inicializayao
orienta~ao
passar
estruturas
individuais.
parametres
e
0 Assembly
e/au
tambem
Por
de
incorporam
exemplo,
dados
Ao inves
modificar
eles
para
disso,
nao
acessar
eles utilizam
estruturas
de
2000
diretamente
e na HAL
7
de
e escrito
dados
em C, com algumas
usado para as partes do sistema
com
0
hardware
(como a troca de contexto).
mas tambem
na parte que executa
bibliotecas
de
virtual
2000).
comunicar
na biblioteca
2000
a objetos.
Qutras
maioria de c6digo no Windows
de performance
operacional,
em
para
RUSSINOVICH,
A grande
somente
de
diretamente
man tid as par componentes
formais
(SOLOMON,
extrema
basicos
acessar
de Mem6ria
2000).
Os componentes de modo kernel do Windows
principios
Gerenciador
Gerenciador
ou que tern necessidade
a c6digo
em Qutras partes
Assembly
principais
em modo kernel do subsistema
modo
de sistema
usuario,
Ntdll.dll
como
0
(SOLOMON,
operacional
c6digo
existe nao
do sistema
Win32 e mesmo
do
processo
RUSSINOVICH,
de
2000).
HAL - Hardware Abstraction
Layer. €I urn m6dulo carregado em modo kernel que fomece uma
interface de baixo nivel para a plataforma de hardware onde 0 Windows 2000 esta executando. Ele
oculla delalhes dependenles de hardware como interfaces de flO, controladores de interrupc;:aoe
mecanismos de comunicac;:ao muti-processadores. Assim ao inves de acessar diretamente 0
hardware,
as componentes internos do Windows 2000, bem como os drivers de disposilivos mantem
portabilidade chamando as retinas da HAL quando eles precisam de informac;:oesdependentes de
plataforma.
1
50
6.1.2 Cansidera90es
Com os conceitos
de
0
sistema
contribui
de arquitetura
operacional
bastante
sabre a arquitetura
apresentados
nao permitir
com a estabilidade
do Windows 2000
aC8SSD
aeirna, observa-s8
direto
do sistema
das aplicac;:oes
aD hardware
chamadas
de sistema,
assim que um c6digo que executa
ser tratadas
gere uma
operac;:c3o ilegal e afete todos os Qutros processos
podem
aD
0
fata
hardware
ja que tentativas
operacional,
operac;:oes ilegais direcionadas
evitando
que
e bloqueadas
de
par
em modo usuario
que estao executando
no computador.
Alem de
as componentes
0
Windows
do modo kernel
faz com que 0 acesso
maior seguranc;a
os parametros
Observa-se
alguns
claramente
camadas
utilizam
principios
que 0 acesso
monolitic8,
todos
de orientac;:ao a objetos,
0 que
nao seja direto,
a essas estruturas
atraves da utilizaC;8:o de interfaces
tambem
que, talvez
de um sistema
sistemas
caracteristicas
e tambem
em uma estrutura
de dados entre as estruturas
e garantindo
corretos,
dafinir a arquitetura
existem
2000 ser baseado
operacionais,
que
caracteristicas
a utiliza98:0
operacional
sao
uma
seja feito utilizando
forma is.
de modelos
especificos
para
pode nao sar a forma ideal, ja que
como
definidas
permitindo
0
no
Windows
modelo
que sao defrnidas
2000,
MonoHtico,
que
possui
modelo
de
no modelo Cliente/Servidor.
6.1.3 Partabilidade
o
hardware,
Windows
2000 foi projetado
incluindo
arquiteturas
para executar
CISC e RISC. Apesar
em multiplas
plataformas
disso, devido a mudan9as
de
na
51
demanda
de mercado,
a suporte
para
antes do inicio do desenvolvimento
retirou
0
suportado
suporte
para
a arquitetura
apenas em arquitetura
o
Windows 2000
executar
em
assimeHrico, ande
operacional
Alem
(SOLOMON,
A
todos
AXP.
Com
e selecionado
processador
RUSSINOVICH,
0
Compaq tambem
Windows
2000
e
2000).
a
que passui
multiprocessing),
(diferente
um processador
os processadores
isso,
foi retirado
simetrico
quanta as threads de modo usuario
qualquer
e PowerPC
RUSSINOVICH,
(SMP - symmetric
e as Quiros processadores
disso,
Alpha
um sistema operacional
simetrico
o sistema operacional
para
e
MIPS
e, um paveo mais tarde, a
x86 (SOLOMON,
6.1.4 Multi-processamento
multi-processamento
arquiteturas
apenas
compartilham
multi-processamento
0
c6digo
urn unico
c6digo do sistema
do modo
usuario).
espac;:o de mem6ria
2000).
figura 5 mostra 0 multi-processamento
de
podem ser escalon ados
do
para executar
executam
caracteristica
sendo que, tanto
simetrico e assimetrico.
52
Assimelrico
Simetrico
Processador
A
c:J 1
l
Pracessador
~
~
L:::J
\5
®
~
~
L:::J
FIGURA
(SOLOMON,
5: Diferenc;:a
RUSSINOVICH,
6.1.5 Principais
Windows
entre
®
....,
~
possui
Win32. Dos tres subsistemas
Win32, pais
e
0
responsavel
necessario
pelo
serem
permanecer
em
sempre
citados,
mais
0
de ambiente:
importante
2000 nao con segue executar
servidores
no sistema.
iniciados
par
simetrico
e assimetrico
de sistema
tres subsistemas
gerenciamento
mesma
interativamente
para
Windows
multi~processamento
2000).
componentes
2000
®
00
o
\::J
o
B
do teclado,
que
nao
executando
enquanto
(SOLOMON,
mouse,
vIdeo,
0
0
Win32
e ele
usuario
e
logado
sao configurados
sUbsistema
RUSSINOVICH,
e
subsistema
e Qutros;
nenhum
dais sUbsistemas
que
e
POS/X
sem ele. 0 subsistema
possuem
De fato, os outros
demanda,
deles
OS/2,
2000).
Win32
deve
53
As informac;:6es de inicializa9030 de cada subsistema
registro8
chave de
ISession
HKEY _LOCAL_MACHINE
ManagerlSubsystems'
A figura 6 mostra as informa!(oes
armazenadas
E'>
no registro do Windows
;<iltIr.<Ft'
I SYSTEM
(SOLOMON,
sao armazenadas
na
I CurrentControlSetlControl
RUSSINOVICH,
2000).
de inicializac;:ao dos subsistemas
que ficam
2000.
.••.
·:Htje'D
.Js"",,~:;.,.
• ..:J ~.,"'!I>rovoor
;)...J ••"~"'a-__
~III~~~,I)
:.JA:x>C_:Wry
·U.o"pPotao.o
UOOSo.\i<o.
.JEoT" •••••
C:'I:
~~
ReG.,Z
:;.t:G•.~,NJO..s;:
~()p"",".
REGJ'~ln...sz
I!!J.-
;!~.PJ'''''-'..s!
~.:.no::.
I!!:JR~.d
2J ~,~""C',.
UFloP.e"."'.<:p"'a:",,,
..J~'
..,J1'","""ru"
e)\';""';"
Of.sY$""""OOI·;'~\'.'ern32'p$",,;,"e
:le!>..~'•••
\odo'""
~,..~'T>'Iooll~~,..=l:::~.e>.Ot>;e-:t
...
II
.••~Mt-n:<yM=~ent
,::rp",.-.,
II
CISI'<;
,-'
FIGURA
6: Informa~6es
registro (SOLOMON,
o
quando
valor de registro
0 sistema
subsistema
somente
Win32,
para
subsistemas
possui
0
de
registro
Csrss.exe.
testes
nome do arquivo
kernel, Win32k.sys
lista todos os subsistemas
e inicializado.
0
Windows
possui
que
que
estiio
0 valor
a
de
especificaQao
registro
da parte do subsistema
RUSSINOVICH,
de
Windows
arquivo
e
do
Optional
indica
que
e
os
0 valor de registro Kmode
Win32
que executa
em modo
2000).
Chave de registro e uma informa9ao
de configura9ao
do Windows 2000 que fica armazenada
urn banco de dados de configura96es
que
chamado de Registro.
Caminho da chave do registro onde as informae;:oes de inicializa9ao
dos subsistemas
ficam
arrnazenadas.
B
9
no
sao carregados
valor passui duas strings:
serao iniciados par demanda.
(SOLOMON,
2000
0 valor de registro Debug fica em branco (e usada
internos).
OS/2 e POSIX
do Windows
2000).
Required
operacional
0 valor
Debug.
de inicializa~iio
RUSSINOVICH,
ern
54
e
A funC;:8ode um subsistema de ambiente
expor urn sub-conjunto dos
servic;:os bases do Windows 2000 executivo para as aplic8c;:oes. Cada subsistema
pode prover acesso a diferentes sub-conjuntos de servic;:osnativos do Windows
2000. Isso signilica
que algumas
a,6es
podem
ser leitas
a partir de uma aplica,ao
construida em urn subsistema e nao podem ser feitas em uma aplic8c;:ao construida
em Dutro subsistema. Por exemplo, uma aplic8C;:80Win32 nao pode utilizar a fun<;ao
fork
(que
e
implementada
no subsistema
POSIX)
(SOLOMON,
RUSSINOVICH,
2000).
Cad a arquivo de imagem executavel, ou simplesmente arquivo executavel,
e limitado a apenas urn e somente urn subsistema de ambiente. Quando urn
(.exe),
arquivo de imagem executa,
0
c6digo de cri8<;:8ode processos examina
tipo de subsistema, no cabec;:alhodo arquivo de imagem, de forma que
correlo
seja utilizado
RUSSINOVICH,
para
0
novo
processo
que
est';
sendo
0
0
criado
c6digo do
subsistema
(SOLOMON,
2000).
Como ja foi mencionado anteriormente, aplicac;oes de usuario nao fazem
chamadas diretamente para os servi90s de sistema do Windows 2000. Ao inves
disso, eles utilizam uma ou mais DLLs do subsistema. Essas bibliotecas exportam as
interfaces documentadas que os programas que estao ligados ao subsistema podem
chamar.
Por
Keme/32.dll,
sao chamadas
DLLs
do
exemplo,
as
Advapi32.dll,
de APls
subsistema
RUSSINOVICH,2000).
DLLs
User32.dll,
(Application
POSIX
do
subsistema
Gdi32.dll)
Program
implementam
Win32
implementam
Interface)
a API
(como
por
lun,6es
do subsistema
POSIX
1003.1
exemplo,
Win32,
Win32.
que
As
(SOLOMON,
55
6.1.6 Ediy6es do Windows 2000
Existem
Windows
quatro
2000 Server,
Server. A diferen,a
0 numero de processadores
A quantidade
•
0 numero
•
Servic;os em camadas
2000
Server
Advanced
Datacenter
FONTE.
de memoria
de conex6es
Server
Server
SOLOMON,
Windows
Server
2000
Professional,
e Windows 2000 Datacenter
RUSSINOVICH,
2000):
suportados;
fisica suportada;
de rede concorrentes
suportadas;
que vern com as ediy6es
Server e
nao vern
edic;ao Professional.
do Windows
2000 sao descritas
1: CARACTERlsTICAS
Professional
2000:
sao (SOLOMON,
•
do
Windows
2000 Advanced
entre as edi,5es
com a
Edi,ao
Windows
do Windows
•
As edi,5es
QUADRO
edi,5es
no QUADRO
1.
DAS EDI<;:OES DO WINDOWS
Processadores
suportados
2
Memoria fisica
suportada
4GB
4
4 GB
lIimitado
8
8 GB
lIimitado
32
64GB
lIimitado
RUSSINOVICH,
2000.
2000 - 2000
Numero de conex6es
concarrentes
de rede
10
56
6.2 PROCESS OS
e
No Windows 2000, um processo
farmada par um ou mais threads. As
principais estruturas de dados relacionadas aos processos esta.o descritas abaixD,
bem como
0
relacionamento
Cad a processo
chamado
com as estruturas
no Windows
de EPROCESS.
a
2000
EPROCESS
e
utilizadas
representado
pelos threads.
por um bloco de processo
possui atributos
relacionados
ao processo
e tambem
possui ponteiros para Qutras estruturas
de dados
relacionadas
(SOLOMON,
RUSSINOVICH,
2000).
6.2.1 Estrutura de um processo
Cada
blocos
processo
de threads
threads que sao representados
possui um ou mais
cham ados de ETHREAD.
a
bloco EPROCESS
par
e suas estruturas
relacionadas existem no espa~o de endere<,(ode sistema, com exc8C;8o do process
environment
block (PEB), que existe no espal'o
de enderel'o
do processo,
ja que ele
possui informac;:oesque sao modificadas par c6digo que executa em modo usuario
(SOLOMON,
A
threads.
RUSSINOVICH,
2000).
figura 7 apresenta as estruturas de dados associadas aos processos e
57
TllI'01H! Ervnwmem
Olock
(TEB)
Espa<;:ode endereyo de processo
Espac:;:ode endere(1o de sistema
-----i
----1
Bloco de processo Win32
Handle
table
I
I
~~~
Bloco de Thre!!.!
FIGURA
(SOLOMON,
o
7: Estruturas
RUSSINOVICH,
QUADRO
EPROCESS.
de dados associ ad as com processos
e threads
2000).
2 apresenta
algumas
informa,6es
que fazem
parte
do bloco
58
2: ALGUMAS
QUADRO
INFORMA<;:OES
DO BLOCO
KPROCESS
Kernel
block
- 0
-
2000
biDeD
de controle
de processos
possui
informayoes
como:
process
(BCP
EPROCESS
Proposito
Elemenio
-
Lista
kernel
dos
Bloco
de
pertencem
controle
de
- Prioridade
80
blocks
thread
(KTHREAD)
que
processo;
padrao;
base
- Quantum;
processos)
- Mascara de afinidade;
- Tempo
total
usuario
para
de
em
execu,ao
todos
os
modo
threads
kernel
e modo
pertencem
que
ao
processo;
- Ponteiro
Identifica,ao
do
para
0
10 do processo,
diret6rio de
paginas do processo.
10 do processo
criador,
nome da imagem
que esta sendo executada e outras informagoes.
processo
Descritores
de
Estruturas
de dados
que descrevem
0
status
das partes
do espayo de endereyo que existem no processo.
endereyos
virtuais (VADs)
Informa,oes
do
Working Set
Possui
urn ponteiro
maximo
do
working
redimensionamento
a Working
Set List e autras
e outras informa,oes
atual
set,
hera
do working set, contador
Informa,oes
Tamanho
sobre
arquivo de paginay80
mem6ria
para
informaqoes como tamanho atual, pica, tamanho minima e
do
ultimo
de page fault
do Working Set.
e pico de mem6ria
virtual,
e outras informagoes.
utilizayEio
do
59
virtual
de Endereyo da tabela de handles de cada processo
Tabela
Handles
Process
Informayoes da imagem (endereyo base, numeros de
Environment
versoes), informayoes da heap, e outras informayoes.
(PEB)
Block
FONTE:
SOLOMON,
o
RUSSINOVICH.
2000.
bloco de processo do kernel (Kernel Process block - KPROCESS),
faz parte do bloco EPROCESS,
e
0
relerenciado pelo bloco EPROCESS,
processo. 0 KPROCESS
informagoes basicas que
process
environment
block
que e
(PEB),
contem detalhes adicionais sobre
que
0
objeto
ou BCP, como e algumas vezes chamado, possui
0
kernel
do Windows 2000 precisa para escalonar threads
(SOLOMON, RUSSINOVICH, 2000).
o
PEB
(Process environment
block)
que fica no espayo de endereyos de
usuario, possui informa90es que precisam ser gravadas em modo usuario e que sao
necessarias
PEB
para
0
image loader, heap manager
e outras Oils de sistema Win32. 0
e sempre mapeado no endereyo Ox7FFDFOOO.
Os blocos EPROCESS e
KPROCESS sao acessiveis apenas em modo kernel (SOLOMON, RUSSINOVICH,
2000).
10
Tabela
de handle
de um processo:
Quando
um processo
cria au abre um objeto
pelo nome,
ele
recebe um handle que representa 0 seu acesso ao objeto. Referenciar urn objeto atraves do seu
handfe e mais rapido que usaf 0 nome do objelo porque 0 gerenciador de objetos nao precisa ulilizar
a busca por nome e pede encontrar 0 objeto diretamente, atraves do seu handle.
60
6.3 THREADS
No Windows 2000,
relacionadas
0
thread e a unidade
threads sao apresentadas
aos
basica
de execugao.
abaixo.
Na camada do sistema operacional. urn thread
representado por um bloco chamado de executive
ETHREAO
e as estruturas
thread
para as quais ele aponta
endere,os do processo. Adicionalmente,
Alem
uma estrutura
disSQ, para
paralela
threads que
para
block),
2000
(ETHREAO).
0 bloco
de endereyos
que fica no espa,o de
processo do subsistema Win32 (Gsrss)
0
cada thread criado
fazem
e
no Windows
fiearn no espago
do sistema, com exce,ao do TEB (Thread environment
mantem
As estruturas
chamadas
em urn proceSSD
a func;oes
Win32.
do subsistema
Win32
como USER ou GOI, a parte do subsistema Win32 que executa em modo kernel
(Win32k.sys),
mantem uma estrutura de dados por thread (chamada de estrutura
que
W32THREAO),
e
referenciada
pelo
bloco
(SOLOMON,
ETHREAO
RUSSINOVIGH, 2000).
Existem threads no Windows 2000 que sao chamados de lightweight
ou simples mente de fibers. as fibers permitem
proprios
threads de
execU(;ao
ao
inves
que uma aplicayao
de
contar
escalonamento baseado em prioridades do Windows
em
termos
de
implementados
inicialmente,
escalonamento,
em
e
modo
sao
usuario
no
invisiveis
2000.
para
KerneI32.dll.
com
0
Para
threads
escalone
0
os seus
mecanisme
de
Esses tipos de threads,
kerne',
pais
a utiliza9ao
eles
de
sao
fibers,
feita uma chamada para a fun,ao Win32 GonvertThreadToFiber.
Essa fun9f1o converte
um thread
em um fiber. Depois
disso,
pode criar fibers adicionais, utilizando a fun,ao CreateFiber
0
novo fiber convertido
(Gada fiber pode ter
seu proprio conjunto de fibers). Entretanto, diferente de urn thread,
0
um fiber nao
61
inicia sua execuc;ao
ate que
chamada
para a func,;:8o
ate
ele
que
seledonando
fay8
ele seja manualmente
SwilchToFiber.
uma
chamada
para
outro fiber para execu,ao
no casa especifico
conjunto
como
dos fibers,
de fibers (derivados
um
thread.
utilizando chamadas
atraves
de uma
fun980
Switch ToFiber,
RUSSINOVICH,
do conceito de
nova mente
2000).
fiber, pode-s8 considerar a
Urn processo pode possuir de 1 a n threads,
urn thread
de um thread)
Internamente
a
(SOLOMON,
Para urn melhor entendimento
relay80 entre processos e threads.
selecionado
0 novo fiber executa enquanto ele existir au
ao
tiJread,
pode
possuir de zero a n fibers.
e escalonado
eles
(os
pelo sistema
fibers),
e,
Urn
operacional
se auto-escalonam,
para a func,;:8o SwilchToFiber.
6.3.1 Estados de urn thread
Um thread
pode estar nos seguintes
estados
(SOLOMON,
RUSSINOVICH,
2000):
Pronto:
Quando
seledona
considera samenle
0
um thread
para execu,iio,
0
dispatcher
conjunto de threads que estao no estado de
pronto.
Standby:
Um
thread
no
estado
standby
foi
selecionado
execw;:ao. Quando as condi90es corretas existem,
a troca de contexto para esse
estar no estado de standby
thread.
Somente
para cada processador
0
dispatcher
urn thread
no sistema.
para
faz
pode
62
Execulando: 0 thread que esta utilizando
0
processador em urn
dado momento.
Espera:
Urn thread
motivos:
0
aguardando
thread
pode entrar no estado de espera
termino de uma operac;:aode 110. Quando 0 tempo de
0
espera do thread termina, dependendo da prioridade,
execuc;:ao imediatamente
iniciar a
par varios
esta aguardando urn objeto ou pode estar
0
ou ser movido para
thread
0
pode
estado de
pronto (ready).
Transic;:ao:
esta
pronto
paginada
Urn
thread entra no estado de transic;:ao quando ele
para
executar
fora da memoria.
mas
a
sua
'I
pilha
do kerne/
esta
Uma vez que a sua pilha do kernel
e
trazida de volta para a mem6ria, 0 thread entra no estado de pronto.
Terminado:
executar,
Quando
urn thread
conclui tudo que ele tinha que
ele entra no estado terminado.
Uma vez terminado,
urn
objeto thread pode ou nao ser exctuido (0 Gerenciador de objetosObject
Manager
objetos). Se
0
pede reinicializar
11
Informa90es
modo kernel.
-
possui politicas definidas para a exctusao de
Executive
tern urn ponleiro para
0
objeto thread, ete
0 thread e uliliza-Io novamente.
de pilha do thread que estao acessiveis
somente
quando a thread esta executando
em
63
A figura
8 apresenta
os estados
de um
thread
no
Windows
2000
e as
transiyoes de estados que podem ocorrer12.
e iniciollzar
um thread
Crlaf
t
Inlcializado
Espero
FIGURA
8 : Estados de um thread (SOLOMON,
6.4 GERENCIAMENTO
a
Windows
2000
base ado em prioridades de pronto sempre
estar limitado
(isso
sendo que
executar
120
aD
e chamado
item
0
thread
um sistema
de Afinidade
0
thread selecionado
em que ele tern
de processador).
intervalo de prioridades vai de
apresenta
processador
algumas
de escalonamento
preemptivo,
com prioridade mais alta que estiver no estado
sendo que
numero de processadores
em qualquer
6.4.9
0
2000).
DE THREADS
implementa
executa,
RUSSINOVICH,
considera<;:5es
perm is sao para executar
Sao utilizadas
a
disponivel,
para execu~ao pode
32 filas de prioridade,
a 31. PDr padrao, as threads podem
mas pode-s8
importanles
sobre
alterar a afinidade
as transi<;:oes
dos estados.
de
64
processador usanda uma das func;6es de escalonamento
(SOLOMON,
RUSSINOVICH,
o escalonamento de threads
e a tambarn
pronto
baseado
(ready),
ele
a inserido
ira executar
GALVIN,
GAGNE,
ate que
Quando
em urna
urn thread
fila de
urna das
prontos,
de acordo
pelo escalonador
situa90es
0
abaixo
ocorra
corn
de
a sua
(SILBERSCHATZ,
2003):
o
Outro thread com maior prioridade
o
0 thread entrou no estado de espera (Ioi leita urna requisi9iio
esta aguardando
que seja liberado
0 thread terminou sua execw;:ao;
o
Ocorreu
uma interruP9iio
(SILBERSCHATZ,
algoritrno
de escalonamento
multiplas
filas
realimentay8o.
execu9iio
dos threads
com
do
CPU Bound
aumento
entrou no estado
algum
de
pronto;
recurso
de 1/0 ou
necessaria
sua execuyao);
o
atravas
estado
para execuc;8o. 0
0 seu quantum terminou;
para continuar
leito
rnuda para
o
o thread
o
Win32
no Windows 2000 ocorre de forma preemptiva,
ern prioridades.
prioridade, e aguarda ate que seja selecionado
thread
do subsistema
2000).
de
do
0
e
Windows
GALVIN,
2000
utiliza
GAGNE,
0
2003).
algoritrno
de
algoritmo
e balancear
a
110 Bound. 0 balanceamento
dos threads
e
objetivo
prioridade
desse
para
processos
110 Bound,
e,
conseqGentemente, com esse aumento, ocorre a mudanC;8 da fila de pronto do
thread,
urna
fazendo com que ele tenha maior prioridade de execu9ao quando termina
opera9iio
de
entrada
e saida.
0 resultado
disso,
a urna
utiliza9iio
rnais
balanceada de processador, independente do padrao de execu9ao do processo
(SILBERSCHATZ,
GALVIN,
GAGNE,
2003).
65
Quando
determinada
thread
urn
e
selecionado
para
execu93o,
ele
executa
quantidade de tempo chamada de quantum. 0 quantum
de tempo em que
interrompa
0
0
thread tern permissao
thread
para descobrir
S8
para executar
Dutro thread
antes que
de mesma
0
por
uma
e a quantidade
Windows 2000
prioridade
au de
prioridade mais alta eslil esperando para execular ou se a prioridade do thread
precisa S8r reduzida.
Os valores
sao diferenles entre
Podem
0
de
Windows
quantum podem variar de thread para thread (e
2000
e
Professional
tambem ocorrer situa90es em que urn thread
quantum. Pelo fato de 0 Windows 2000 implementar
0
Windows
pade
selecionado
para executar
0
seu quantum
e pode sofrer
termine.
Server).
nao completar
0 escalonamento
se oulro thread com maior prioridade ficar pronlo para execular,
ser interrompido antes que
2000
0
0
alual pode
thread
De fato, urn thread pode
preempC;3o
antes
mesmo
seu
preemptivD,
de iniciar
ser
sua
execu9ao (SOLOMON, RUSSINOVICH, 2000).
o
c6digo de escalonamenlo do Windows
Nao existe um simples
par
todo
a
kernel,
escalonamento.
As
m6dulo
e
e
au rotina de
acionado
rotinas
que
chamadas de kernel's dispatcher.
por urn dos seguintes
o
Um
2000
e implemenlado
"escalonamento";
quando
ocorrem
desempenham
essas
eventos
tarefas
no kernel.
e distribuido
a c6digo
relacionados
sao
ao
coletivamente
0 escalonamenlo de threads pode ser disparado
eventos:
thread fica pronto para executar
(0
thread acaba de ser criado ou
acaba de sair de urn eslado de espera);
o
Urn
thread deixa
ele termina
0
estado
de execuC;ao porque
au entra em estado
o A prioridade de um thread
a seu
quantum termina,
de espera;
e allerada;
o A afinidade de processador do thread que estil executando
e allerada.
66
Em cada uma dessas situ890es,
o proximo thread que ira executar.
0
Windows 2000
Quando
0
Windows
thread para executar, ele faz urna traca de contexto para
contexte e
0
deve determinar qual sera
2000
0
seleciona
um novo
novo thread. A traca de
processo de salvar todas as informa96es de contexto associadas com
executando e carregar as informa90es
de contexto
do
0
proximo
thread
que esta
thread
que foi selecionado para executar, e, depois disso, iniciar a execu980 desse
proximo thread (SOLOMON, RUSSINOVICH, 2000),
6.4,1 0 escalonador
- Dispatcher
o escalonador - Dispatcher
-
e0
e
implementado
de threads no sistema operacional, e
um esquema
threads,
de
que
codigo responsavel pelo escalonamento
no kernel.
0 dispatcher
utiliza
prioridade de 32 niveis para determinar a ordem de eXeCU98.odos
sao
divididas
em
duas
classes
distintas
de
prioridades
(SILBERSCHATZ, GALVIN, GAGNE, 2003):
o Ciasse variavel: contem threads que possuem prioridades de 1 a 15,
o Classe de tempo real: contem threads que possuem prioridades de 16
a 31.
Ali3m das prioridades
thread
apresentadas
acima,
que vao de 1 a 31, existe urn
do sistema que executa com prioridade O. 0 thread zero, que faz parte do
Gerenciador
de memoria
virtual,
e
respons8vel
por zerar a lista de paginas
livres
para que elas possam ser transferidas para a lista de paginas zeradas. Essa
atividade faz parte do gerenciamento
de memoria
(SILBERSCHATZ, GALVIN, GAGNE, 2003),
virtual do sistema
operacional
67
Para cada prioridade existe uma fila de pronto associada,
para definir a ordem de execuC;8o de urn thread.
comeyando
0 dispatcher
que
verifica
pela fila de maior prioridade, ate que seja encontrado
esta pronto para executar
(SILBERSCHATZ,
GALVIN,
GAGNE,
e
utilizada
cad a fila,
urn thread que
2003).
6.4.2 Niveis de prioridade
Os
niveis
perspectivas
de
diferentes:
prioridade
prioridades
inicialmente
organiza
foi atribuida
os processos
ap6s sua criayao,
As
seguintes
da API
WIN32
GALVIN,
de prioridades
GAGNE,
REALTIME_PRIORITY
o
ABOVE_NORMAL_PRIORITY_CLASS
o
NORMAL_PRIORITY_CLASS
o
BELOW_NORMAL_PRIORITY_CLASS
o
IDLE_PRIORITY_CLASS.
de
(SILBERSCHATZ,
um
_CLASS
GALVIN,
Kernel.
A API
relativa
duas
Win32
a qual Ihes
de cada thread,
2003).
sao
utilizadas
no
Windows
2000
_CLASS
_CLASS
classes
thread
e do
utilizando
2003):
HIGH_PRIORITY
REALTIME_PRIORITY
atribuidos
pela prioridade
GAGNE,
o
as
sao
de acordo com a classe de prioridade
o
Todas
prioridade
classes
GALVIN,
threads
e, em seguida.
individual mente (SILBERSCHATZ,
(SILBERSCHATZ,
dos
que
de
prioridade,
sao classes
pertence
GAGNE,
2003).
de
a
prioridades
uma
dessas
com
variaveis,
classes
da
eXC8980
ou
pode
seja,
a
mudar
68
Cad a c1asse de prioridade
estao
relacionadas
GAGNE,
as classes
possui ainda
de prioridade
uma prioridade
relativa
relativa.
(SILBERSCHATZ,
Abaixo
GALVIN,
2003):
o
TIME_CRITICAL
o
HIGHEST
a
ABOVE_NORMAL
a
NORMAL
o
BELOW_NORMAL
a
LOWEST
o
o
numericas
IDLE
mapeamento
do kernel
(SILBERSCHATZ,
QUADRO
das
do
Windows
GALVIN,
3: MAPEAMENTO
PRIORIDADES
classes
NUMERICAS
GAGNE,
de
2000
prioridade
silo
Win32
mostradas
para
as
prioridades
no QUADRO
3 abaixo
2003):
ENTRE AS CLASSES
DO KERNEL
DE PRIORIDADE
WIN32
- 2003
Prty
Classes
de prioridade
relativa
Real-
Above
High
Below
Idleprty
Normal
normal
time
normal
Time31
15
15
15
15
15
26
15
12
10
8
6
25
14
11
9
7
5
critical
Highest
Above
normal
E AS
69
24
13
10
8
6
4
23
12
9
7
5
3
Lowest
22
11
8
6
4
2
Idle
16
1
1
1
1
1
Normal
Below
normal
FONTE,
SILBERSCHATZ.
GALVIN.
Normalmente,
prioridade
base
NORMAL
GALVIN,
2003.
a prioridade
inicial
do
para a classe
GAGNE,
GAGNE.
thread
base
do processo
- terao
especifica
0
na qual
valor
0
- e conseqOentemente
padrao
thread
da
pertence
prioridade
a
relativa
(SILBERSCHATZ,
2003).
Cada processo possui apenas urn unico valor de priori dade (prioridade
possui dois valores
de prioridade:
prioridade
base e prioridade
atual. A priori dade atual para os threads
base). Cada thread
de prioridades
variaveis
(1 a 15), pode ser,
e, normalmente
e,
altera a prioridade
dessa
forma,
(SOLOMON,
o
mais alta que a sua prioridade base. 0
dos threads
eles
sempre
RUSSINOVICH,
escalonador
thread
terao
0
mesma
e
em tempo
valor para
Windows 2000 nunca
real (priori dade
prioridade
16 a 31),
base
e atual
2000).
muda a prioridade de
prioridades variaveis, ap6s
prioridade do
que executam
0
urn thread que pertence
termino de seu quantum. Quando
reduzida,
e ele
e
0
a classe
quantum
de
termina, a
inserido em uma nova fila de pronto, de
acordo com a nova prioridade. A prioridade de urn thread nunca sera menor do que
sua prioridade
base (SOLOMON,
RUSSINOVICH,
2000).
A mudan98 de priori dade tambem ocorre para
de espera. Ao contra rio da situa9ao
anterior,
threads que deixam
a prioridade
de urn
0
estado
thread que deixa 0
70
e aumentada.
estado de espera
0 aumento de prioridade do thread depende do tipo
de operac;Eto pela qual 0 thread
estava aguardando
um thread
estava esperando.
Per exemplo,
urn thread
que
par uma operac;::aode I/O de teclado tera urn aumento maior que
que estava
aguardando
uma requisi,ao
de 110 em disco
(SOLOMON,
RUSSINOVICH,2000).
o
objetivo dessas
y8s
mudan
e
de prioridade
res posta para threads interativos e balancear
trazer
urn born tempo
de
a utiliz8c;:8.0de CPU entre processos
que fazem alta utilizac;::aode dispositivDSde entrada e saida e processos que fazem
uma alta utiliza,ao
de processador
6.4.3 Prioridades
Pode-s8
aumentar
dinfimico em qualquer
scheduling
priority
(SOLOMON,
RUSSINOVICH,
2000).
de Tempo Real
ou diminuir a prioridade dos threads dentro do intervalo
aplic8gao,
entretanto,
deve-s8
possuir 0 privih§gio
increase
para entrar no interval a de prioridades de tempo real. Se ocorrer
uma tentativa de mover um processo para a classe de prioridade de tempo real sem
a privilegio necessario, a opera(fao nao ira falhar. No entanto, a classe mais alta de
priaridade
dinamica
Varias
possivel
threads
sera usada (SOLOMON,
de sistema
do modo
kernel
RUSSINOVICH,
importantes
2000).
do Windows
2000
executam no intelValo de prioridades de tempo real, assim, se a seu processo gastar
uma quantidade de tempo excess iva executando
pode estar bloqueando
gerenciador
de cache,
de dispositivos.
Isso
fun<;5es de sistema
neste intervalo de prioridades, isso
criticas no gerenciador
de memoria,
sistema de arquivos local e de rede, e mesmo outros drivers
nao
ira bloquear
interrup(f5es
de
hardware
porque
elas
71
possuem prioridade mais alta que qualquer thread, mas issa pode impedir threads
de sistema de executar (SOLOMON, RUSSINOVICH, 2000).
6.4.4
Idle
Quando
2000 escalona
Thread
thread executavel
naG existir nenhum
0
Idle thread.
Em
urn sistema
processador ira executar um Idle thread.
idle thread
com
Windows
0
Windows
varios processadores,
cada
2000 reporta a prioridade do
como sendo zero. Entretanto, na realidade, esses threads nao possuem
n[vel de prioridade
thread
a
na fila de prontos,
porque
eles executam somente quando nao existir nenhum Dutro
para executar. Embora alguns detalhes de fluxo possam variar entre
arquiteturas,
a fluxo de controle
basieD do idle thread pode ser definido como
(SOLOMON, RUSSINOVICH, 2000):
1. Desativa e ativa interruP90es (permitindo que qualquer interruP9ao
pendente seja executada);
2. Verifica se existe algum DPC13 pendente no processador;
3. Verifica
S8
algum
thread
foi
selecionado
para
executar
no
processador;
4. Faz uma chamada
casa de alguma
para a rotina
de idle do processador
funC;8o de gerenciamento
de energia
da HAL (no
precisar
ser
executada).
13 Dispatch
au deferred procedure call (DPC): quando um thread nao pode mais continuar executando
(talvez porque ele terminou ou porque ele entrou voluntariamente no estado de espera), 0 kernel
chama 0 dispatcher diretamente para efetuar uma troca de contexto imediatamente. Algumas vezes,
entretanto, 0 kernel detecta que um escalonamento deve ocorrer quando ele esla executando varias
camadas de c6digo abaixo. Nesta situa9ao, a solu9ao ideal e requisitar um escalonamento mas adiar
a sua ocorrencia ate que 0 kernel complete sua atividade atua1. Usar uma interruP9ao de software
DPe e uma forma conveniente de conseguir esse adiamento.
72
6.4.5 Incrementos
de prioridade
Existem cinco cases em que
Windows 2000 pode aumentar
0
a prioridade
de urn thread:
•
Ao completar
operayoes
Depois de terminar
0
de I/O;
estado de espera par objetos executivos
14
ou
semaforos;
•
Depois
que
(primeiro
•
threads
que
uma operayao
GUI
interface
gnjfica
Quando
um thread estil mais de 300 ticks de ciock na fila de prontos
Set
"acordam"
foreground
de 1/0;
Quando
(Balance
threads
a urn processo
pertencem
plano) completam
(Windowing
Manager
porque ocorreu
alguma
operayao
de
activity);
-
controle
de
Starvation)
(SOLOMON,
RUSSINOVICH,2000).
o
objetivo desses ajustes
e melhorar
de resposta, bern como fazer com que
No entanto,
ajustes
da mesma
nao sao perfeitos,
RUSSINOVICH,
14 lnternamente,
(Kernel Objects).
0
desempenho
escalonamento
forma que qualquer
e podem
0
0
tempo
de threads seja mais justo.
algoritmo
nao beneficiar
do sistema e
de escalonamento,
todas as aplicayoes
esses
(SOLOMON,
2000).
0
Windows 2000
possui dais tipos de objelos:
objetos
executivos
e objetos
do kernel
Objetos executivos sao objetos implementados por varios componentes do Windows
2000 Executivo (como 0 Gerenciador de processos, Gerenciador de memoria, entre oulros). Objetos
do kernel sao urn conjunlo mais primitiv~ de objetos implementados pel0 kernel do Windows 2000.
Esses objetos nao sao visiveis para 0 modo usuario; eles sao cfiados e usados denlro do executivo.
Objetos do kernel oferecem funcionalidades fundamentais, como sincroniza9ao, no qual objetos
executivos sao construidos. Portanto, varios objetos executivos encapsulam um ou mais objetos do
kernel.
73
Obs.: 0 Windows 2000 nunca aumenta a prioridade de threads que estao
executando no intervalo de tempo real (prioridades de 16 a 31) (SOLOMON,
RUSSINOVICH, 2000).
Incremento de prioridade apos completar uma opera<;ao de liD
o
Windows 2000 da um aumento temporario de prioridade depois de
completar certas opera<;6esde tlO, para que os threads que estavam aguardando
pela operar;ao de 110 tenham uma chance maior de executar
importante lembrar que
e
reduzida 1 unidade de quantum
naquele
do thread
momento.
E
que completou
uma opera<;ao de flO, de forma que threads flO bound nao sejam favorecidos
injustamente (SOLOMON, RUSSINOVICH, 2000).
o
valor do incremento depende da opera<;ao de flO pela qual
0
thread
estava aguardando. 0 QUADRO 4 lista os valores de incremento utilizados pelo
Windows 2000 (SOLOMON, RUSSINOVICH, 2000):
QUADRO 4: INCREMENTO DE PRIORIDADE, POR TtPO DE DISPOSITIVO - 2000
Dispositivo
Incremento
Disco, CD-ROM, Paralela, Video
1
Rede, Serial
2
Teclado, Mouse
6
Som
8
Fonte. SOLOMON,
o
RUSSINOVICH.
2000.
incremento de prioridade
e nao sua prioridade
e sempre aplicado a prioridade Base
do thread,
atual, e somente ocorre para threads que estao executando no
74
intervalo
de
prioridades
prioridade
Qcorre,
completar
0
preemP9ao,
base
original.
e
Oepois
com essa
reduzida
0
thread
que
com
eleva~ao
com a mesma prioridade
(SOLOMON,
RUSSINOVICH,
A figura 9 apresenta
Aumenlode
prlondade
,pOs
complelar
0
de
FIGURA
a
sua
solrer
e a
quantum
(au
0
seu
e redu9ao
de prioridades:
A reducao de
pnOrldade ocotre
ale
que 0 thread relome
para a sua pnoridade
I.~:::,",":'~
Preemp~o
_______
Exec
prioridade
A prioridade e reduzida
quando 0 quantum
lermina
espera
Prioridade
Base
thread executa
0
quando voltar a executar
~f--J
r~
de
Ao
2000).
fluxo de aumento
Quantum
I
I
I
I
t
e
elevada.
atual do thread seja igual
sua prioridade sera reduzida samente depois que ele completar
latia de tempo)
incremento
0
prioridade
em 1 unidade
ate que a prioridade
Caso
ele continuara
a 15).
urn quantum
a prioridade
0 cicio continua
a
(de
executa
seu quantum,
outro quantum.
prioridade
dinamicas
thread
0
~~~~~o
Espera
base
1
Exec
9: Aumento
e redu,ao
de prioridade
(SOLOMON,
RUSSINOVICH,
2000).
lndependentemente
do tamanho
do incremento,
nunca sera incrementada
alem do valor de prioridade
com
recebe
prioridade
(SOLOMON,
14 que
RUSSINOVICH,
urn incremento
2000).
a prioridade
do thread
15. Par exempl0,
urn thread
de 6 ficara
com
prioridade
15
75
Incremento
de prioridade
depois
de completar
uma espera
par eventos
au semilforos
Quando
objelo
urn thread
de semaforo
liberado,
lem
por exemplo),
(SOLOMON,
que estava
aguardando
seu eslado
de espera
ele reeebe
urn incremento
RUSSINOVICH,
por urn evento
finalizado
(porque
executivo
ou
0 semaforo
foi
de 1 unidade
de prioridade
2000).
Esse incremento de prioridade funciona da mesma forma que
de prioridade concedido
sempre aplicado
ira executar
apos a finaliz8g8o de uma operag8o de 110:
a prioridade
Base, a prioridade nunca
com prioridade elevada
0
0
incremento
incremento
sera maior que 15, e
ate que ele termine
0
0
seu quantum.
e
thread
Depois
disso, sua prioridade sofrera urn decremento de 1 unidade, e assim sucessivamente,
ale que ele chegue a sua priori dade base (SOLOMON,
Incremento
de prioridade
para Foreground
RUSSINOVICH,
threads
Sernpre que urn thread em urn processo foreground
de espera par urn objeto do kernel,
prioridade
Atual
como
um processo
e
indice de uma tabela de
threads de aplica,oes
o objetivo
de aplica,oes
responsavel
foreground).
0
valor alual da variavel
par determinar
A variavel
quantum que
foreground
e
(SOLOMON,
- conceder
e
RUSSINOVICH,
e melhorar
incremento
a
considerado
PsPrioritySeparation
usado para selecionar
um pequeno
incrementa
PsPrioritySeparation.
qual processo
do kernel
desse incremento de prioridade
interalivas
compteta urna opera9ao
a funyEio do kernel KiUnwaitThread
do thread ulilizando
(0 sistema Windowing
2000).
e um
quantums para
2000).
a tempo de
res posta
de priori dade
para
76
aplica90es foreground
essas
quando uma situa9ao de espera .; completada, faz com que
aplicac;:6es tenham
uma
chance
especial mente quando outros processos
executando em background
maior
de
com a mesma
executar
naquele
prioridade
Windows
de
prioridade
.;
desabilitado
atrav';s
Threads que possuem janelas
da
fun9ao
de prioridade
quando
recebem
eles "acordam"
User Interface)
sistema Windowing
para a
um GU/ thread.
Win32
um incremento
threads
adicional
por motivQ de atividade
de 2
Windowing,
par exemplo, a chegada de uma janela de mensagem (Pop-up
chamada
e
Professional
(SOLOMON, RUSSINOVICH, 2000).
Incremento de prioridade para GU/ (Graphic
unidades
2000
Server e nao pode ser desabilitado, mesmo em situa90es em que a
2000
SetThreadPriorityBoost
como,
estar
(SOLOMON, RUSSINOVICH, 2000).
Esse incremento de prioridade se aplica ao Windows
incremento
momento,
base podem
window).
a
(Win32k.sys) aplica esse incremento quando ele faz uma
funC;8o KeSetEvent, para configurar
A raZ80 para esse incremento
um evento
e tambem
usado
para aeionar
para favorecer
aplicac;6es
interativas (SOLOMON, RUSSINOVICH, 2000).
Incremento
Como
starvation,
determinado
de prioridade
foi mencionado
a Windows
tempo
2000
por Starvation
anteriormente
no
topico que fala de controle
eleva a prioridade de threads
na fila de prontos e que nao foram selecionados
(SOLOMON, RUSSINOVICH, 2000).
de
que estao a um
para execw;:ao
77
o
Windows 2000 possui urn thread que executa
gerenciamento
segundo,
clock
de memoria,
existem
S8
a cada
segundos).
aumenta
ele
encontrar
a prioridade
caso,
prioridade
corresponde
ira voltar
isso representa
urn periodo
situay80,
dobro
aD
nova mente
veri fica
threads
no maximo
uniprocessada
threads
nessa
com prioridade
Para evitar urn consumo
encontrar
funyoes
de
cnde
tick de clock
de aproximadamente
0 Balance
Set
3
Manager
dobro de tempo de um quantum
0
15 ate terminar
de urn quantum
para a sua
0
normal),
prioridade
base
0
e
t
seu quantum
(que
em seguida,
sua
original
(SOLOMON,
2000).
RUSSINOVICH,
Set Manager
x86
do thread para 15 e da a ele
0 thread ira executar
normal.
nesse
uma arquitetura
10 milisegundos
Se
primariamente
responsavel por verificar, a cada 1
threads que estao no estado de pronto a mais de 300 ticks de
(se considerarmos
oeorre
e
mas tambem
apenas
no estado
excessivo
de recursos
16 threads
de starvation,
cad a vez
do sistema
que
ele taz a eleva9aO
10 threads de cada vez (SOLOMON,
0
thread Balance
ele executa,
de prioridade
RUSSINOVICH,
e, se ele
para ate
2000).
6.4.6Quantum
Cada
thread
thread pode executar
utilizar.
Esse valor
inteiro chamado
2000
um valor
Professional
de quantum
ate que ele tenha que liberar
nao e uma quanti dade
de Unidade
Par padrao,
2000).
tem
de Quantum
os threads
e 36 no
que
0
de tempo
(SOLOMON,
representa
processador
2000
SeNer
RUSSINOVICH,
(SOLOMON,
tempo
0
para outro thread
mas ao inves disso
iniciam com um valor de quantum
Windows
quanto
um valor
2000).
de 6 no Windows
RUSSINOVICH,
78
o
Windows
2000 Professional
Server
(que
e
e justamente
diferenC;:8
operacional
beneficio
com
possui urn quantum
urn sistema
servidor,
e
atraves
RUSSINOVICH,
2000).
muito
deduz
restando
0 valor
para
execuyao.
0
fixe 3 do quantum
thread,
quantum
0
No Windows
2000
intervalos
de clock. No Windows
intervalos
de clock (SOLOMON,
o
hardware.
tamanho
pais traz
do numera
processados
um thread
por padrao
RUSSINOVICH,
2000).
0
por padrao
milissegundos
(SOLOMON,
A razao pel a qual
quantum
par 2
por 12
varia de acordo com a plataforma
de
nao do kernel.
x86 unie de 15
2000).
e expresso em multiplos de tn§s unidades de
por tick de clock ao inves de simples unidades e para permitir a reduyao
parcial do quantum
quando
0
estado
de espera
e completado.
Quando
que possui prioridade base menor que 14 entra no estado de espera
e reduzido
seus
para
executa
enquanto dos x86 multi-processados
RUSSINOVICH,
0
de
um thread executa
intervalo da interruP9Eto de clock da maiaria dos sistemas
e de 10 milissegundos,
como
de trocas
Se naG existir mais quantum
A freqOencia das interruP90es de clock depende da HAL,
Par exemplo,
quantum
importante,
2000 Server,
de clock
dessa
e Dutro thread pode ser selecionado
Professional,
do intervale
objetivo
Em urn sistema
clock, a rotina de interruP98.o de
do thread.
termina
0
Windows
0
operacional.
da reduyao
Cada vez que ocorre urna interruP9ao de
clock
cliente).
sistema
isso
de desempenho
(SOLOMON,
bern maior que
operacional
pelo prop6sito de cada
arquitetura
um ganho
contexto
2000
em 1 unidade
quantums
RUSSINOVICH,
de quantum.
reinicializados
2000).
Threads
ap6s
0
com prioridade
estado
de
0
um thread
seu quantum
14 au superior
espera
tem
(SOLOMON,
79
Essa reduyao parcial resolve
waiting
antes de
0
0
timer do intervalo
casa no qual um thread
entra no estado de
de clock rodar (SOLOMON,
RUSSINOVICH,
2000).
Se essa mudanga de comportamento
possivel
que os threads
do tempo de execuyao
exemplo,
S8
nunca tivessem
(tempo utilizado
nova mente
momento
em que ocorreu a timer
reduzido
no estado
S8
reduzir parcialmente
6.4.6.1 Controlando
Alguns parametres
do registro do Windows
•
a
especificar
do
relativo
S8
de clock,
ocorre a cada tick de clock. Por
executou novamente,
execu9ao no
mas nunca
ficou em
esse thread
nunca teria a tempo
ja
ja que, do ponto de vista do sistema
a thread nunca tivesse executado e nesse caso nao seria
0
seu quantum
0
Quantum
(SOLOMON,
RUSSINOVICH,
podem ser definidos para a Quantum
2000 (SOLOMON,
RUSSINOVICH,
threads
registro
do quantum
(Win32PrioritySeparation)
2000).
na seguinte chave
2000):
dos threads
permite
(curto ou longo)
especificar
e tambem
0
permite
em urn processo que esta em primeiro plano terao aumento
do quantum (e casa ten ham aumento, para qual valor
0
quantum sera configurado).
Este valor consiste de 6 bits divididos em 3 campos de 2-bits
quadro 5:
seria
A contabilizayao
HKEY LOCAL MACHINEISYSTEMICurrentControlSetlContro/lPrio
rityContro/lWin32PrioritySeparation.
valor
comprimento
de waiting,
do seu quantum,
operacional, seria como
possivel
do quantum)
reduzido.
urn thread executou, entrou no estado de waiting,
e entrou
executando
nao tivesse side imptementada,
seu quantum
0
cada, como mostra a
80
QUADRO
5: CAMPOS
DO VALOR
WIN32PRIORITYSEPARATION
2
4
Longo vs. Curto
FONTE.
SOLOMON,
•
•
- 2000
Variavel
RUSSINOVICH,
0
Aumento para processos
primeiro plano
Fixo
VS.
2000.
Longo
vs. Curto:
indica
que
1 especifica
padrao
0
sera
longo, 2 especifica
usado
Professional
e longo para Windows
Variavel
Fixo:
VS.
(curto
para
para
para
deve conter
0 ou
3,
0
processDS
e
campo
PsPrioritySeparation
processo
que possui
0
thread
em primeiro
que
e
0
padrao
sera
quantum nao serao
em primeiro
quantum
armazenado
(SOLOMON,
responsclvel pela janela
RUSSINOVICH,
Quando a janela que esta em primeiro plano
para todos
os threads
daquele
processo
para
Este campo,
que
e Eo tratado como 2), Eo um
que possui 3 entradas.
na
variavel
do
0 valor
kernel
2000).
em foreground).
e0
processo
que esta com a foco, ou seja,
2000).
e alterada
pertence a um thread em urn outro process015, 0 subsistema
de quantum
(variavel
2000 Server);
plano:
RUSSINOVICH,
plano (au processo
pela janela que esta aliva (SOLOMON,
usado
e fixo para Windows
valor 0, 1 au 2 (3 Eo invtllido
indiee para uma tabela de
o
2000
variar 0 quantum para processos em
1 especifica
2000 Professional
Aumento
desse
Windows
para processos em primeiro plano. Se as valores fcrem
configurados
Windows
curto; 0 ou 3
2000 Server);
primeiro plano e 2 especifica que os valores de
alterados
em
para uma janela que
Win32 altera os valores
usando
as dois bits de mais
81
baixa ordem do valor de registro Win32PriorilySeparation
array
tres elementos
de
valores
que
registro
chamado
sao determinados
pelos
Win32PrioritySeparation,
RUSSINOVICH,
QUADRO
como urn indice para 0
de PspForegroundQuantum.
Qutros dois
como
mostra
quadro
0
6: VALORES
DE QUANTUM
6
18
Fixo
SOLOMON,
RUSSINOVICH,
razao
executando
em
pela
qual
no qual mostra
aumento
de
prioridade
RUSSINOVICH,
Suponha
intensivamente
I
I
teria
18
15
0
18
12
18
36
2000
aumenta
aD inves da prioridade,
as patenciais
para
24
I
I
36
36
I
I
36
processos
quantum
0
de
e mais bern ilustrada
problemas
executando
resultantes
threads
com urn
da utiliza9ao
em foreground
de
(SOLOMON,
2000).
que urn
recalculo de uma planilha eletr6nica
grMico).
0
um tempo
em foreground,
se eles tiverem
I
I
Windows
a mesma
enorme
seja iniciado e
que faz usa intensivQ de CPU (como urn jogo
processo
da
menor
CPU
de
planilha
se
0
eletr6nica
processo
tivesse sua prioridade aumentada.
do processo do jogo nao ira impedir
terminar,
(SOLOMON,
Longo
12
entaD, alterne para uma aplicayao
executando
6
de
2000.
0
foreground16
exemplo,
background
passui
- 2000
Curto
A
array
de 2 bits no valor
2000):
Variavel
FONTE.
Este
campos
0
executando
do jogo,
Aumentar
que
0
em
estil
quantum
calculo da planilha eletronica de executar (pois
prioridade,
quando
0
quantum
processo da planilha eletronica sera escalonado),
do processo
do jogo
mas ao inves disso ira
Isso s6 ocorre em processes que pessuem classe de prioridade maior que a classe Idle.
82
favorecer
maior
0
processo do jogo, pais nesse casa, a sua fatia de tempo (quantum) sera
que
a latia
RUSSINOVICH,
de
tempo
do
processo
da
planilha
eletrbnica
(SOLOMON,
2000).
Casa seja necessaria
executar uma aplicactao interativa com uma prioridade
maior que todos as outros processos interativQs, pode-s8 sempre alterar a classe de
prioridade
para AboveNormal
ou High usando
a partir do prompt de comando utilizando
Ihigh) (SOLOMON,
A
RUSSINOVICH,
ligura
10
Win32PrioritySeparation
background).
0
0
Task Manager
comando
(ou iniciar a aplica~ao
start labovenormal
ou
start
2000).
apresenta
para
0
a
Windows
conligura~ao
2000
Server
Essa configuract30 pode ser alterada
padrao
(prioridade
pelo registro
do
valor
para aplica~6es
au atraves
das
configura90es de desempenho.
Value
name"
IWI/'l32Plioril.YSepal~iorI
Base--------;
r. f!~~i~~'~
r .Qecimal
FIGURA
10:
a
valor
Win32PrioritySeparation
2000).
16 IS50
56 ocorre
S9 0
quantum
variiwel
esliver
sendo
utilizado.
(SOLOMON,
RUSSINOVICH,
83
o
valor padrao
18 (em hexadecimal)
do Win32PrioritySeparation
e
e representado
para
0
Windows
e
2000 Seriter
em binario da seguinte forma, como mostra
0
quadro 7:
QUADRO
7: 0 VALOR
WIN32PRIORITYSEPARATION
01
10
1 = Longo
2 - Fixo
Binario
Decimal/Configura,ao
2000
-
00
o-
Sera utilizada a primeira
entrada
da tabela de quantum
-
36.
FONTE.
SOLOMON,
RUSSINOVICH,
Ao configurar
de registro
0
2000.
comprimento
configurac;ao
atraves
da
caixa
do
e
Win32PrioritySeparation,
de dialogo
seJecionar apenas duas combinac;:6es
dialogo
"Op,oes
de
quantum modificando diretamente
passivel
selecionar
"OP90es
diferentes.
Desempenho"
de
qualquer
Desempenho",
A Figura 11 apresenta
(Performance
Options)
0
valor
combinac;:ao.
permite
a caixa de
(SOLOMON,
2000):
RUSSINOVICH,
Pedonnance
Options
.,....~
iJ.t3.1
Applicationresponse--------------,
Optimize performance for:
r
aPplications
Virtualtnemory----------_Tot~1pagingfUesizefor alldrives:
FIGURA
RUSSINOVICH,
11: A caixa
2000).
de
144 frlB
dialogo
"Performance
Options"
A
(SOLOMON,
84
A OP9iio "Applications"
configura9iio
services"
padriio
para
0 Windows
define a utiliza980
o Windows
define a utiliza9iio
2000
de quantums
2000 Server) (SOLOMON,
de quantums
Professionary.
lon905
curtos
e variaveis
A oP9iio
"Background
e fixos (a configuray8o
RUSSINOVICH,
(a
padrao
para
2000).
6.4.7 Cenarios de escalonamento
As
decis6es
de
prioridade do thread.
escalonamento
IS50 significa
thread
em execu9f1o
thread
que esta em execu9ao
maior prioridade
entrar
ira sofrer
possa executar
do thread e
com a arquitetura
recarregar
0
de instru90es;
Registrador
baseadas
ira acorrer
0
thread
na
que 0
e 0
com
2000).
adonar uma troca de contexto. 0
para troca de contexto
dados (SOLOMON,
Conteudo
RUSSINOVICH,
Uma troca de contexte
•
•
sao
uma troca de contexte
que podem
os seguintes
•
2000
com maior prioridade
uma preemp9c3o, de forma que
(SOLOMON,
procedimento
do processador.
Contador
Windows
na fila de prontos,
Existem algumas situ890es
contexte
no
que, S8 urn thread
RUSSINOVICH,
podem
variar
tipica consiste
de acordo
em salvar e
2000):
de status do processador;
de outros registradores;
•
Pilha (modo usuario e modo kemeD;
•
Ponteira
para 0 espa90 de endere90
das tabelas de paginas
do processo).
que 0 thread executa
(0 diret6rio
85
6.4.7.1 Troca de contexto
por evento
externo
Urn thread pode liberar a utiliz8C;80 do processador
entrando
no estado de
espera. Nesse tipo de situa<;ao,quando ele completa
0
volta para
Nesse casa, como a maioria
0
das situ8goes
final da fila de prontos da sua prioridade.
seu estado de espera, ele
de espera resultam em incremento temporario de prioridade, 0 thread
tera uma chance maior de executar em um curto intervalo de tempo (SOLOMON,
RUSSINOVICH, 2000).
Priori dade
Executando
Pronto
20
19
18
17
g'
16
15
14
Para 0 estado
de espera
FIGURA
12: Traca
de
contexto
por
evento
externo
(SOLOMON,
RUSSINOVICH, 2000).
A figura 12 mostra urn thread com prioridade
pais precisa aguardar
par urn evento externa,
prontas possa executar.
a
thread
19 liberando
0
processador,
para que 0 proximo thread na fila de
com prioridade 19 muda para 0 estado de espera
86
e aguarda
para que a situac;ao que gerou essa espera seja satisfeita para que ele
possa voltar para a fila de prontos. Quando
reinicializado
quando
mencionado
e
thread
a thread entra
anteriormente,
decrementado
quando a espera
em
1 unidade
nao e
isso acorre, a valor do quantum
no estado
de
e
de espera
satisfeita,
quantum,
-
de fato, como foi
valor do quantum
0
equivalendo
a um tergo
do
do
clock (exceto para threads executando com prioridade 14 au superior-
intervalo de
nesse casa,
0
(SOLOMON,
RUSSINOVICH,
quantum
dos threads
e reinicializado
apos urn estado de espera)
2000).
6.4.7.2 Preemp,ao
escalonamento, urn thread com menor prioridade sofre
Nesse cenario de
preempgao
situagao
quando
um thread
pode ocorrer
•
0
com maior prioridade
por algumas
estado
de
entra na fila de prontos.
raz6es (SOLOMON,
espera
de
RUSSINOVICH,
thread com
urn
maior
Essa
2000):
priori dade foi
completado;
thread foi aumentada ou reduzida.
A prioridade de urn
Em qualquer urn dos casas mencionados,
a Windows 2000 deve deterrninar
se a thread que esta executando deve continuar sua execut;:ao ou
preempt;:ao
para
(SOLOMON,
RUSSINOVICH,
permitir
Obs.: Threads
threads
esta
executando
executando
(SOLOMON,
que
urn
nao
com
prioridade
mais
ele deve sofrer
alta
execute
2000).
executando
em modo usuario podem causar preernpt;:ao em
em modo kernelimporta.
RUSSINOVICH,
thread
S8
A
2000).
no Windows
prioridade
do
2000,
thread
0
e
modo em que
0
fator
0
thread
determinante
87
Quando
urn thread
sofre
prontos da sua prioridade.
preemP9:3o,
e
ele
Threads executando
colocado
no intervale
no inicio
da fila de
de prioridades
de tempo
real tern seus valores de quantum reinicializados para urn valor de quantum (au timeslice)
inteiro,
dinamicas
enquanto
continuam
que
seus
threads
quantums
ilustra essa situa9:3o (SOLOMON,
executando
quando
eles
no
intervale
voltam
de
prioridades
a executar.
A figura
9
2000).
RUSSINOVICH,
Prioridadc
Execulando
Pronto
&2J
16
-1f-------
Com pictou
scu estado
de Espera
15
14
13
12
11
FIGURA
Na figura
escalonado
13: Preemp9:30
13, urn thread
para execuyao
eXeCU9:3o), fazendo
safra preemP9ao
Dessa
forma,
de urn thread (SOLOMON,
RUSSINOVICH,
com prioridade
do estado
(sua prioridade
com que 0 thread
e seja colocado
assim que
0
e
16 retorna
maior do que
que estava
0
executando
2000).
de espera
thread que estava
(com prioridade
e
e
em
14)
no inicio da fila de prontos da sua prioridade.
thread que causou
a preempr;:Elo (0 thread com prioridade
88
16) terminar
pode",
sua execuc;ao,
completar
6.4.7.3 Termino
Quando
0
0
thread com prioridade 14, que sofreu preempC;:8o,
seu quantum
0
(SOLOMON,
RUSSINOVICH,
2000).
do quantum
thread
em execu,ao
com pi eta
seu quantum,
0
0
Windows
2000
deve determinar S8 a prioridade do thread deve ser reduzida e S8 Dutro thread deve
sar escalonado
prioridade
para execuc;:ao.
Sempre
unidade de prioridade (sendo que
base original).
entre threads
para
do thread
escalonar.
2000 seleciona
executando
e
(SOLOMON,
reduzida,
0 pr6ximo
thread
0
ate
concedendo
para
RUSSINOVICH,2000).
na fila de prontos
a ele um novo
pronto.
A
figura
quantum, se a
redUl;ao de uma
chegar em sua prioridade
do
para
thread nao
ilustra
pelo thread
e
reduzida
prioridade,
da mesma
0
2000).
2000 procura
e
0 Windows
priori dade e move 0
final da fila de prontos daquela
quantum e alterando
14
seu
RUSSINOVICH,
Windows
Se a prioridade
anteriormente
0
da CPU ocorra de forma mais justa
Qutros threads na fila de prontos com a mesma
thread que estava executando
prioridade,
limite da reduc;:ao e
110 bound e CPU bound
apropriado
houverem
0
thread termina
base, ele safre uma
Isso ocorre para que a distribui,ao
Se a prioridade
mais
que urn
atuat dele for maior que a prioridade
esse
0
cenario
seu
estado
de
(SOLOMON,
89
Prioridadc
Executando
Pronto
16
15
14
13
12
11
FIGURA
RUSSINOVICH,
14:
Termino
do
quantum
6.4.8 Escalonando
threads
Para tomar decis6es
de escalonamento
conjunto
de
estruturas
database.
0
dispatcher
aguardando
estrutura
(Iocalizada
e
escalonamento
(SOLOMON,
2000).
de
para executar
mais importante
na variavel
dados
database
do
conhecidas
no dispatcher
0
kernel
coletivamente
possui informac;6es
e quais processos
kernel
de threads
e
como
sobre quais
estao executando
database
mantE~m um
estao
quais threads.
a dispatcher
KiDispatcherReadyListHead).
dispatcher
threads
ready
Esta
fila
A
queue
e,
na
verdade, uma serie de filas, sendo uma fila para cada prioridade de escalonamento.
As filas contem
threads
serem escalonadas
que estao no estado
para execu,ao
(SOLOMON,
de pronto
(ready),
RUSSINOVICH,
aguardando
2000).
para
90
A figura 15 ilustra
0
Dispatcher
Database:
• PriOlidcde base padroo
• Alinidade podlDo de prOCessadQl
• Quon!um podl60
Fila de
Pronto
do
• Prloridade base
• PriOrIdode oluol
• Alinidade do Processodor
• Quon!um
Escalonodor
31
o
FIGURA
15:
a Dispatcher
Database
6.4.9 CONSIDERAyOES
WINDOWS 2000
Na literatura
alguns aspectos
pesquisada
importantes
(SOLOMON,
SOBRE
sabre
0
a arquitetura
quanta ao comportamento
RUSSINOVICH,
2000).
ESCALONAMENTO
do
Windows
2000,
NO
existem
de threads que completam
0
estado de espera.
Atravas
da figura
8, tern-se
em que um thread sai do estado
casa
tenha
maior
priaridade
que
partes do texto citam que sempre
a nitida
de espera
0
thread
impressao
de que podem
e vai direta para a estado
que estava
que um thread
executando.
sai do estado
existir
casas
de execuc;ao,
Param,
de espera
autras
ele volta
91
para
0
estado de pronto, e casa tenha maior prioridade que a thread
que estava
executando naquele momento, sera entao escalonado.
Levando-se
em considera<;ao
aS
aspectos
citados
aeirna,
decidiu-se,
na
implementac;ao do prot6tipo, utilizar a segunda situaC;Elo citada, au seja, sempre que
um thread voltar do estado de espera ele vai para a fila de prontos para que em
seguida,
escalonado
casa tenha maior prioridade
imediatamente.
que
0
thread que estava
executando,
seja
92
7 ESTRATEGIA
PARA DESENVOLVIMENTO
Metodologia
adotada
DO PROTOTIPO
para a solu9ao do problema
abordado
na monografia.
7.1 PROBLEMA
Urn
sistema
complexos
que
processos
e threads,
comum
que
desse
realizam,
mais
aplic8C;c30 que
urn papel
esta sendo
vita is como
de
muitos
gerenciamento
de
perifericos. E
e
conceitos
tome
0
que auxiliem na aquisi980
processo.
0 conhecimento
mais eficazes
0
e saida
desses
nesse
no desenvolvimento
para aplic8c;oes
serie de procedimentos
uma
de entrada
relevante
desenvolvida,
pode auxiliar bastante
dos recursos
fun90es
dispositivos
de abstraC;80
tenham
aplic8C;80, contribuindo
Dependendo
profunda
e na otimiz8yao
e urn melhor
do
da
sistema
do c6digo da
aproveitamento
computacionais.
7.2 SOLuC;Ao
PROPOSTA
A solU9ao proposta
apresenta
Qutras,
por
arduD, fazendo com que ferramentas
conhecimento
operacional
entre
mem6ria,
a necessidade
aprendizado
e composto
operacional
a gerencia
o simulador
foi
0
de processos
apresenta
.". 0 processo
desenvolvimento
realizada
as seguintes
e sua estrutura
.". 0 thread e sua estrutura;
./
Escalonamento
de threads;
de urn simulador
(prot6tipo)
no Microsoft Windows 2000.
funcionalidades:
(cria9ao do processo,
BCP, recursos);
que
93
./
Filas de escalonamento
com definic;ao
de prioridade
base e prioridade
relativa;
./
Personaliz8C;ElO
de instruc;oes
que sera.a executadas
pelos threads;
./ Acompanhamento dos detalhes dos processos e threads (como BCP,
instru,30 executada no momento, Quantum,
Sincroniz8y8.0
./
7.2.1 Linguagem
de ProgramaQao
Microsoft
para abordar
no mercado
mundial
loi completamente remodelada pela
que
todos as conceitos de orientac;ao
de aplic8c;oes
1.1)
2003 (.Net Framework
Linguagem de programa,30
desenvolvimento
atraves da utiliz8C;8.0 de semaForos.
de recursos
Visual Basic.Net
• Microsoft
Recursos utilizados);
dinamicas
de desenvolvimento
e interativas
a objetos,
dentro
permitindo
dos padr6es
0
usados
de softwares.
7.2.2 Metodologia
• UML (Unified
Esta
Modeling
metodologia
desenvolvimento
de aplicac;oes
foi
Language)
selecionada
orientadas
par
a objetos.
ser
totalmente
voltada
aD
94
7.2.3 Banco de Dados
• Microsoft
SQL Server 2000
Esse Gerenciador
de banco de dados
as recursos necessarios para
exemplo,
stored procedures.
0
foi selecionado
por apresentar
todos
desenvolvimento do prot6tipo em questao, como por
95
8 DOCUMENTA<;;AO
Para
Simulator)
a
DO PROTOTIPO
constru9ao
modulariza980
e orienta980
Visual Basic.NET,
os projetos
do
prot6tipo
(Windows Operating System
WOSS
nesse projeto de graduayc30 foram utilizados
apresentado
que sao
a objetos.
0 prot6tipo
e composto
lubon Explorer
~
~
(9 projects)
IDl WOSS_D!t.!lACCess
:r
&1 WQSS_Oispatdle:r
~WOSS_In5truc:oes
1:
~WOSS_Processos
~ WOSS_Recurso5
l§;iI~~9}~~~Ff~~
1:
~ W05S_TlpoRecurso
~Setup
FIGURA
par nove projetos
no
agrupados em uma unica SOIUc;:c30. A figura 16 apresenta
que fazem parte da SolU980 WOSS:
!(il, SolutJon WOSS'
WI WOSS
conceitos de
16: Os projetos
que formam
0 prot6tipo
96
Gada
projeto possui seus respectivos formularios e classes, de acordo com
a func;:ao especifica de cada urn.
A figura 17 apresenta a estrutura de formularios e classes do projeto
WOSS_Dispatcher:
:E i1l Bl rg,
-~
E
_
Solution WOSS' (9
proJ&tS)
@W05S
~
\liOSS_DataAccess
:§l WOSS_Dispctcher
~
r!2JRe:ferences
El Assemblylnfo.vb
El d!£'F:fu,·Hi'ld
[3 frmDetalhl!sExeOJ(i!o.vb
~
frmEscalonador.vb
B frmResumoExecucao.
+'
@
WOSS_lnstru(oI!S
~
WOSS_Processos
ViOSS_ReOJrsos
8P
~~JOSS_Reports
W
@
vb
V,jOS5_TipoRer:urso
i)setup
FIGURA 17: Estrutura do projeto WOSS_Dispatcher
o
projeto
WOSS_Dispatcher
possui
tres
formularios
clsDispatcher, que possui todos os metodos e fun,oes
escalonamento
de threads
do prototipo.
para
e
0
a
classe
controle de
97
Descri~ao
do modele
o
de dados
modelo
relacionadas
possuem
entre
todo
atualiza~5es
de dados do prot6tipo
do prot6tipo
sL Ah§m disso,
c6digo
0
e composto
existem
e
sql que
tambem
respons8vel
por 13 tabelas,
61 Stored
par
que estao
Procedures,
insen;:6es,
que
remoc;oes
e
no banco de dados.
Os seguintes
Tb_Processo:
A tabela tb_Processo
os processos,
qual
estao definidos:
relacionamentos
ele
como par exemplo,
pertence,
data
possui lodas as informac;6es sobre
a cia sse de prioridade base e relativa
e hara
da criac;ao do
informac;oes.
Esta tabela
possui relacionamentos
as
tb_Thread
e
tabelas
relacionamento
de
processo
de um para muitos com
tb_BCP _Processo_Thread,
muitos
para
um
tb_Mapeamento_Prioridade.
Esses
processo
e, consequentemente,
pode ter n threads,
a
e Qutras
e
tambem
com
relacionamentos
a
indicam
urn
tabela
que cad a
cada processo estara
relacionado a n BCPs. Alem disso, uma cia sse de prioridade e classe de
prioridade rei at iva podem estar associadas
Tb_Thread:
threads,
como
processo,
tabela
A tabela tb_Thread
0
a prioridade
estado
possui
do thread
tb_BCP _Processo_Thread,
Tb_BCP _Processo_
todas
as
Ib_Processo.
de
e atual
e outras
de
foram
sobre os
herdadas
muitos
com
as
do
Esta
tabelas
e tb_Thread_lnstrucao;
A tabela tb_BCP _Processo_ Thread possui
de contexto
muitos
que
informac;:6es adicionais.
urn para
tb_ Thread_Recurso
Thread:
informa~5es
relacionamentos
base
relacionamentos
a n processos.
possui todas as informa~5es
para
dos
threads.
um com
as
Esta
tabelas
tabela
possui
tb_ Thread
e
98
Tb_Thread_Recurso:
recursos
que
estao
relacionamentos
tb_Recurso
de
A tabela tb_Thread_Recurso possui todos os
associ ados
muitos
a
para
e um relacionamento
cada
um
thread.
com
Esta
a
tabela
tabela
passui
tb_Thread
e
de muitos para muitos com a tabela
tbJila_Recurso;
Tb_Fila_Recurso: A tabela tb_Fila_Recurso possui as informal'oes de
recursos
bloqueados
relacionamento
par
semaforos.
Esta
tabela
passui
um
de muitos para muitos com a tabela tb_ Thread_Recurso;
Tb_Thread_lnstrucao:
A tabela tb_Thread_lnstrucao possui todos as
instruc;oes que estao associadas a cad a thread
criado.
relacionamentos
as
de
muitos
para
um
com
Esta tabela
tabelas
passui
tb_ Thread
e
tb_lnstrucao;
Tb_Recurso:
A tabela
tb_Recurso
passui todas as informa90es
sao definidos de acordo com um tipo
recursos do prototipo. Os recursos
de recurso e pod em ser recursos
de rede,
outros. Esta tabela possui um relacionamento
tabela tb_Thread_Recurso
dos
e um relacionamento
som, disco, semaforos
e
de um para muitos com a
de muitos para um com
a tabela tb_Tipo_Recurso;
Tb_Tipo_Recurso:
informa90es
A
tabela
tb_Tipo_Recurso
possui
todas
as
de tipos de recursos do prot6tipo. Esta tabela possui um
relacionamento
de um para muitos com a tabela tb_Recurso;
Tb_lnstrucao:
A tabela tbJnstrucao possui todas as informal'oes de
instru90es do prot6tipo, como
0
c6digo da instru9ao e
0
numero de ciclos
de clock da instru,ao. Esta tabela possui um relacionamento de um para
muitos com a tabela tb_ThreadJnstrucao;
99
Tb_Classe_Prioridade:
A tabela tb_Class8_Prioridade
possui todas as
informa,oes de classes de prioridades do Windows 2000. Esta tabela
possui
urn
relacionamento
de
urn
para
muitos
com
a
tabela
tb_Mapeamento_Prioridade;
Tb_Prioridade_Relativa:
as
informag6es
de
A tabela tb_Prioridade_Relativa possui todas
prioridades
de
relacionamento
um
relativas.
para
Esta
muitos
tabela
possui
com
a
urn
tabela
tb_Mapeamento_Prioridade;
Tb_Mapeamento_Prioridade:
A
tabela
tb_Mapeamento_Prioridade
possui todas as informac;6es de relagEio entre classe
classe de prioridade relativa, como a prioridade
cad a combinagao
muitos
para
de classes.
urn
tb_Class8_Prioridade
com
Esta tabela
as
e tambem
tabelas
de prioridade
e
numerica do kernel para
possui relacionamentos
th_Prioridade_Relativa
urn relacionamento
de
e
de urn para muito
com a tabela tb_Processo;
Tb_Tarefas_SO: A tabela tb_Tarefas_SO possui todas as informa,oes
de tarefas do sistema operacional
durante a simulac;ao, como
de trocas de contexto
e outras informac;oes.
nenhum relacionamento
com outras tabelas do prot6tipo.
Descrit;ao
de alguns
conceitos
utilizados
Esta tabela
0
numero
nao
possui
no prot6tipo
o prot6tipo desenvolvido nesse projeto de gradua,ao utiliza os seguintes
conceitos e faz as seguintes compara9oes
Instrut;6es:
com situac;oes do mundo real:
as instruc;6es definidas no prot6tipo utilizam
0
cicio de clock
como unidade de tempo e tem 0 objetivo de simular uma instru,ao
100
assembly. As instruyoes
sao utilizadas
para
formar
a Hnha de execu9c3o
de um thread;
Recursos:
simular
0 conceito de recurso utilizado no prot6tipo
uma opera,ao
unidades
definida
a cada
de /10. A unidade
segundo
para urn recurso
decorrido,
de tempo
au seja,
tern 0 objetivo de
utilizada
cada
contabiliza
unidade
de tempo
333 milissegundos,
tern aproximadamente
3
em
uma escala de tempo real;
Semiltoros: 0 conceito de semaforo
y
no prot6tipo tern 0 objetivo
utilizado
de simular a sincroniz8 ao
de threads
alguma area
No casa especifico
compartilhada.
compartilhadas
exemple,
Icram
implementadas
a leitura de urn arquivo
Processos:
sao definidos
no sistema operacional
quando
com
e
necessaria
acessar
do prot6tipo, as areas
recursos
de /10,
como
par
em disco;
com base na estrutura
de processos
Windows 2000. Urn processo
utilizados
pode passuir de 1 a
n threads;
Threads:
sao definidos
sistema
passuir
operacional
com base
Windows
uma linha de execut;ao
na estrutura
2000.
que
Um
de threads
thread,
e formada
no
utilizados
prot6tipo,
por 1 a n recursos
no
deve
e
I ou
instru96es.
Escalonamento
Para
seguintes
0
m6dulo
de escalonamento,
foram
utilizados
alguns
timers que tern as
funt;6es:
esse timer
e disparado,
a cad a 150 milissegundos
e chama
Timer do cicio
prot6tipo,
de clock:
per pad rae definide
um metoda
que
no
faz a
101
contabilizac;:ao dos ciclos de
clock executados de cada instruC(8o. Allam
disso, cad a vez que esse metoda e executado e verificado
terminou
a instruC;80
execU/;:ao e tambem S8 e necessaria fazer alguma
a sua
preempc;ao.
S8
Casa a instruc;ao
tenha terminado,
a proxima
instrury80
e
carregada ou caso a inslruyao seja a ultima do thread, ocorre uma lroca
de contexto;
Timer
do Balance
Set Manager:
esse limer e disparado a cada 10.000
milissegundos no prot6tipo e verifica
S8
existem
threads
mais de 300 ticks de clock na fila de prontos sem executar.
2000,
Timer
0
Balance
que estao a
No Windows
execula a cada segundo;
Set Manager
e
de 110: esse limer
disparado a cada segundo e faz a
contabiliza9ao dos threads que eslao simulando 110 no prol6tipo. Apesar
de
0
gerenciamento
implementar
de liD
urn metoda
opera9ao de 110, para que
determinado
naD ser
0
foeo deste projeto, foi necessario
que determinasse
0
thread
urn tempo limite para uma
saia do eslado de espera em um
momento. Em uma SitU8980
real de
110,
e0
dispositiv~ em
questao que informa, atrav8s de uma interruP98o, quando a opera98o foi
finalizada.
A figura 18 apresenta a arquitetura do Windows 2000, de forma resumida, e
as partes da arquitetura que est80 inseridas no prot6tipo:
102
Modo
u5uario
Modo
GMem:ia&'v,
Pmc(Jssosa
kernel
de
{/Imads
I
Hardware
Abstraction
Kernel.
GerenaiHior
de Proc8ssos
B Threads
es:a no 1Nindo\ll52000 Executrm e 5U35
prilTcipilisluno;oes5JIo,irnulad;,rspeIQ
;,:rol01ipt)
I
Laye'>r~L)
CCr1~I~le
fun~s
qU8
fundamen;ais,
de
thread,
em UII1 U.llllur1!u
fornscem
como
U!l
mec.'1nismos
0 escalonamen:o
e servio;o, de
sir\~ronil.aydo,
Opml(}lifX)$irflula$UiISprir'tipolis
rU/1(':~s
FIGURA
RUSSINOVICH,
18: A arquitetura
do Windows
2000 e
0
prot6tipo
(SOLOMON,
2000).
8.1 MODELO
ENTIDADE
A figura 19 apresenta
0
RELACIONAMENTO
modele entidade relacionamento
do prot6tipo:
103
PK~
proc_$ralusS ••
ld,l
proc_Oat:>Ho/JC,iaC30
p,oc_DaIllHoraTe,mlr\O
flI'OC_P1ano
PK
1
ellw_PrioridadeBase
"ttv_o.ltaHOtilCriatoIo
(!1Iw'_PriarI(IadeAlu$l
IlI/w_Esl.ldo
IItht_Tlpo
IIt1>t_NlOrdemEsptlf8
::=~~'~~:~:rmlnO
I-I
PK
!..!!..!..!ll!W
ta'_Oescricao
!.1'_D31:1Hot3IrOc:io
L,,_DQ1:1Ho1aFim
13'_TempoTOlai
1/I,_N,1I11f11
1a,_Tamanl>oOuan\l.m
ta,_P,ocNotI\f
1II'_P,ocOodl;
ta'_l.!emone
FIGURA
bqI_lnIdoExecucao
bc:pJOonE.&aIC8O
bcp_EsUMIoPfoolo
bcp_Pr&ernpcao
bcp_NtOrdem
bq>_TlcQClock
bc:p_B¥;II,c.eSelManaget
Jx;p_I~stanloChegad"
bcp_OUantumAt
•.•••
'
bq>_Est.!doEs",",a
b<:p rtmjKlP,Gnlo
19: 0 modele Entidade-relacionamento
do prot6tipo.
Ipl! 10TlpoR.cUfSO
104
8.2 CASaS DE usa
Documenta9iio
UML de todos os casos de uso do prot6tipo.
8.2.1 Caso de Uso - Instru90es
Delinif tempo do
execuclio
Altorarins!~
f-------(
PesquiS<J'
Ir.siru~50
Excluirlns~~
1.
Usuario
insere a instruvao
2. Usuario
informa
3.
Usuario
pesquisa instruc;ao.
4.
Usuario
altera instruy<3o.
5. Usuario
0
desejada.
tempo de execu9ao
exclui instruyao.
da instru9ao.
105
8.2.2 Caso de Uso - Recursos
AI:erar Recurso
Exc/uir Recurso
1. Usuario insere
0
recurso desejado.
pesquisa recurSD.
2.
Usuario
3.
Usuario altera recurso.
4.
Usuario exc[ui recurso.
106
8.2.3 Case de Use - Tipes de Recursos
AtlemrTipode
RecllI!io
ExclulrTipode
Recurso
1. Usuario
insere
2.
pesquisa
Usuario
0
tipo de recurso desejado.
tipo de recurso.
3. Usuario altera tipo de recurso.
4.
Usuario
exclui tipo de recurso.
107
8.2.4 Caso de Uso - Processos
1. Usuario
I Threads
cria novo processo.
2. Usuario define cia sse de
prioridacte do processo.
3.
Usuario cria novo thread
(vinculado
4.
Usuario
define
58 0
thread
aD
ira executar
processo
recem-criado).
em primeiro
au segundo
plano.
5. Usuario define se 0 thread sera I/O bound ou CPU bound.
a.
Thread CPU
Bound:
execuy80 composta par
minima de 10.1%
instruc;:oes e no maximo de 89.9%
da linha de execuC;8o composta
b.
da linha de
par recursos
de
1/0.
Thread I/O Bound: minima de 90% da linha de execu,ao
composta
de execu980
per recursos de 110 e maximo
composta
de 10%
da linha
par instruc;:6es.
6. Usuario define a linha de execu,ao do thread (instru,oes e recursos).
108
8.2.5 Caso de Uso - Dispatcher
N!erilrpriorid(lde
do\hrei;ld
Usutlrio
1. Escalonador recupera filas de pronto
2. Escalonador
seleciona
thread para execu,ao.
3. Escalonador recupera thread selecionado.
4. Escalonador
escalona
thread.
5. Usuario altera prioridade
do thread.
6. Escalonador contrala execu9ao
7. Escalonador
atualiza
do thread.
as estatisticas
de execuyao.
109
8.3 DIAGRAMAS
Documental'ao
DE CLASSE
UML de todas as classes
8.3.1 Diagrama
utilizadas
no prot6tipo.
de classe - Dispatcher
clsOispatcher
+mRodando:
Boolean
+mlDThread : Boolean
+mlDProximoThread
: Integer
+mPrioridadeAlualThread
: Short = 0
+mTempoTotalitem:
(nleger
0
+mNrOrdem : Integer
0
+mTempoExeculado
: Integer
0
+mQuantumUsado
: Byte = 0
+mNrTrocasConlexlo
: Integer
0
+mTempoTrocaContexto
: long = 0
+mlnicioEscalonador:
Dale
+mFimEscalonador
: Dale
mlnicioTrocaContexlo
: Dale
mFimTrocaContexto
: Dale
+mProcNome:
Siring
+mProcClock:
Integer
+mMemoria : Decimal
mEsladoThread
: Byte
0
mQuantum : Byte
mPsPrioritySeparation
: Byte
=
=
=
=
=
+AlualizarPrioridadeThread(in
pinUDThread:
Integer, in pbytlDClassePrioridade:
Byte)
+BalanceSelManagerO
: Boolean
BalanceSeIManager_DobraQuantum(in
pintiDThread:
Inleger): Boolean
Carrega8CP(in
pintlDThread : Inleger) : <unspecified>
+ConlabilizaTempolOO
: Boolean
+ConlabilizaThread(ln
pbylQuanlum
: Byle)
DecremenlaPrioridadeCPUBound(in
pinliDThre<ld : Integer)
GravaBCP(in pinllDThread:
Inleger, in pblnPreempcao:
Boolean)
+GravarTarefasSO_ TCO
InsereFilaRecurso(in
pinllDRecurso:
Inleger. in pinUDThread:
Integer)
+MostrarltemExecucaoO
+RecuperarSemaforos()
: Object
+RecuperarThreadExecO:
Object
+"RecuperarThreadsEsperaO
: Object
+RecuperarThreadsProntosO
: Object
RecuperaThreadFilaRecursos(in
pintlDRecurso
: Integer) : Integer
RemoveFilaRecurso{ln
pintlDRecurso
: Integer, In pintiDThread : Integer)
SelecionaProximollemExecucaoO
SelecionaThreadExecucao(in
pdtFilas : Object) : Inleger
SessaoCrilica_DesligaSemaroro{in
pinllORecurso:
Inleger)
SessaoCrilica_ VerificaSemaforo(in
intiORecurso : Inleger, in inllDThread : Inleger) , Boolean
TicksClockThreadsPronlosO
+TrocaContexto(in
pobjNovoEstado:
Object. in pblnPreempcao:
Boolean)
+VerificaPreempcaoThread(in
pdtFilas : Object)
ZeraTicksClock(in
pintlDThread : Integer)
+ContabilizaCicloClock(in
plnlTempoCiC!oClock
: Integer, in pintTickCfock : Inleger, In pbytOuantum
OuantumFinalizado()
: Byte)
110
8.3.2 Diagrama de cia sse - Processos
mlOPfooo:>so:
Integer
III1DC1llssePriofidiloo:9yte
rnlDClassePrloridadeRela:Iva:BytD
mStalusSaida:Char
mOa!i:lHor.!Criacao:Oatll
mDa:;!HoraTemiroo:
Oa:e
rnNroPriOfil!atleKemel
: Oyle
rnPlanO:Char
'Alua~zaPlanoProces5O(in
pintlDTtread:
Integer, in pchrPlano: Char)
.1~rifPl'oce5SO(iI'I
pby1IDCPrty: 6y:e, In pby'JOCPrt-jReI: Oy!e.ln p!JyINroPrtyKemel:
.Rec;upernrPl3noE1.eOJC8Q(in
pir.UDTtlfead:
Ir.leger):
Char
B~1e, inpchfPlil"lO:
CNlr,ln
pslfTipo:
Siring);
Object
8.3.3 Diagrama de classe - Threads
clsTIlreads
mlDThread:
Integer
mlDProcesso:
Integer
mPrioridadeBase
: Byte
mPrioridadMlual
: Byte
mEstado:By;:e
mTIpo:Slrirtg
mMolivcEspera
: Byte
mStalusSaida
:
mlnk::ioExeClJC<lo:
enDr
Oat9
mHoraTermino: Dale
tmNovoThfeadPronlo:
Boolean
+AtualizaEsladoProcesso(in
plntlOPro::esso:
IAlualizaEstadoThread(in
pintiOThread:
'AtualizarTe~eClJrso(in
I
pinUOThread
DefinirSlall1sSaidaThrem!(in
Exc;ll)ittemExecucaoQn
pintJDThreild
pinUOTlvead;
tnserir[ns!JUC3oThread(in
ttnserirRecursoThtoad(in
IlnserirThread(in
I
Integer, in pobjEstado:
Obtect)
Integer, In pobjEstado: Object)
: Integer. in pintiDRecurso:
Integer,
: Integer,
Integer.
plntJDTlvead
pinttDThroild:
pinUOProcesso:
MontarlinhaExecucao(in
tRecuperaClassePriQridadeTlv"ead(in
Inleger,
Integer.
inUDThread
in pchrStatusSaitia
in pinIiDl:em:
: Integer.
In pintlDRocurso:
pintiDThread:
:
pinK)nlem:
Inlegef'.
Integer,
in pinlTempo:
in ps:rTipo:
String)
Ir\leger)
tnteqor)
in pbytNroPrioridadeKemet:
: Integer)
in ptntNrOn!em:
: Char)
lr.tegef,ln
in plnt1Dlnstrucao:
Byte,
in pslrTipo,
String):
tnteger
Object
Integer):
B~>\e
tRecupEM'atOfdemEl«!CUcao(in plnUOThread: [nleger): Integer
8.3.4 Diagrama de classe - Instru90es
clsJnstrucoes
mCodigolnstrucao
mTempolnstrucao:
+mTipoOperacao
tManuUnstrucao(in
: String
tnteger
: Byte
imlDlnstrucao:
Inlegec-,
in sltCodiQolnstrucao:
String.
in intTempo!nstrut::aO:
Integer)
Integer)
III
8.3.5 Diagrama
de classe - Recursos
clsRccursos
mlORecurso
: Inleger
mNomeRewrso: String
mTipoRecurso: Shot1
mSemaforo : Boolean
+mTi;>oOp02racao:E!yte
'ManutRecurso(in intJDRecur50: Integer. in slrNomeRecurso:
8.3.6 Diagrama
String. in
shtnpoRecurso:
Short, in blnSemaforo:
Boolean)
de classe - Tipo Recursos
tlsT1poRecurso
mlOTipoRecurso: Short
mNomeTipoRecurso: Siring
mFatorJllcremento: Short
I mTipoOperacao
: Byte
C(!m~gaCornbo(il1 objComboBoJO;: Object)
ManutTipoRecurso(in pshtlDTi;xlRerurso:
Short. in pslrNomeTipoRecurso:
8.3.7 Diagrama
S!1ing. in p-shIFalor)ncrennmlo:
Short)
de classe - Prioridades
clsPrioridildes
tCarregaComboClassePriOfidade(in
objCombo : Objec.l)
'CmrogaComboPrioridadeRelaliv3(in
objCornbo: Object)
Re!otnaPnoridadeNurnerica
Kernel(!" pshtiDClassePrlorlt!aU9:
Sh¢rl,ln pshHDPriarid,uJeRela\iva
8.3.8 Diagrama de classe - Acesso a Dados
clsD.ll.:IAccess
lot:jCoonSOl : Obje~
~:~~:eo~~~MD(}
I ExoClJtaQuery(!n pconnSOL: Object. In psllQuery: String)
I ExecutaOuefLRe!omaDataSet(in
pconnSOL : Object, in pstrQuery : String): Object
EKetutaOuefY_Re:omaDataTable(in pconnSOl:
Obie<:t. in pstrOuery: Siring): Object
~EltecutaQuery_RetomaVarO+'(in pconnSQL:
Object, bl pstfQuery: Strirl9): Object
ShOll): ShOl'I
112
8.4 TESTES E VALlDAc;:Ao
Para a fase de testes e vatida9ao
massa
de dados
caracteristicas.
espeeifica
para
do prot6tipo
os testes
Assim, varias situa~6es
que
desenvolvido,
possui
foi utilizada
threads
com
uma
diversas
puderam ser testadas no simulador.
8.4.1 Descri9ao dos padr6es de threads e processos
utilizados
nos testes
Foram
utilizados
tres
arquivos
.sql,
os
quais
possuem
as
seguintes
defini90es:
Arquivo
o
Proc_5Thread_IO_prty_8.sql
arquivo
prioridade Normal
threads
citado aeirna faz
uma carga
de urn proeesso
e classe de prioridade relativa Normal.
110 bound,
cad a thread
com
6 recursos,
0 processo
os
quais
da cia sse
e criado
estao
de
com 5
incluidos
3
da classe
de
semaforos.
Arquivo
o
Proc_5Thread_CPU_prtL8.sql
arquivo
priori dade Normal
citado aeirna faz
urna carga
e cia sse de prioridade relativa Normal.
threads CPU bound, cada thread com 3 instru90es
Arquivo
o
Proc_1 OThread_ CPU _prtL
arquivo
priori dade Above
de urn processo
citado aeirna faz
Normal
0 processo
e criado
com 5
e 2 recursos.
1O.sql
urna carga
de urn processo
e classe de prioridade relativa Normal.
da classe
0 processo
de
e criado
113
com 10 threads
CPU bound,
cada thread com 5 itens de execu,ao (recursos e
instru,oes).
8.4.2 Descrigao dos testes
Foram
realizados
testes utilizancto-se
as arquivos
citados
anteriormente,
sendo que para cada teste foram utilizados entre 50 e 500 threads
com diversas
combinac;6es dos arquivos acima. Tectos as testes realizados desde as primeiras
vers6es do prot6tipo fcram feitos com a mesma massa de testes.
Os
arquivos
que
geram
modelados com a preocupac;ao
as
massas
de
dados
para
os testes
de que eles pudessem representar
0
foram
maior numera
possivel de possibilidades, para que a valida,ao de todas as funcionalidades do
prot6tipo
pudessem
ser feitas da forma mais confiavel
Todos os testes realizados
problemas
e as seguintes
passive!.
na versao final do prot6tipo naD apresentaram
funcionalidades
implementactas
no escalonador
fcram
validadas:
• Escalonamento de threads utilizando algoritmo do Windows 2000;
Incremento
sendo que
de prioridades
0
para threads
que retornam
incremento depende do tipo de 110 que
0
de urn /10,
thread
estava
executando;
•
Utitiza~ao de sematoros;
• Comportamento do BalanceSetManager,
• Execu,ao de instru,oes atraves da contabitiza,ao de cietos de CPU;
• Contabitiza,ao e contrale de fatias de tempo;
•
Altera980
de prioridade
de processos;
• Mudan,a do plano de execu,8o para foreground e background;
114
•
lnserc;:ao e manutenc;:ao de instrUl;:6es;
•
Inserc;:ao de processos
•
Insen;:ao e manutenC;:2Io
•
ImportaC;8o de threads atraves
•
SimulaC;:8o de diversas
e threads;
de recursos;
de execuc;:ao de arquivos
configurac;5es
inserindo
.sql;
parametros
na tela de
Configurac;oes;
•
Escalonamento
Windows
As figuras
prot6tipo.
conforme
regras
do
Windows
2000
Professional
e
que foram feitos
no
2000 Server.
20 a 25 ilustram
alguns
cenarios
de testes
115
-----------------------talbes da Ex:ecu~o
~"d
PrioridadeAtual
Status-
LJ22
11
Executando
Quantumatual
10
Tempo (ms)
Troca~Cont~o
34
1020
1IEI.~'i!Hm
319 ~~5
-fsc:r>lAFORO!
27/30
320
15
SEr-l.6.FORO 1
15/30
321
15
sEn.6.FoRo I
0/30
FIGURA
A
figura
20: Execu<;ao do escalonador.
20
apresenta
informagoes
atualizadas
escalonador
esta ativo. Atraves
estao
sabre
nas filas de pronto,
utilizados,
a instruyao
thread em execugao,
instrugao
atual.
a
tela
"Detalhes
a simulagao
dessa
as threads
que esta
tela e passivel
em espera,
sendo executada
como par exemplo,
da
0
execugao",
que esta sendo
numero
que
executada
acompanhar
os semaforos
mostra
quando
as threads
que estao
e Qutras informagoes
0
que
sendo
sabre
de ciclos de clock executados
0
da
116
FIGURA 21: Alterac;ao de prioridade de um processo.
A figura
21 apresenta
mostra informagoes
qual
0
resumidas sabre os threads.
estado atual do thread,
prioridade
0
definido
disponiveis
Windows
Atraves
sofrem
de urn processo,
S8 0
todos
e
quantum entre processos
no prot6tipo fica
de quantum
padrao
os
passivel
do plano de execuC;:8o 56
jil que com a configurac;ao
de
ver
cia sse de
for alterada,
alterac;ao), e tambem
que, par padrao
que
e passivel
atual, alterar a
prot6tipo estiver utilizando a configuray8o
2000 Professional,
do Simulador",
dessa tela
de prioridade
essa
background. As opc;oes para alterag80
Server nao existe diferen/fa
background.
(se a classe
ao processo
plano de execugao
como
da Execuc;ao
seu tipo, sua prioridade
0
a qual ele pertence
threads pertecentes
alterar
a tela "Resumo
estao
padrao do
do Windows
2000
foreground e processos
117
FIGURA 22: Altera~ao de prioridade - conlirma~ao.
A figura 22 mostra a tela de conlirma~ao
alterac;ao de
classe de prioridade.
classe de prioridade
de urn thread
processo sofrem essa alterac;ao.
Como
e
que aparece
quando
mencionado anteriormente,
alterada
no prot6tipo,
e leita
uma
quando
todos as threads
a
do
118
I Li5taThreads I
Detalhes
Linh.!Execuo;;!o
Thread
1iiIimII~~'a!tfii.
~
9
47
9
...1
-(I/O Bourld
CPU Boulld
48
ESPERA
Realtime
~
49
High
~
50
A.bovel'lormal
C
-:C:~C---1-:-------'
v ::;O~Va~lormal
83
::j
ESPERA
~
lO,/
~~
_;.g.im."
oISaaQround
I
FIGURA 23: Allera~ao do plano de execu~ao de urn processo.
A figura 23 apresenla as op~6es de allera~ao de plano de execu~ao de urn
processo.
0 simbolo
apresentado
plano de execuC;:flo
atual do thread
onde 0 batao direilo
do mouse
urn thread
threads
para foreground
do processo
urn processo
quando
processo
ocorre
esteja
sejam
selecionado
e pressionado).
do plano de execuc;:ao
(0 thread
A alterac;:ao
e
alterados.
em
Alem
de urn processo
ern foreground,
disso,
foreground
ele
0
em
indica
permite
urn dado
de
todos os
que apenas
momento,
se ja existir
para background.
0
pelo local
anteriormente,
prot6tipo
para foreground,
e passado
selecionado
do plano de execUI;ao
faz com que, como mencionado
executando
a mudanc;:a
executando
do lado esquerdo
assim,
urn outro
119
~rg)L8]
Configura~o do Ambiente
comportamento
i
(om 0 padrao do segulIlte
do Quantum de acorda
Slst]m,
opera Clonal
r.-
Microsoft Windows 2000 Server
I (:,
f'.1Icrosoft\Vindows 2000Professl0nal
-----
COnfigUra~Oes de execu~ao
Ciclos de dock particle: de Clock:
I
~S :
r~ I
2250 :
I
Intervalo dotickde clock (ms):
I
I
T,mp' d,,,p<,d'''"'''tp(~
lO±I
I
",), I
--~
COnfIQUra~OeSdOSlmUlador---- ------]
Tempo para ~!cutu cada cicio de dock{ms)
150
FIGURA
24: Definicao
A figura 24 apresenta
para definir as configurac;oes
definir
S8 0
Windows
simulador
2000
0
de confrguracao.
a tela de "Configurac6es
de execugao
executara
Professional
clock por tick de clock,
de parametros
com
ou Windows
intervalo
do Ambiente",
do prot6tipo.
a configurac;ao
2000
Server,
do tick de clock e
0
que
e utilizada
Atraves desta tela e passivel
de
quantum
a quantidade
padrao
do
de ciclos
de
tempo de cada traca contexto.
120
Alem dos testes descritos acima, foram feitas simulac;6es para comparar a
execuc;ao de uma massa de testes utilizando a configurac;ao do quantum
do
Windows 2000 Server e em seguida do Windows 2000 Professional. Eslas
simulac;5esforam feitas apenas com threads executando em background
e com as
configura,oes padroes do simulador, ou seja, 10 ciclos de clock par tick de clock e
inlervalo do lick de clock igual a 1500 milissegundos.
as resultados mostraram que a mesma massa de testes, quando executada
com a configura,ao de quantum do Windows 2000 Server, apresenlou urn
medio menor que a execuy80 com a configuray8o do Windows
turnaround
2000
Professional.
A figura 25 apresenta
0
relat6rio que ilustra
0
cenario citado anteriormente.
as threads de 1 a 5 foram executados com a configura98o de quantum do Windows
2000 Server, e os threads de 6 a 10 foram executados com a configura,ao de
quantum do Windows 2000 Professional.
Relat6rio
de Resumo da Execu~o
11/17/2004
tnicio~
Tumaround(ms)
FimE>::ec:u~
YipoT1lread
Tempo Exec:uo;;io(ms)
11117/2!XH
4:22:23PM
l1}t7/lOCH
4:2J;05I'M
'2,000
11,850
1l/1712~
4;22:29f'M
11/17/200'1
4:2J;2J.PM
",000
18,000
1l/17/2~
4:22:J4i'M
11/11/2004
4:2J:23PM
",000
11,850
11/1112004
4:22:46PM
1111712004
4:2J:38PM
75,000
11/17/200'1 4;z);IJPM
11117/2004
4:2J;'IBPH
85,000
Turnaround
medic>:
64,400,00
11,850
""
•.....
21.000
'4,550,00
11/17[2004
4:24;02PM
11/17/2001
4;2S:27PM
85,000
CPU ••••••
11,850
11J17/2«H
4;l<4;06PH
11/17/2004
4:25;)\PH
92,000
11/1712004
4;25:28JiH
0;,000
"""""
18,000
11/17/2004
4:2<i;13PM
11/1712004
4:24:19PM
11/1712004
4;24;25I'M
11117/2004
4:lS:29PM
11/11/2004
4;25:37PH
87,000
11,850
CPU ••••••
",000
11,850
21,000
TUl't\aroundmedio:
89,000.00
74,550.00
TtIrT\aIOundm6dio;
76,700.00
149,100.00
FIGURA 25: Compara,ao entre simula,oes de threads.
121
Os resultados
deste teste mostraram
de processos de urn sistema operacional
processos que executam
mais
rapido dos
extrema mente
altemanda
e
de escalonamento
fundamental
em segundo piano), priorizando, dessa forma,
mesmas,
importante
uma das diferengas
servidor (ende
e
de
favorecer
urn
sistema
operacional
as processos
0
termino
(ende
e
priorizando
a
cliente,
interabvQs).
favorecer
rapida entre processos (au threads), e, assirn, deixando mais evidente
pseudo-paralelismo.
0
122
9 CONClUsAo
Os resultados apresentados mostram que
para
0
estudo dos sistemas
software que demonstre
QU
e
de fundamental importancia
operacionais e suas estruturas a utilizac;:ao
simule as conceitos inerentes
de urn
a essas estruturas.
Na constru~ao do prot6tipo apresentado nesse projeto, muitos detalhes de
escalonamento fcram utilizados com
0
objetivo de deixar a simulac;ao
0
mais
proxima passivel de uma sitU8C;80 real e rornecer dados que podem ser utilizados
para a analise
do funcionamento
de todas
as estruturas
de escalonamento
do
sistema operacional Windows 2000.
A
versao inicial do prot6tipo utilizava apenas 0 quantum para contabilizar 0
tempo de execu~ao do thread. Na versao final, foi feita uma altera~ao na estrutura
de forma que
0
tempo de execuc;ao de uma instruyao passou a ser contabilizado
atraves de ciclos de clock. Essa mudanlf8 foi importante e contribuiu para que 0
prot6tipo apresentasse resultados mais confiaveis nas simular;;oes.
Os resultados dos testes tambem mostraram que e possivel utilizar
0
prot6tipo para entender diferen~as importantes do escalonamento de threads entre
as vers6es cliente e servidor do sistema operacional Windows 2000.
Essas conclusoes sao embasadas
em testes que foram realizados
utilizando-se diversas situar;;oese threads com caracterfsticas variadas.
Sugest6es para trabalhos futuros:
• Implementar;;ao do gerenciamento
de
processos utilizando as
estruturas de outros sistemas operacionais como Unix ou Linux;
123
Implementa<;ao
do gerenciamento
110 do sistema operacionai
•
Implementa<;ao
do
Windows
gerenciamento
de mem6ria
e gerenciamento
de
2000;
de
mem6ria
e
I/O
de
Qutros
sistemas operacionais;
• Atua1iza<;aodo prot6tipo para simular
do Windows
2003 e Windows
XP.
0
gerenciamento de processos
124
GLossARIO
API
BCP
CISC
CMS
CP/CMS
CPU
CSRSS
DLL
FIFO
GB
GDI
HAL
HKLM
I/O
IBM
ID
Kmode
Kernel
MB
MIPS
MIT
MS-DOS
OS/2
OS/360
PCB
PEB
POSIX
prty
Regis/rador
Regis/rador
RISC
SJF
SMP
SOL
TEB
Thread
TSS/360
UML
VAD
VM/370
Win32
PC
SP
Application Program Interface
Bloco de Controle de Processo
Complex Instruction Set Computers
Conversational
Monitor System
Control Program/Cambridge
Monitor System
Central Processing Unit
ClienUServer Runtime Server Subsystem
Dynamic Link Library
First In First Out
Gigabytes
Graphic Device Interface
Hardware Abstraction Layer
Hkey Local Machine
InpuUOutput
International
Business Machines
Identification
Kernel Mode
Nuc!eo do sistema operacional
Megabyte
Million Instructions per Second
Massachusetts
Institute of Technology
Microsoft Disk Operating System
Operating System/2
Operating System/360
Process Control Block
Process Environment
Block
Portable Operating System Interface
Priority
Registrador Program Counter
Registrador Stack Pointer
Reduced Instruction Set Computers
Shortest Job First
SymmetriC Multiprocessing
Structured Query Language
Thread Environment Block
Unidade de execu9ao de c6digo no sistema
Time Sharing System/360
Unified Modeling Language
Virtual Address Descriptor
Virtual Machine/370
Windows 32 bits
operacional
125
REFERENCIAS
BROWN,
Brian.
Operaling
Syslems
Inlroduclion.
hltp:/Iwww.ibilce.unesp.br/courseware/opsys/os03.htm.
1995-2000.
Disponivel
em:
Acesso em: 11 abr. 2004.
CALLARI,
Franco. Operaling
Syslems
Class Home Page. 1996.
http://www.cim.mcgill.cal-francoIOpSys-304-427/lecture-notes/node7.html.
em: 11 abr. 2004.
MACHADO,
Francis B., MAlA, Luiz P. Arquitetura
Terceira Edi,ao. Ed. TIC, Sao Paulo, SP: 2002.
Disponivel
em:
Acesso
de Sistemas Operacionais.
SILBERSCHATZ,
Abraham, GALVIN, Peter Baer, GAGNE, Greg. Operating
Concepts. Sixth Edilion. John Wiley & SONS, INC, New York, NY: 2003.
SILBERSCHATZ,
Abraham,
GALVIN,
System
Peter, GAGNE, Greg. Sistemas Operacionais,
Ed. Campus. Rio de Janeiro - RJ: 2000.
Conceitos e Aplica,i5es. Primeira Edi,ao.
SOLOMON,
David A., RUSSINOVICH,
Mark.
Edition. Microsoft Press, Redmond, WA: 2000.
Inside Microsoft Windows 2000. Third
SOUZA, Giulliana Martins de, MONTAGNA,
Dalmir, COELHO, Gustavo Gon,alves.
Escalonamento
de
Processos
no
Windows 2000. In: ENCONTRO
DE
INFORMATICA
DE CAMPO LARGO, 2, 2003, Campo Largo - PR.
STALLINGS,
William. Operating
Edition. Prentice Hall: 2000.
TANENBAUM,
Jersey: 1995.
Andrew
TANENBAUM,
Andrew
S.
S.
Systems: Internals and DeSign Principles. Fourth
Distributed Operating Systems. Prenlice-Hall,
Modern Operating Systems. Prentice Hall: 2001.
TANENBAUM,
Andrew S. Sistemas Operacionais
Prentice-Hall do Brasil, Rio de Janeiro, RJ: 1992.
TANENBAUM,
Andrew
S, WOODHULL,
Albert S.
Bookman, Porto Alegre,
implementa,ao. 2' Edi,ao.
Inc, New
Modemos. Primeira
Edi,ao.
Ed.
Sistemas Operacionais: projeto e
RS: 2000.
126
APENDICES
1 MANUAL
DO USUARIO
Apresentayao
Objetivo
Demonstrar
operacional
0
Microsoft
funcionamento
Windows
do gerenciamento
de processos
do sistema
2000.
Conceito
o
orientada
software
foi desenvolvido
a objetos,
visando
o curso de gradua9ao
Oescric;ao
o
para bacharel
uma linguagem
dos conceitos
em Sistemas
de programav8o
e praticas
aprendidos
visual
durante
de Informa9ao.
Gera)
software foi desenvolvido
alguns conceitos da gerencia
muitas vezes sao extremamente
te6ricos.
em
a aplic8980
com
0
de processos
dificeis de
intuito de tacilitar a compreensao
em sistemas
S8
compreender
operacionais,
apenas
de
as quais
por conceitos
127
Entradas
do sistema
Convenyoes
Barras
de Ferramentas:
V
Prepara
~
Grava as dados da inclusao/alteravao
~
Abre a tela que lista as registros
~
Exclui a registro
a tela para a inclusao
de urn novo registro
de urn registro
gravados
atua!
Menu do sistema
Nesta tela
sao descritos
0
abaixo:
usuario tera acesso
a todas
as oP90es
do sistema.
as
menus
128
o
Arquivo
Reinicializar
configura~6es
configura90es
do ambiente
(Clrl+N)
do sistema
Reinicia
as
para as configura90es
padrao.
Abrir (Clrl+A) - Permite ao usuario localizar e selecionar um
arquivo no qual ele tenha gravado as configura,oes do sistema
anteriormente.
Salvar (Ctrl+S) - Permite ao usuario definir a caminho e a nome
do arquivo ande serao gravadas
as configura90es
do ambiente
do sistema.
Configurar (Ctrl+G) - Abre a lela de configura,oes do sistema.
o Modulos
Manuten,ao de Instru,oes - Acessa a tela de manuten,ao das
inslru,oes que serao "executadas" pelos threads definidos pelo
usuario.
Manuten,ao de Recursos - Acessa a tela de manuten,ao dos
recursos que serao "acessados" pelos threads definidos pelo
usuario.
Manuten,ao
manutem;ao
de Tipos de Recurso -
Acessa a tela de
dos tipos de recursos que serao utilizados
pelos
Ihreads.
Processos
e Threads
OS processos
e
Escalonamento
- Acessa
a tela ande
0
usuario
ira definir
threads que serao executados pelo sistema.
-
Acessa
a
tela
ande
0
usuario
podera
.acompanhara escalonamento dos threads por ele definidos.
129
Executar
arquivo
SOL - Permite
aD
usuario
executar
urn script
de banco de dados pela interface do sistema, dessa forma,
e
posslvel importar processos e threads. 0 arquivo sql deve estar
de acordo
com a estrutura
dos arquivos
.sql que sao co pi ados
no diret6rio do prol61ipodurante a instala,ao.
o
Relat6rios
Relat6rio
intervalo
com
de Resumo
de tempo que
- Acessa
a tela ande
sera compreendido
0
usuario define
para gerar
0
0
relat6rio
0 resumo da execUI;ao do sirnulador.
Relat6rio
de Detalhes
- Acessa
a tela cnde
0
usuario seleciona
qual a simula,ao que ele deseja conhecer os delalhes da
mesma.
130
Configurayoes
do sistema
~§
onfigurllF;lio do Amblentc
compo.
rt.mento do Quantum de.corda
(om"
padrio do seguinte
sistema
", ••do",'
• ~'Icrosoft
\·r.ndows~OOO
I
5er~er
~\icrcsoflWindowslOOOProfession.1
'
Configurl<;oesdeuecu;io
Clciosdeclockportid<deClock:
I c::::::::::.B
Inte",.lo
dotickdedoc~(ms):
Tempo de tro,"decontexto(ms):
150
Esta tela
de. acesso as configurar;oes do sistema.
Comportamento
do Quantum
•
Microsoft Windows 2000 Server
•
Microsoft
Windows
2000 Professional
Configura goes de execugiio
•
Sao elas:
(Escalon ad or)
Ciclos de clock por tick de clock (quantidade)
•
Intervalo
•
Tempo
do tick de clock (em ms)
de troca de contexto
(em ms)
Configurac;6es do simulador
•
Tempo
de duragiio
esta gravado
localizado
de cada cicio de clock
no arquivo
no
WOSS.exe.config.
de
diret6rio
(em ms) - Este valor
configuragoes do aplicativo,
da
aplicac;:ao,
com
que esta
0
nome
131
Manuten«;ao
de Instru90es
-O'~OSd.lft$IlU"'''CddIQo(D•.•
ai~';odcComondc):
Ourlr;la(cidc.dodoct):
c=:::53
Nesta tela
urna instru~ao,
0
usuario
podera
incluir, alterar,
estas instruc;:6es serao utilizadas
consultar
pelo usuario
ou excluir
as dados
para definir
de
a estrutura
dos threads.
Os campos
C6digo:
da tela
E a descric;ao
t:
DuraC;8o:
quando
um recurso,
de ciclos
for selecionada
de clock
pelo sistema.
que devera
ser ocupada
para executar.
de Recursos
T'~~"~O"""""'""'O.
~[DiSCO
threads.
da instruc;ao que sera "executada"
a quantidade
esta instruyao
Manutenyao
Nesta tela
sao as seguintes:
0
~~.
...J
usuario
estes recursos
~'/o,c:
r
::i]
poden~~ incluir, alterar,
serao utilizados
consultar
pelo usuario
ou excluir
para definir
os dad as de
a estrutura
dos
132
AS campos
sao os seguintes:
da tela
Nome do Recurso:
Nome do recurso
que sera visualizado
na definigao
do
thread, bern como nas telas do escalonador.
Tipo do Recurso:
que devera
Define
0
ser realizado
na prioridade
do estado de espera para
Valor
do Semaforo:
utilizando
0
recurso
tipo do recurso
0
que definira
do thread
qual
quando
0
incremento
mesma
voltar
poderao
estar
0
estado de pronto.
Numero
maximo
de threads
que
simultaneamente.
Manuten~ao de Tipo de Recurso
""""",m"',, I
c::==.3
Nesta tela
0
usuario
urn tipo de recurso.
escalonador
realizar
podera
incluir, alterar,
Os tipos de recursos
0
incremento
consultar
sao utilizados
da prioridade
do thread
au excluir
os dados
como referencia
na mudang8
de
para
do estado
0
de
espera para pronto.
Os campos da tela sao os seguintes:
Nome
do
Tipo
apresentado
de
Recurso:
na lista "Tipo
Nome
do
do Recurso"
tipo
do
da tela
recurso
de
que
sera
manutenc;ao
de
na prioridade
do
recursos.
Fator
Incremento:
thread
quando
E
0
0 mesmo
tipo de recurso para
0
valor que sera incrementado
estiver retornando
estado de pronto.
do estado
de espera
por este
133
Processos
e Threads
CI•••• d.Qrio'id.de
:::J
Hf'I.
r
1110'•..••
1
-l:::"'' ' ' l
Pen:enlualCPU
Pecrcenlu<lli/O
c:==::::J c:==::::J
Nesta
"executados"
tela
0 usuario
Os campos
o
paden§. definir
as
procesSDs
e threads
que
serao
pelo sistema.
Classe
da tela sao os seguintes:
de prioridade:
E
a classe
de prioridade
a qual
0
thread
estara
referenciado.
o Prioridade Relativa: Eo a classe de prioridade relativa a qual
0
thread
estara referenciado.
o
Prioridade
Numerica
Kernel:
E 0 valor numerico
kernel, este valor e obtido atraves
com a prioridade
o Threads
relativa.
do cruzamento
da prioridade
mediante
da classe
de prioridade
0
134
o
Inserir
Thread:
Ap6s
thread
automaticamente
case queira adicionar
o
a
grav8<;:ao do processo,
(obrigat6rio).
mais threads
e criado
Pressione
ao processo
este
urn
batao
atua!.
Lista de Instru96es: Abre a tela com a lista de instru,oes
registradas atraves da tela de manuten,ao de instru,oes. Para
inserir
uma
instruq80
a
linha
de execU(}ao
clicar sobre a instrU(}ao
desejada
mouse,
ate a lisla
arrastar
item
0
do thread,
"Unha
de
basta
botao
do
Execuc;ao
do
e, sem soltar
0
Thread" localizada na tela de Processos e Threads.
o
Usta de Recursos: Abre a tela com a lista de Recursos
registrados
atraves
inserir urn recurso
sobre
0
arrastar
da tela de manutenC;Bo
a linha
de
execuc;ao
recurso desejado e, sem soltar
0
de recursos.
do thread,
0
Para
basta
botao
c/icar
do mouse,
item ate a lista "Linha de Execu,ao do Thread"
localizada na tela de Processos e Threads. Ap6s a inser,ao do
recurso na linha de execuqao,
inserido
e definir
0
tempo
que
deve-s8
0
mesmo
clicar sobre
devera
pelo thread. A unidade de tempo definida
e
0
item
ser ocupado
a seguinte:
unidade de tempo do prot6tipo = 333 milissegundos.
o Percentual CPU: Apresenta a percentual da linha de execu,ao
do thread composta por instru,oes.
o
Percentual 110:Apresenta
0
percentual da linha de execul'ao
do thread composta par recursos.
135
Escalonador
Esta tela
serao utilizadas
tela de Processos
o
da aceSSQ
pelo usuario
Detalhes
para acompanhar
do sistema,
a execw;:ao
bern como
dos threads
as
telas que
definidos
na
e Threads.
escalonador
parar a execu~ao
ao escalonador
passui dais betGes que devem ser utilizados
dos threads
para iniciar e
definidos.
Execu~ao
IOTh'Ud
E.alonodar
Quantumatual
!
!
.
Tempe
(ms)
5'''"'~1
Esta tela apresenta
todos as detalhes
da
execu'r3o do escalonador.
136
A tela de Detalhes de Execu~ao possui os seguintes itens:
o 10: Apresenta
escalonador
0
10 do thread que esta sendo executado pelo
no momento
(casa
naD
haja
nenhum
thread
a ser
executado, 0 Idle Thread ocupara a CPU).
o Priori dade Atual: Apresenta a prioridade (numerica) atual do thread.
o Status: Apresenta 0 status do thread.
o Quantum Atual: Apresenta 0 quantum jil utilizado pelo thread atual.
o Trocas Contexto: Apresenta a quantidade de trocas de contexto
realizadas
pelo escalonador
o Tempo (ms): Apresenta
realizadas.
Este valor
durante
0
a simula980
atual.
tempo consumido pelas trecas de contexto
sera calculado
com base no tempo
definido nas
configura90es do sistema.
o Mensagem:
Apresenta
mensagens
informativas
para
0
usuario
enquanto da execu~ao do escalonador.
o
Ciclos
de Clock da instru~ao: Apresenta
a quantidade
de ciefos de
clock jil utilizadas pela instru~ao atual.
o ttem Execuc;:ao:Apresenta detalhes do item de execu~ao executado
atualmente.
o Filas de prioridade: Mostra a lista de threads em estado de pronto
ordenados pela prioridade atual, seguida da data e hora de cria~ao.
o
Threads
em espera:
Lista os threads que
S8
encontram no estado de
espera por estarem aguardando a libera~ao ou utiliza~ao de algum
recurSQ.
o Sematoros:
Apresenta
0
estado dos semaforos existentes no sistema
(registrados atraves da tela de manuten~ao de recursos).
137
Execu~ao
Resumo
lis~1hreads
1:>
1100!bl1<:>nre4:!
..•..•..••..•.
I tw.aExew;Jo I
:1
7j.~o
CHI B.ur.~
?,,;.,,~.d..d.. Ba••.. : Q
~<.,,<.id..<I.A~~.l.
: te",,-,".""
lo~."'~
Ol~,=
l~u. he"
.: S
Ul~ I •••• r".c· S~~.ATOR:;)
D••~ Ul~ l~",,'
nl'.ATORO
1
U"' •••.
T.,.p •..
:30
n~~
-;-up<>
!~.,,:
O.~o
•• U,
..
lista1hreadtOerahe<TlT~IId~1
o.
=1lIll!iI!IIil3
1
n.lmuyio
R.fCURSO
MOVI.
•••••
fSP.~ .• 51
~'OV\. ;Z(%f5<')
L'ISRUI;.l.O
19
L'lsn:u..~"O
S:~1AfOI;O
Esta tela apresenta
0
resumo
da execugao
do escalonador.
Nela sao apresentados(as):
o
Lista Threads:
Usta de todos os threads
sao apresentados
o
os threads
mesmos
se encontram.
Detalhes
Thread:
aba e alimentada
olD
do thread,
Ap6s
0
criados
independentemente
thread
do estado
ser selecionado
com uma serie de detalhes
seu tipo (CPU Bound ou
pelo usuario.
Nesta lista
nos quais as
na "Usta Threads"
do thread.
esta
Entre eles estao
1/0 Bound), a prioridade
base, a
138
prioridade atual,
0
estado,
0
item de execu9ao atual (ou 0 ultimo no caso
do thread estar no estado "Terminado"),
0
tipo do item de execu9ao, a
sua descri9ao, a quantidade de unidades de tempo total do item,
0
tempo
decorrido (unidades de tempo ja consumidas), 0 tempo que 0 thread esta
sem executar (necessario para controle do Balance Set Manager), se
thread foi selecionado pelo BSM (Balance Set Manager) e se
0
0
thread
sofreu preemp9ao pela entrada na fila de prioridade de urn thread com
prioridade
maior que a do mesrno.
o Linha Execu9ao: Mostra a linha de execu9ao do thread selecionado,
montada pelo usuario na tela de Processos e Threads.
139
Saidas
do sistema
Relat6rio
O", ••'H".",,~.I,
1:OI'lflW'OO;OO:OO
o.,,,~o,,,,,,.·:
j:Ol:lJ;\)C><OO;O'JOO
de Resumo
::J
::J
Depois de definido
clica-se
no batao
visualizayao
relat6rio sao apresentados
~ ~)(a~~:.Q,·'"
do relat6rio
intervalo
de tempo
e e apresentada
de resumo
do relat6rio,
a tela
da execuyao.
os threads de cada processo e informal;6es
e termino da execuyao, Turnaround,
~
0
Visualizar
tipo do thread e tempo de execuyao
de
Neste
como: Inicio
do thread.
140
Relat6rio
de Detalhes
Oepois de selecionada
deseja
e
Visualizar
e
execug80.
Neste
de execuc;:ao,
Tempo
apresentada
relat6rio
Tempo
consumido
simulac;ao
~ 3
conhecer
a tela de visualiza,8o
sao apresentados
de espera,
nas tracas
Tempo
a simulat;:ao da qual
as detalhes,
do relatorio
os threads
e
e Detalhes
no
batao
de detalhes
da
informac;:6es como: Tempo
na fila de semaforos,
de contexto
eliea-s8
Tracas
do hardware
de contexte,
no qual
a
foi executada.
x
Q
ID c!J
'=
q,·1t
~I
f
Relatorio de o~~~~.~~ da Execu~ao
~:
-,
_"''''Ci(~)I'(ftr''''''.)'
_.-
---- TompoEopot.(
1'5666JJ6
l;"6>,oo
ITc""PlIgoHo,t
_
••••)
Ood<!"'h»:
l0S6
,.-
-
.-
~~("'~)
-
__ .-
.
141
2 MANUAL
DE INSTALA9AO
Configura~ao
o
Microsoft
e exigencias
Windows
DO SOFTWARE
de hardware
e software
9X1NT/2000/XP/2003
com
.NET
Framework
1.1
instalado;
o
MSDE 2000 ou Servidor
de Banco de Dados com Microsoft
SOL Server
2000;
o
AMD
K6-2 500mhzllntel
mbps (se utilizar
o
0
Impressora (para
Manual
500mhz,
64mb
RAM, Placa
Rede
10/100
emissao dos relat6rios);
de instalayao
1. Executar
".,"
Pili
SOL Server em outra maquina);
0
Arquivo Setup.exe
.
Sile
que
esta na raiz do CD de instala9ao.
T~"pe
O.!teMooified
(:)B~nco d~ d~dos
bFr~me':;ork
fileFolc!er
10/20/200",
F.lefolc!er
1O/lS/20041:30AI"I
Dr-li)AC2.8
::-'Ierolcer
10/1S/ZQ(HI:40;.M
IOj19/2OCH3:..:sPI>I
File Fold~r
Appi'calion
3/19/2oo32:03AM
Configur""on$etnngs
10/20/20044: 11 A.\1
Windo .••..
slnsta!lerP ... IOj20/20044:11AM
wHSDE
~
]lSetup.IJ1I
j~JSeIJJP.msj
MicrosoftCorporaijonfi!eVer::Jon: 7.10.3077.
lDSKB
''''
1.0751<3
IOSKe
l:39AM
'i:1 /o'vCom:)Uter
142
a. Caso
ande
0
.NET Framework
0 prot6tipo
esta sendo instalado,
uma tela solicitando
b. Para instalar
selecionar
arquivo
0
System
.NET Framework,
desejado
no computador
a instalat;:ao
do .NET Framework
ir ate a pasta Framework
(portugues
au ingles),
Setup
- Windows
Operating
Wizard
The installer will guide you through the steps required to install WOSS . Windows
Simulator on your computer
Operating System
WARNING: This computer progrdfll isprotected by co~ight law ~nd inlemaiiOMI tIeaties
UnalAhodzed
duplication or distribution of this progam, 01 any portion of it may result in severe
or criminal penalties, and will be prosecl.-lled to the rnaMimum extent possible under the law.
Cancel
no CD,
e executar
de acordo com as tel as abaixo.
to the WOSS
Simulator
3. cliear em next.
ira mostrar
1.1.
dotnetfx.exe.
2. Seguir as instru~6es,
Welcome
a instalac;ao
idioma
0
1.1 nao seja detectado
civ~
0
143
~WOSS
-Windows Operating System Simulato-r------~(Q)~
Select Installation Folder
The installer win inst.aIIWOSS
. Wl"Idows
To inst;:!lllin this folder, click "Next"
Operating
System
SimutatOl to the following foldet.
To inst;:!lllto a different folder, enter itbelow or dck
"Browse"
[older:
IC:\Program
Faes\Projeto
de graduacao\\lJ055
. Wlr"ldows
Operating
Browse ...
Disk Co~t...
instlln WOSS
computer:
o
. Windows
Operating
System
Simulator foryour!;elf. orfor ~nyone
who uses this
Everyone
0Justme
4. Escolher
0 local de instala9E10 e cliear em Next.
I~ WOSS -Windows Operating System Simulator
~(Q]~
Confirm Installation
The installet is ready to in~tanWOSS
Click "Newt" to stCirtthe installation
. Windows
Oper~ing
System
SimulatOf on your computer.
144
5. Clicar em Next para iniciar a c6pia dos arquivos.
JiilWOSS~Windows
~[Q)~
Operating System Simulator
Installing WOSS - Windows Operating
System Simulator
WOSS
. Windows
Please
Operating
System
SinlAator is being instaned.
wait...
Installation Complete
\.Voss·
Wr"'Idows
OPeialing System
Simulator has been successfully
installed.
Click ''Close''toeM~
Please
use Windows
Update
to check
for any critical updates
to the .NET
FramewCMk.
145
instala~ao.
5. Cliear em Close para concluir a
Criagao
e instalagao
do Banco de dados
1) Executar 0 arquivo setup.exe contido na pasta de instala9ao do MSDE.
2) Reiniciar 0 computador.
3) Ap6s concluir a instalaC;80, ir aD prompt de comando e digitar
0
seguinte
comando:
• osql -U sa -P WoSs_uSeR -S (local) <ENTER>
4) Aparecera no lugar do caminho do diret6rio atual (prompt)
5) Pelo Windows Explorer, ir ate
instala9ao, localizar
0
0
0
texto "1>"
diret6rio Banco de dados no CD de
arquivo "Script_WOSS_BD.sql" e abri-Io no Bloco
de notas (notepad).
6) Com
0
arquivo aberto, ir ate
0
menu "Editar" e clicar na oP9ao
"Selecionar Tudo".
7) Em seguida,
com
0
texto selecionado,
ir ao menu "Editar" e clicar na
oP9iio "Copiar".
8) Clicar na tela do prompt de comando que foi aberta anteriormente e clicar
com a batao direito do mouse
no local cnde
0
cursor estara
piscando
(ao
lado do texto "1>") e selecionar a OP980"Colar".
9) Quando isto for feito, 0 MSDE iniciara 0 processamento dos comandos
de cria9ao da estrutura do banco de dados do sistema, portanto e
necessaria
aguardar
comando "quit".
ate
0
termino deste processamento
e digitar
0
146
Para alterar
editar
0
prot6tipo.
arquivo
as configurag6es
WOSS.exe.config
0 arquivo
Windows
string de conexao do banco de dados,
se encontra
na pasta
de instalac;:ao do
pode ser aberto no Bloco de Notas.
Para executar
WOSS
da
que
0
prot6tipo,
OJ)eratlng Svs~em Slmuld~r
dar um duplo-clique
-
-
no arquivo
-
~
WOSS.EXE.
---
~(Q]
11:
(Wj Renam~ Ihsfile
~
l.,.,~~tbs/ie
IE
LlCopy!h:slile
+J PubJd,tIH~etothe\'lfb
:l EofMJltccsf1e
)(Oe!eteti'llSfle
.}~.~
G
b;>rOletode'TadJ~tao
UMyDow....er>ts
oj
MyCorrpJter
~f~yNo.twofkP'.a<.~
s:dole.dII
.o_~""'o,c
~eU~~Ud_CI'U...P'tY-10.
0-
147
~
WOSS.exe~config-
NoWpad
<?xml versioll_"1.0"
<configuration>
<appS@tt~~ad>
<add
<!appsetti
---
encoding_"utf_S"
---
~-
---------~-@-~
7>
ke ."strconnect;onstri
ng"
va1ue""Data
source-(l oca1); Ini t1 .11 catalog-I'JOSS;
ic 1ocl ock"
~:1~~~
~gg~P/;
UID ••
5a; P\~d-;r.l'
ng5>
<!configuration>
> ..