Escolar Documentos
Profissional Documentos
Cultura Documentos
Tese Luiz Paulo Maia
Tese Luiz Paulo Maia
ii
DE
COMPUTAO
ELETRNICA
(NCE)
DA
iii
FICHA CATALOGRFICA
Simulador
para
Ensino
de
Sistemas
iv
AGRADECIMENTOS
Gostaria de agradecer inicialmente a Srgio Guedes (NCE/UFRJ), Eduardo Luiz Pareto
(NCE/UFRJ), Osvaldo Vernet (NCE/UFRJ), Fbio Ferrentine (NCE/UFRJ), Francis
Berenger Machado (PUC-Rio), Jos Lucas Mouro Rangel Netto (PUC-Rio), Sergio
Lifschitz (PUC-Rio) e Denis Cople (UERJ) pelo apoio dado na realizao deste
trabalho.
Gostaria tambm de agradecer especialmente ao meu orientador, professor Ageu
Pacheco (NCE/UFRJ), por sua pacincia e habilidade em lidar com as dificuldades de
um mestrando em tempo parcial.
Gostaria de agradecer Deise Lobo Cavalcante (Dona Deise), Regina Clia Gomes
Lima e aos demais profissionais da Secretaria Acadmica do IM/UFRJ.
Gostaria de agradecer aos amigos e familiares, presentes e ausentes, que tanto me
apoiaram para a realizao deste trabalho.
Finalmente, gostaria de agradecer Maria Clara e Maria Luiza por abrirem mo do
tempo que deveria dedicar a elas para a confeco deste trabalho de tese.
DEDICATRIA
Gostaria de dedicar este projeto ao mestre dos mestres, Prof. Jlio Salek Aude
(NCE/UFRJ), falecido poucas semanas antes da concluso deste trabalho.
Serei sempre grato a ele, por me mostrar o que ser realmente um professor. Dedicao,
humildade, pacincia, bom humor, conhecimento, simplicidade, didatismo eram apenas
alguns dos adjetivos para uma aula sua.
Fora da sala de aula, o Prof. Salek era um implementador de idias, uma usina de
realizaes. Alguns tm as idias, outros implementam, mas poucos idealizam e
realizam. Qualquer um com estes predicados poderia estar trabalhando em um dos mais
modernos centros de pesquisa do mundo. Mas no, o Prof. Salek escolheu o caminho
mais difcil para realizar seus desafios.
Professor, esteja o senhor onde estiver, saiba que seu trabalho e suas idias continuaro
a influenciar muitas pessoas, especialmente seus ex-alunos como eu. Espero, algum dia,
voltar a frequentar suas classes. Muito obrigado por tudo.
vi
vii
viii
SUMRIO
1
VISO GERAL
CONSIDERAES EDUCACIONAIS
MODELO PROPOSTO
ix
ARQUITETURA E IMPLEMENTAO
xi
LISTA DE FIGURAS
Fig. 1.1 Viso da interface grfica do simulador--------------------------------------------- 4
Fig. 2.1 Interao simulador, professor e aluno -------------------------------------------- 15
Fig. 3.1 Sistema operacional genrico ------------------------------------------------------- 20
Fig. 3.2 Processo -------------------------------------------------------------------------------- 22
Fig. 3.3 Mudanas de estado do processo --------------------------------------------------- 25
Fig. 3.4 Espao de endereamento virtual--------------------------------------------------- 34
Fig. 3.5 Tabela de mapeamento--------------------------------------------------------------- 35
Fig. 3.6 Tabela de pginas--------------------------------------------------------------------- 37
Fig. 4.1 Ambiente monothread --------------------------------------------------------------- 48
Fig. 4.2 Ambiente multithread ---------------------------------------------------------------- 49
Fig. 4.3 Console--------------------------------------------------------------------------------- 50
Fig. 4.4 Gerncia do Processador------------------------------------------------------------- 51
Fig. 4.5 Gerncia de Memria ---------------------------------------------------------------- 52
Fig. 4.6 Log do simulador --------------------------------------------------------------------- 53
Fig. 4.7 Estatsticas do simulador ------------------------------------------------------------ 53
Fig. 4.8 Criao de processo(s) -------------------------------------------------------------- 59
Fig. 4.9 Visualizao dos processos --------------------------------------------------------- 61
Fig. 4.10 Process Control Block-------------------------------------------------------------- 62
Fig. 4.11 Estados dos processos no simulador---------------------------------------------- 63
Fig. 4.12 Opes de escalonamento---------------------------------------------------------- 64
Fig. 4.13 Memria principal------------------------------------------------------------------- 66
Fig. 4.14 Opes de memria ----------------------------------------------------------------- 67
Fig. 4.15 Tabela de pginas ------------------------------------------------------------------- 68
Fig 4.16 Poltica de substituio de pginas ------------------------------------------------ 71
Fig. 4.17 Arquivo de paginao e swapping ------------------------------------------------ 74
xii
LISTA DE TABELAS
Tab. 4.1 Formulrios --------------------------------------------------------------------------- 57
Tab. 4.2 Cdigos pr-definidos --------------------------------------------------------------- 60
Tab. 4.3 Tipos de instrues ------------------------------------------------------------------ 60
Tab. 4.4 Operaes sobre processos --------------------------------------------------------- 61
Tab. 4.5 Aumento de prioridade -------------------------------------------------------------- 65
Tab. 4.6 Indicadores estatsticos-------------------------------------------------------------- 75
1.2 Motivao
No incio da dcada de 1990, a bibliografia de referncia existente de boa qualidade no
pas sobre o tema Sistemas Operacionais era unicamente em lngua inglesa, dificultando
em muito sua aplicao nos cursos relacionados ao assunto. Ciente desta carncia, o
livro "Introduo Arquitetura de Sistemas Operacionais" foi escrito e publicado, na
tentativa de facilitar o ensino e aprendizado de sistemas operacionais [MACHADO,
1992]. A primeira edio foi amplamente aceita pela comunidade acadmica,
principalmente nos cursos de graduao e extenso. Uma segunda edio revisada e
ampliada foi lanada posteriormente com o novo nome de "Arquitetura de Sistemas
Operacionais" [MACHADO, 1997]. Neste perodo, o livro foi adotado em inmeras
instituies de ensino, inclusive em outros estados. Em 1998, colocamos na Internet
uma pgina com informaes adicionais sobre o livro e o tema [MAIA, 1998].
Apesar de todo o trabalho desenvolvido para facilitar o ensino e aprendizado de
sistemas operacionais, existe um problema que o material impresso no resolve. Por
melhores que sejam o professores e alunos, a apresentao da dinmica dos algoritmos e
mecanismos implementados limita-se visualizao de uma pequena seqncia de
eventos que tenta representar um grande nmero de situaes. Por exemplo, o
mecanismo de gerncia de memria virtual, que envolve tabelas de mapeamento e
traduo de endereos, extremamente difcil de ser apresentado de forma clara, devido
sua dinmica e complexidade.
A melhor forma de resolver o problema da apresentao da dinmica de um sistema
operacional seria implementar uma ferramenta que reduzisse a distncia entre o modelo
real e o modelo conceitual, tornando este ltimo mais prximo da realidade. Com base
nesta idia, foi o desenvolvido um simulador grfico (SOsim) que serve de ferramenta
visual de suporte para o ensino e aprendizado dos conceitos e tcnicas implementados
nos sistemas operacionais atuais, de forma a tornar este processo mais efetivo.
O simulador ser colocado disponvel na Internet para que professores e alunos tenham
acesso gratuito ao software de apoio educacional. Juntamente com o simulador, ser
colaborativa
de
conhecimento,
so
apresentadas
algumas
outras
Programas Tutorias
Programas Exerccio-e-Prtica
Simulaes
10
11
12
13
O NACHOS foi desenvolvido em C++ e est disponvel para a maioria das plataformas
Unix, como HP-UX, IBM-AIX, Sun Solaris, Linux e FreeBSD, alm do MS-DOS. At
o momento no existe uma verso para o sistema Windows da Microsoft.
2.4.3 OSP
O OSP (Operating System Project) foi desenvolvido por Michael Kifer e Scott Smolka,
no Departamento de Cincia da Computao da Universidade Suny Stony Brook, Nova
York [KIFER, 1991].
O simulador consiste de vrios mdulos, cada um responsvel por um servio do
sistema operacional, como escalonamento, tratamento de interrupes, gerncia de
arquivos, gerncia de memria e comunicao entre processos. A partir de um gerador
de projetos (OSP Project Generator) possvel montar um sistema operacional com
mdulos j existentes e mdulos desenvolvidos pelo prprio aluno.
O OSP foi desenvolvido em Linguagem C, sendo suportado pela maioria das
plataformas Unix, como SunOS, HP-UX, IBM-AIX, Linux e FreeBSD. Desta forma,
para que o aluno possa interagir com o ambiente necessrio ter domnio de
programao em Linguagem C em ambiente Unix, alm do conhecimento de estrutura
de dados.
2.4.4 MINIX
O MINIX um sistema operacional compatvel com o Unix que pode ser utilizado
gratuitamente para o ensino de sistemas operacionais, pois permite que um aluno instale
o sistema em um microcomputador e estude o seu cdigo fonte para compreender seu
funcionamento [TANENBAUM, 1996].
O MINIX foi desenvolvido pelo professor Andrew Tanenbaum da Vrije Universiteit em
Amsterdam, Holanda. Existem verses do sistema compatveis com a famlia de
processadores Intel, Macintosh, Amiga, Atari e SPARC da Sun Microsystems. O
14
2.4.6 TROPIX
O TROPIX um sistema operacional de filosofia Unix, desenvolvido no NCE/UFRJ
(Ncleo de Computao Eletrnico/Universidade Federal do Rio de Janeiro) e mantido
pelos professores Pedro Salenbauch e Oswaldo Vernet [TROPIX, 2000].
Foi inicialmente concebido em 1982, com o nome de PLURIX para um computador
tambm desenvolvido no NCE, o PEGASUS, baseado no processador Motorola 68000.
A partir de 1994, foi iniciada a converso do sistema para a plataforma Intel (386, 486 e
Pentium).
15
Memria compartilhada;
2.5 SOsim
O SOsim foi desenvolvido para servir de ferramenta de auxlio para o ensino de
sistemas operacionais, tornando o trabalho do professor mais eficaz. Aproximando a
teoria prtica, o simulador permite facilitar o entendimento e o aprendizado por parte
dos alunos. O software oferece a possibilidade de ampliar a interao entre alunos e
professores, em funo das experincias que cada um tenha desenvolvido (Fig. 2.1).
16
Maior eficincia
Facilidade de uso
A maioria dos software utilizados para o apoio ao ensino de sistemas operacionais cria
um ambiente idntico ao mundo real. Em funo do alto grau de complexidade de um
sistema operacional real, h um correspondente grau de dificuldade em utilizar este tipo
de software como ferramenta de suporte ao ensino.
O SOsim permite que o professor apresente a dinmica de um sistema operacional sem
necessariamente entrar em detalhes de hardware e/ou software, como exigido pelos
simuladores reais. O software no exige qualquer conhecimento de programao para
ser utilizado. Sua interface grfica intuitiva, eliminando as barreiras tradicionais
encontradas nos programas existentes. Este atributo especialmente importante nos
17
Diversidade de pblico
18
Ambiente padronizado
19
20
21
3.2 Processo
Um processo pode ser entendido inicialmente como um programa em execuo, s que
seu conceito mais abrangente. Este conceito torna-se mais claro quando pensamos de
que forma os sistemas multiprogramveis (multitarefa) atendem os diversos usurios
(tarefas) e mantm informaes a respeito dos vrios programas que esto sendo
executados concorrentemente [MACHADO, 1997].
Um sistema multiprogramvel simula um ambiente de monoprogramao para cada
usurio, isto , cada usurio do sistema tem a impresso de possuir o processador
exclusivamente para ele. Nesses sistemas, o processador executa a tarefa de um usurio
durante um intervalo de tempo e, no instante seguinte, est processando outra tarefa. A
cada troca necessrio que o sistema preserve todas as informaes da tarefa que foi
interrompida, para quando voltar a ser executada no lhe faltar nenhuma informao
para a continuao do processamento. estrutura computacional interna, responsvel
pela manuteno de todas as informaes necessrias execuo de um programa,
como contedo de registradores e espao de memria, d-se o nome processo.
O conceito de processo pode ser refinado como sendo o ambiente onde se executa um
programa. A execuo de um mesmo programa pode ser afetada dependendo do
processo no qual ele processado. O processo pode ser dividido em trs elementos
bsicos: contexto de hardware, contexto de software e espao de endereamento, que
juntos mantm todas as informaes necessrias execuo do programa (Fig. 3.2).
O contexto de hardware constitui-se basicamente no contedo de registradores: program
counter (PC), stack pointer (SP) e bits de estado. Quando um processo est em
execuo, o contexto de hardware est armazenado nos registradores do processador.
No momento em que o processo perde a utilizao da CPU, o sistema salva o seu
contexto.
22
23
Estado de execuo
Um processo dito no estado de execuo (running) quando est sendo processado pela
CPU. Como o simulador implementa apenas um processador, somente um processo
pode estar sendo executado em um dado instante de tempo. Os processos se revezam na
utilizao do processador seguindo uma poltica estabelecida pelo escalonador.
Estado de pronto
Um processo est no estado de pronto (ready) quando apenas aguarda uma oportunidade
para executar, ou seja, espera que o sistema operacional aloque a CPU para sua
execuo. O escalonador responsvel por determinar a ordem pela qual os processos
em estado de pronto devem ganhar a CPU. Normalmente existem vrios processos no
sistema no estado de pronto.
Estado de espera
Um processo est no estado de espera (wait) quando aguarda algum evento externo ou
algum recurso para poder prosseguir seu processamento. O simulador implementa trs
tipos de estado de espera: um processo pode estar esperando o trmino de uma operao
de entrada/sada, aguardando ser retirado do estado de suspenso (resume) ou a espera
pelo trmino de um page fault.
24
Pronto Execuo
Execuo Espera
Um processo em execuo passa para o estado de espera por eventos gerados pelo
prprio processo (Fig. 3.3b). Nesse caso, o processo ficar neste estado esperando pela
concluso do evento solicitado. O simulador coloca um processo no estado de espera em
trs situaes: quando o processo faz uma operao de entrada/sada, gera um page fault
ou suspenso pelo usurio.
Espera Pronto
25
Execuo Pronto
Um processo em execuo passa para o estado de pronto por eventos gerados pelo
sistema. O simulador implementa dois eventos deste tipo: o fim da fatia de tempo (timeslice) que o processo possui para sua execuo (quantum-end) e preempo (Fig. 3.3d).
Nestes casos, o processo volta para a fila de pronto, onde aguardar por uma nova
oportunidade para continuar seu processamento.
26
27
28
No escalonamento por tempo sempre que um processo passa para o estado de execuo,
ou seja, ganha a CPU, existe um tempo-limite para sua utilizao de forma contnua,
denominado time-slice ou quantum. Quando esse tempo, expira, sem que antes a CPU
seja liberada pelo processo, este volta ao estado de pronto, dando a vez para outro
processo. Esse mecanismo definido como preempo por tempo.
A fila de processos em estado de pronto tratada como uma fila circular. O
escalonamento realizado, alocando a CPU para cada processo da fila no intervalo de
tempo determinado pelo quantum. O valor do quantum de tempo pode ser alterado
dinamicamente pelo usurio durante a execuo da simulao.
Atravs do escalonamento por tempo, nenhum processo poder monopolizar a CPU,
sendo o tempo mximo alocado continuamente para um determinado processo igual ao
quantum. No caso de sistemas de tempo compartilhado, onde vrios usurios utilizam o
sistema concorrentemente, esse algoritmo bastante adequado.
29
razo de o escalonamento por tempo tratar todos os processos de uma maneira igual, o
que nem sempre desejvel.
Um processo CPU-bound leva vantagem, na utilizao da CPU, sobre o processo I/Obound. Como, no escalonamento por tempo, um processo I/O-bound compete pelo
processador da mesma forma que um processo CPU-bound, e o processo I/O-bound
passa a maior parte do tempo no estado de espera, o processo CPU-bound tem mais
chance de ser executado.
Para solucionar esse problema, os processos I/O-bound devem levar alguma vantagem
no escalonamento, a fim de compensar o excessivo tempo gasto no estado de espera.
Como alguns processos devem ser tratados de maneira diferente dos outros, preciso
associar a cada um deles uma prioridade de execuo. Nesse esquema, processos de
maior prioridade so escalonados preferencialmente. Toda vez que um processo for para
a fila de pronto com prioridade superior ao do processo em execuo, o sistema dever
interromper o processo corrente, coloc-lo no estado de pronto e selecionar o de maior
prioridade para ser executado. Esse mecanismo definido como preempo por
prioridade.
Todos os sistemas de tempo compartilhado implementam algum esquema de prioridade,
de forma a dar maior importncia a um processo no momento do escalonamento. A
prioridade uma caracterstica do contexto de software de um processo, podendo ser
esttica ou dinmica. O simulador oferece a possibilidade de prioridade esttica ou
dinmica, atravs das opes da gerncia do processador.
A prioridade dita esttica quando no modificada durante a existncia do processo.
Apesar da simplicidade de implementao, a prioridade esttica pode ocasionar tempos
de resposta elevados. Na prioridade dinmica, a prioridade do processo pode ser
ajustada de acordo com o tipo de processamento realizado pelo processo e/ou a carga do
sistema. Todo o processo, ao sair do estado de espera, recebe um acrscimo sua
prioridade. Dessa forma, os processos I/O-bound tero mais chance de ser escalonados
e, assim, compensar o tempo que passam no estado de espera. importante perceber
30
31
mais alta ordem. No caso de processos CPU-bound, a tendncia que, ao entrar na fila
de mais alta prioridade, o processo ganhe o processador, gaste seu quantum de tempo e
seja direcionado para uma fila de menor prioridade. Dessa forma, quanto mais tempo
um processo utiliza do processador, mais ele vai caindo para filas de menor prioridade.
3.3.3 Critrios de Escalonamento
Um algoritmo de escalonamento tem como principal funo decidir qual dos processos
prontos para execuo deve ser alocado CPU. Cada sistema operacional necessita de
um algoritmo de escalonamento adequado a seu tipo de processamento. A seguir,
apresentaremos os principais critrios de escalonamento:
Utilizao da CPU
Na maioria dos sistemas desejvel que o processador permanea a maior parte do seu
tempo ocupado. Uma utilizao na faixa de 30% indica um sistema com uma carga de
processamento baixa, enquanto que na faixa de 90% indica um sistema bastante
carregado, prximo da sua capacidade total.
Throughput
Tempo de turnaround
Tempo que um processo leva desde sua admisso no sistema at ao seu trmino,
levando em considerao o tempo de espera para alocao de memria, espera na fila de
processos prontos para execuo, processamento na CPU e operaes de E/S.
32
Tempo de resposta
33
34
35
3.4.2 Mapeamento
O mapeamento permite ao sistema operacional traduzir um endereo localizado no
espao de endereamanto virtual do processo para um endereo no espao real. Como
conseqncia do mapeamento, um programa no precisa estar necessariamente contguo
na memria principal para ser executado.
Cada processo tem o mesmo espao de endereamento virtual, como se possusse sua
prpria memria virtual. O mecanismo de traduo se encarrega de manter tabelas de
mapeamento exclusivas para cada processo, relacionando os endereos virtuais do
processo s suas posies na memria fsica (Fig. 3.5). Quando um programa est sendo
executado, o sistema, para realizar a traduo, utiliza a tabela de mapeamento do
processo no qual o programa executa. Se um outro programa vai ser executado no
contexto de outro processo, o sistema deve passar a referenciar a tabela do novo
processo.
36
Neste esquema, como cada processo tem a sua prpria tabela de mapeamento e a
traduo dos endereos realizada pelo sistema, garantida a proteo dos espaos de
endereamento dos processos, a menos que haja compartilhamento explcito de
memria (shared memory).
Caso o mapeamento fosse realizado para cada clula na memria principal, o espao
ocupado pelas tabelas na memria real seria to grande quanto o espao de
endereamento virtual de cada processo, o que inviabilizaria a implementao do
mecanismo de memria virtual. Em funo disso, as tabelas mapeiam blocos de
informaes, cujo tamanho determina o nmero de entradas existentes nas tabelas de
mapeamento. Quanto maior o bloco, menos entradas nas tabelas de mapeamento e,
conseqentemente, tabelas de mapeamento que ocupam um espao de memria menor.
Existem sistemas que trabalham apenas com blocos do mesmo tamanho (paginao),
outros que utilizam blocos de tamanhos diferentes (segmentao) e, ainda, h sistemas
que trabalham com os dois tipos de blocos (segmentao com paginao). O simulador
implementa apenas a gerncia de memria virtual com paginao.
3.4.3 Paginao
Paginao (paging) a tcnica de gerncia de memria onde o espao de
endereamento virtual e o espao de endereamento real so divididos em blocos do
mesmo tamanho, chamados pginas. As pginas no espao virtual so denominadas
pginas virtuais (virtual pages), enquanto as pginas no espao real so chamadas de
pginas reais (frames).
Todo o mapeamento realizado em nvel de pgina, atravs de tabelas de pginas. Cada
pgina virtual do processo possui uma entrada na tabela de pginas (Page Table Entry PTE), com informaes de mapeamento que permitem ao sistema localizar a pgina real
correspondente na memria principal (Fig. 3.6).
37
38
39
40
41
42
independente do processo que gerou o page fault. O simulador implementa uma poltica
de substituio local.
Independente se a poltica seja local ou global, os algoritmos de substituio de pginas
devem ter o objetivo de selecionar aquelas que tenham poucas chances de serem
utilizadas novamente num futuro prximo. Quanto mais elaborado e sofisticado o
algoritmo, maior tambm o overhead para o sistema.
Existem diversos algoritmos na literatura voltados para a implementao da poltica de
substituio de pginas, como FIFO (First-In-First-Out), buffer de pginas, LRU (LeastRecently-Used),
LFU
(Least-Frequently-Used)
NRU
(Not-Recently-Used)
First-In-First-Out (FIFO)
Nesse esquema, a pgina que primeiro foi utilizada (first-in) ser a primeira a ser
escolhida (first-out), ou seja, o algoritmo seleciona a pgina mais antiga na memria.
Sua implementao pode ser feita associando a cada pgina o momento que foi trazida
para a memria ou utilizando uma fila, onde as pginas mais antigas esto no incio e as
mais recentes no final da fila.
Parece razovel pensar que uma pgina que esteja mais tempo na memria seja
justamente aquela que deva ser selecionada. Caso uma pgina seja constantemente
referenciada, o fator tempo torna-se irrelevante, e o sistema tem que retornar a mesma
pgina vrias vezes. O algoritmo FIFO raramente utilizado sem algum outro
mecanismo que minimize este problema, como o algoritmo de Buffer de Pginas.
43
Buffer de Pginas
O buffer de pginas utiliza como base o algoritmo FIFO, combinado com uma lista de
pginas livres (Free Page List FPL), que funciona em um esquema de fila. Sempre que
um processo solicita uma nova pgina, a pgina que est a mais tempo no seu working
set colocada no final da FPL. Para atender a solicitao do processo, a primeira pgina
da FPL selecionada. Alm da FPL, o simulador implementa uma segunda lista,
conhecida como lista de pginas modificadas (Modified Page List MPL), que
armazena as pginas modificadas que so retiradas do working set do processo.
importante notar que a pgina substituda continua fisicamente na memria, logo, se a
pgina for novamente referenciada, basta traze-la da FPL ou MPL, que funciona como
um buffer de pginas. O buffer de pginas permite criar um algoritmo de substituio de
pginas eficiente, sem o overhead de outras implementaes.
3.4.8 Swapping
A tcnica de swapping permite aumentar o nmero de processos compartilhando a
memria principal e, conseqentemente, o sistema. Em sistemas que implementam essa
tcnica, quando existem novos processos que desejam ser processados e no existe
memria real suficiente, o sistema seleciona um ou mais processos que devero sair da
memria para ceder espao aos novos processos.
H vrios critrios que podem ser aplicados na escolha do(s) processo(s) que deve(m)
sair da memria. Os mais utilizados so a prioridade e o estado do processo. O critrio
de estado seleciona os processos que esto no estado de espera, ou seja, aguardando por
algum evento. O critrio de prioridade escolhe, entre os processos, os de menor
prioridade de execuo.
Depois de escolhido o(s) processo(s), o sistema intervm e ativa uma rotina do sistema
responsvel por retirar (swap out) e trazer (swap in) os processos da memria principal
para a memria secundria, onde so gravados em um arquivo de swapping (swap file).
44
45
46
47
48
49
50
Console
A console permite criar e selecionar processos, abrir e fechar janelas, consultar o help
online e os crditos, e encerrar a execuo do simulador. Alm disto, a console permite
parar a simulao a qualquer momento e retom-la quando desejado. Esta facilidade
permite ao professor interromper o modelo em determinados momentos para esclarecer
algum evento ou dvida e, posteriormente, continuar o processamento (Fig. 4.3).
51
Gerncia do processador
Gerncia de memria
52
Log de mensagens
53
Estatsticas
54
Clock (u_Clock)
O objeto Clock um thread que tem a funo de apenas gerar pulsos para que o
simulador tenha uma temporizao. Estes pulsos so sinalizados ao objeto CPU, atravs
de uma interrupo em intervalos de 100 milisegundos. O intervalo do clock pode ser
alterado facilmente para acelerar o modelo atravs da barra de controle Freqncia
clock na janela Gerncia do Processador.
Ncleo (u_Kernel)
55
CPU (u_CPU)
O objeto CPU (Central Processor Unit) o thread que executa as instrues dos
programas. Alm disto, a CPU reconhece e trata as interrupes armazenadas pelo
objeto ncleo. Semelhante a um sistema real, o processador verifica a cada instruo se
h interrupes e, neste caso, desvia para a rotina de tratamento apropriada. A CPU s
executa instrues de um programa quando no existem interrupes pendentes.
Processo (u_Processo)
Escalonador (u_Escalonador)
O objeto Escalonador o thread que seleciona um processo para execuo. Este objeto
mantm uma estrutura de dados com todos os processos prontos para executar e,
conforme o algoritmo de escalonamento definido pelo usurio, seleciona um processo
para ganhar o processador.
O Escalonador oferece trs opes de algoritmos para a gerncia da CPU, sendo o mais
importante o algoritmo de escalonamento com mltiplas filas, preemptivo e com
prioridade dinmica. Este objeto detalhado no item 4.7 Gerncia do Processador.
56
O objeto Memria Virtual responsvel por alocar e desalocar a memria principal para
os processos, utilizando o mecanismo de gerncia de memria virtual com paginao e
incluindo pre-paging, buffer de pginas e swapping. Este objeto mantm estruturas de
dados responsveis por controlar todas as reas livres e alocadas da memria principal e
secundria pelos processos em execuo. Este objeto detalhado no item 4.8 Gerncia
de Memria.
Espera (u_Espera)
Formulrios (f_*)
57
Form
Descrio
f_Console
f_Processo
f_SelecProcesso
f_PCB
f_Escalonador
f_Opt_ Escalonador
f_MemoriaVirtual
f_Opt_MV
f_Pagefile
f_Log
f_Estatistica
f_Creditos
58
59
60
Programa
Descrio
CPU
IO_1
IO_2
IO_3
MISTO_1
MISTO_2
Foram implementados cinco tipos de instrues que podem ser executadas pelo
processador (Tab. 4.3). A primeira instruo funciona apenas como um load que no
altera o contedo da memria. A segunda funciona como um store, alterando o
contedo da memria principal. Esta instruo importante para gerar pginas
modificadas no modelo de memria virtual. Do terceiro ao quinto tipos, as instrues
funcionam como uma operao de entrada/sada, obrigando o processo a ser colocado
no estado de espera. A diferena dos tipos de instrues de E/S apenas o boost na
prioridade base do processo.
Instruo
Descrio
-1
61
Descrio
Suspende
Resume
Finalizar
PCB
62
63
64
CPU sem sofrer uma interrupo de time-slice. Finalmente a barra Freqncia clock
permite alterar o intervalo de tempo que a CPU sofre uma interrupo de clock.
O objeto Escalonador responsvel por manter a lista de processos prontos para
executao e selecionar dentre os processos disponveis um que ganhar o acesso ao
processador. Os processos no estado de pronto so selecionados em funo do algoritmo
de escalonamento escolhido (Fig. 4.12).
65
Tipo de evento
+1
+2
+3
66
67
seja, quantas pginas esto disponveis para uso. O MPL Size indica o tamanho da
lista de pginas modificadas (Modified Page List MPL), ou seja, quantas pginas
modificadas no foram gravadas no arquivo de paginao.
O mdulo de gerncia de memria oferece alguns parmetros de configurao da
gerncia de memria virtual (Fig. 4.14). A opo Poltica de busca de pginas permite
selecionar se a poltica de busca ser antecipada (default) ou por demanda. O esquema
de busca antecipada faz com que a gerncia de memria carregue antecipadamente o
programa a ser executado da memria secundria para a memria principal. O esquema
de pre-paging tambm foi includo no simulador por motivos didticos. Geralmente,
quando ensinamos as mudanas de estados do processo, muito pouco foi falado sobre
memria virtual e menos ainda sobre page fault. Na gerncia de memria virtual sem
paginao antecipada, as pginas de um programa so carregadas para a memria
principal por demanda. Isto gera um page fault inicial para cada pgina referenciada,
acarretando uma mudana do estado (execuo espera). Esta situao introduz mais
uma mudana de estado (page fault) no modelo, o que poderia complicar a abordagem
inicial das mudanas de estados do processo.
68
69
70
71
72
programa. preciso, ento, que essa pgina seja gravada em disco para que, na prxima
referncia, a mesma volte com os valores originalmente gravados. As pginas no
modificadas, por sua vez, no precisam desse tratamento, pois podem ser retiradas do
arquivo executvel quando necessrio (Fig. 4.16b).
Os tempos de leitura e gravao em disco so reconhecidamente elevados quando
comparados com o tempo de acesso memria. Logo, causaria um grande retardamento
na execuo do programa caso os procedimentos, antes descritos, fossem seguidos
fielmente. Imagine se a cada entrada ou sada de pgina da lista de frames fossem feitas
leitura e gravao em disco respectivamente! Para contornar esse problema o sistema
mantm duas listas que funcionam em conjunto no sentido de diminuir as operaes em
disco. Essas listas so a lista de pginas livres (Free Page List FPL) e a lista de
pginas modificadas (Modified Page List MPL), as quais funcionam como ser
descrito.
Cada PTE, alm do bit de validade, possui um bit de modificao (M bit) que indica se
a pgina sofreu alguma alterao no seu contedo. Assim, quando uma pgina deve ser
substituida, o bit de modificao primeiramente verificado. Caso esse esteja ligado
(indicando que houve modificao), a pgina passada do working set do processo para
a lista de pginas modificadas (Fig. 4.16c). Por outro lado, se o bit estiver desligado, a
pgina passada para a lista de pginas livres (Fig. 4.16d).
A lista de pginas livres uma estrutura de dados da gerncia de memria virtual
responsvel por manter informaes sobre todas as pginas fsicas da memria principal
que esto disponveis para serem utilizadas. Quando um processo libera uma pgina
para a lista de pginas livres, esta pgina no imediatamente utilizada, j que a pgina
deve percorrer a lista do fim at o seu incio (FIFO). Desta forma, as pginas que saem
da lista de frames permanecem na memria por algum tempo, permitindo que essas
mesmas pginas possam voltar para o processo sem operaes de leitura em disco (Fig.
4.16e).
73
74
75
Descrio
Hora de Incio
Tempo Decorrido
76
Nmero de
Processos
Processos
Escalonados
Througthput
Turnaround
Tempo Total de
CPU
Taxa de utilizao
da CPU
Espera Fila de
Pronto
Espera Mdia
Espera Acumulada
Memria em bytes
Memria em uso
Livre
Page Faults/seg
Hw Page Fault
Sw Page Fault
77
78
79
80
81
REFERNCIAS BIBLIOGRFICAS
ANDERSON, T., LEVY, H., BERSHAD, B., LAZOWSKA, E. The Interaction of
Architecture and Operating System Design. ACM SIGPLAN Notices, vol. 26, n
4, pp. 108-120, April 1991.
ANDERSON,
T.E.,
Instructional
CHRISTOPHER,
Operating
W.A.,
System.
PROCTER,
Disponvel
S.J.
na
The
Nachos
Internet
em
http://www.cs.washington.edu/homes/tom/nachos/, 1999.
BACH, M.J. The Design of Unix Operating System. Prentice-Hall, 1986.
BEN-ARI, M. Principles of Concurrent and Distributed Programming. PrenticeHall, 1990.
BOOCH, G. Object-Oriented Analysis and Design with Applications. 2 Ed.,
Addison-Wesley, 1994.
BORLAND. Object Pascal Language Reference. Borland, 1999.
BORLAND. Developers Guide. Borland, 1999.
BORLAND. Programming with Delphi. Borland, 1999.
BORLAND. Visual Component Library (VCL). Borland, 1999.
BORLAND. Win32 API Documentation. Borland, 1999.
BRENDA, M. Instructional Design and Learning Theory. Disponvel na Internet em
http://www.usask.ca/education/coursework/802papers/mergel/brenda.htm, 1998.
82
83
F.M.,
MAIA,
L.P.
Introduo
Arquitetura
de
Sistemas
84
85