You are on page 1of 48

Arquitetura de Sistemas Operacionais

1. Histrico ............................................................................................................ 3

2. Tipos de Sistemas Operacionais ..................................................................... 4


2.1 Sistemas Monoprogramveis ..................................................................... 4
2.2 Sistemas Multiprogramveis ..................................................................... 5
2.2.1 Sistemas Batch ..................................................................... 6
2.2.2 Sistemas de Tempo Compartilhado ........................................ 7
2.2.3 Sistemas de Tempo Real ........................................................... 7
2.3 Sistemas Multiprocessados ..................................................................... 8

3. Sistemas Multiprogramveis ............................................................................... 10


3.1 Tratamento de Interrupes e Excees .................................................. 11
3.2 Buffer ................................................................................................... 12
3.3 Spool ................................................................................................... 12
3.4 Reentrncia ......................................................................................... 13
3.5 Segurana e Proteo do Sistema ............................................................ 14
3.6 Operaes de E/S ................................................................................ 17

4. Estrutura do Sistema Operacional ...................................................................... 17


4.1 Estrutura do Sistema ................................................................................ 17
4.2 Funes do Sistema ................................................................................ 18
4.3 System Calls .......................................................................................... 19
4.4 Modos de Acesso ................................................................................ 20
4.5 Arquiteturas: Sistemas monolticos, em camadas e microkernel ...................... 21

5. PROCESSO .................................................................................................... 24
5.1 Componentes do processo ....................................................................... 24
5.2 Estados do processo ................................................................................. 26
5.3 Mudanas de estado ................................................................................. 27
5.4 Tipos de processo ................................................................................. 28

6. Gerncia do Processador ........................................................................................ 29


6.1 Funes ............................................................................................................. 29
6.2 Critrios de Escalonamento ............................................................................. 29
6.3 Escalonamentos No-Preemptivos e Preemptivos ................................... 30

7. Gerncia de Memria / Memria Virtual ................................................................... 34


7.1 Introduo ................................................................................................... 34
7.2 Funes .............................................................................................................. 34
7.3 Alocao Contgua Simples .............................................................................. 34
7.4 Segmentao de programas .............................................................................. 35

1
7.5 Alocao Particionada Esttica Absoluta e Relocvel .................................... 36
7.6 Alocao Particionada Dinmica ................................................................... 38
7.7 Estratgias de Alocao de Partio ........................................................ 39
7.8 Swapping ................................................................................................... 39
7.9 Memria Virtual ................................................................................................... 40
7.10 Algoritmos de substituio de pginas ........................................................ 43

8. Gerncia de sistemas de Arquivos .............................................................................. 45


8.1 Estrutura de diretrios ......................................................................................... 45
8.2 Sistemas de alocao de arquivos .................................................................... 45
8.3 Gerncia de espao livre ............................................................................... 46
8.4 Proteo de acesso .......................................................................................... 47

9. BIBLIOGRAFIA ............................................................................................................... 48

2
1. Histrico

Antes da dcada de 50, os computadores eram muito difceis de serem programados. Era
necessrio conhecer totalmente sua arquitetura, e tal operao era efetuada em painis com
cerca de 6.000 conectores, em linguagem de mquina. Nesta fase os computadores no
possuam ainda dispositivos para interagir com o usurio, como teclados e monitores.

Na dcada de 50, j com a utilizao de transistores, sucedeu-se um grande avano


tecnolgico, melhorando a velocidade dos processadores e a capacidade dos meios de
armazenamento, em especial a memria e os discos magnticos.

Por volta de 1953 foi introduzido o primeiro sistema operacional, um programa de


controle que permitia uma interao, mesmo que limitada, entre o operador e a mquina,
otimizando a execuo das tarefas. Em 1959 foi criada uma verso de sistema operacional que
j implementava conceitos de memria virtual, conceito este largamente utilizado nos sistemas
atuais.

Na dcada de 60, a partir do surgimento dos circuitos integrados, foi possvel difundir u
uso de sistemas computacionais em empresas, com diminuio de custos e tamanho dos
equipamentos. Alm disso, esta dcada presenciou inmeras inovaes na rea de sistemas
operacionais, presentes at hoje, como os ambientes de multitarefa, multiprogramao,
multiprocessamento e time-sharing, tendo o desenvolvimento destas tcnicas avanado at o
meado da dcada de 70, onde tambm foram implementadas as tecnologias baseadas em
arquitetura VLSI (chips), as primeiras redes de computadores, e o desenvolvimento de diversas
linguagens de programao de alto nvel.

A dcada de 80 foi marcada pela criao dos microcomputadores, baseados em


microprocessadores de uso pessoal. Liderados pela IBM, diversos fabricantes seguiram por essa
linha, porm alguns deles no abandonando a fabricao dos computadores de grande porte,
como foi o caso da prpria IBM.

Nota-se que, a partir do meado da dcada de 80, acontece uma diviso de guas, com a
indstria passando a produzir equipamentos de grande porte e muitos modelos de
microcomputadores, que tambm precisavam de sistemas operacionais bastante evoludos.
Foram, ento, utilizadas as tcnicas modernas j existentes nos ambientes de grande porte na
implementao de sistemas operacionais para os microcomputadores, com verses diversas,
todas inicialmente monousurio/monotarefa (devido baixa capacidade de armazenamento dos
micros, naquela poca). Com o avano da tecnologia, os micros ganharam discos rgidos e
outros perifricos, possibilitando a criao de sistemas operacionais mais evoludos nesta
categoria de computadores, quando surgiram os sistemas monousurio/multitarefa, que
executam at hoje.

3
Cronologia

Grande porte (mainframes)

1990

1950 1960 1970 1980

Sistemas
1 Sistema Operacional Sistemas Multiprogramveis
Monoprogramvel Multitarefa Multitarefa
Monotarefa

Introduzido o Microcomputadores
conceito de
Memria Virtual

2. Tipos de Sistemas Operacionais

Tipos de
Sistemas Operacionais

Sistemas Sistemas Sistemas


Monoprogramveis/ Multiprogramveis/ Com Mltiplos
Monotarefa Multitarefa Processadores

2.1 Sistemas Monoprogramveis/Monotarefa

Os primeiros sistemas operacionais eram voltados tipicamente para a execuo de um


nico programa. Qualquer outra aplicao, para ser executada, deveria aguardar o trmino do
programa corrente. Neste tipo de sistema, o processador, a memria e os perifricos
permanecem exclusivamente dedicados execuo de um nico programa.

Os sistemas monoprogramveis esto diretamente ligados ao surgimento, na dcada de


50/60, dos primeiros computadores. Embora os sistemas operacionais j tivessem evoludo com
as tecnologias de multitarefa e multiprogramveis, os sistemas monoprogramveis voltaram a
ser utilizados na plataforma de microcomputadores pessoais e estaes de trabalho devido
baixa capacidade de armazenamento destas mquinas, na poca.

4
Era muito clara a desvantagem deste tipo de sistema, no que diz respeito limitao de
tarefas (uma de cada vez), o que provocava um grande desperdcio de recursos de hardware.

_______
_______
CPU _______
_______
_______

Dispositivos E/S
Programa/Tarefa
Memria
Principal

Sistema Monoprogramvel/Monotarefa

Comparados a outros sistemas, os monoprogramveis so de simples implementao,


no existindo muita preocupao com problemas decorrentes do compartilhamento de recursos
como memria, processador e dispositivos de E/S.

2.2 Sistemas Multiprogramveis/Multitarefa

Constituindo-se uma evoluo dos sistemas monoprogramveis, neste tipo de sistema os


recursos computacionais so compartilhados entre os diversos usurios e aplicaes: enquanto
um programa espera por um evento, outros programas podem estar processando neste mesmo
intervalo de tempo. Neste caso, podemos observar o compartilhamento da memria e do
processador. O sistema operacional se incumbe de gerenciar o acesso concorrente aos seus
diversos recursos, como processador, memria e perifricos, de forma ordenada e protegida,
entre os diversos programas.

As vantagens do uso deste tipo de sistema so a reduo do tempo de resposta das


aplicaes, alm dos custos reduzidos devido ao compartilhamento dos recursos do sistema
entre as diferentes aplicaes. Apesar de mais eficientes que os monoprogramveis, os sistemas
multiprogramveis so de implementao muito mais complexa.

_______
_______
_______ 5
_______
_______
_______
_______
_______
CPU _______
_______

Programa/Tarefa Programa/Tarefa
Memria Dispositivos E/S
Principal
_______
_______
_______
_______
_______ _______
_______
_______
_______
Programa/Tarefa _______

Programa/Tarefa
Sistema Multiprogramvel/Multitarefa

Os sistemas multiprogramveis/multitarefa podem ser classificados de acordo com a


forma com que suas aplicaes so gerenciadas, podendo ser divididos em sistemas batch, de
tempo compartilhado e de tempo real, de acordo com a figura abaixo.

Sistemas
Multiprogramveis/
Multitarefa

Sistemas de Sistemas de
Sistemas BATCH
Tempo Compartilhado Tempo Real

2.2.1 Sistemas BATCH

Foram os primeiros sistemas multiprogramveis a serem implementados na dcada de


60. Nesta modalidade, os programas eram submetidos para execuo atravs de cartes
perfurados e armazenados em disco ou fita, para posterior execuo. Vem da o nome batch
(lote de cartes). O processamento em batch tem como caracterstica no exigir interao do
usurio com o sistema ou com a aplicao. Todas as entradas ou sadas so implementadas por
meio de algum tipo de memria secundria, geralmente disco ou fita. Aplicaes deste tipo
eram utilizadas em clculo numrico, compilaes, back-ups, etc.

6
Estes sistemas, se bem projetados, podem ser bastante eficientes devido melhor
utilizao do processador, mas podem oferecer tempos de resposta bastante longos.
Atualmente, os sistemas operacionais simulam este tipo de processamento, no havendo
sistemas dedicados a este tipo de execuo.

2.2.2 Sistemas de Tempo Compartilhado

Tambm chamados sistemas de time-sharing, permitem que diversos programas sejam


executados a partir da diviso de tempo do processador em pequenos intervalos, denominados
fatia de tempo (ou time-slice). Caso a fatia de tempo no seja suficiente para a concluso do
programa, este interrompido pelo sistema operacional e substitudo no processador por outro,
enquanto aguarda nova fatia de tempo. Neste tipo de processamento, cada usurio tem a
impresso de que a mquina est dedicada ao seu programa, como se ele fosse o nico usurio
a se utilizar do sistema.

Geralmente permitem interao do usurio com a aplicao atravs de terminais


compostos por monitor, teclado e mouse. Estes sistemas possuem uma linguagem de controle
que permite ao usurio interagir com o sistema operacional atravs de comandos. Assim,
possvel verificar arquivos armazenados em disco ou cancelar execuo de programas.
Normalmente, o sistema responde em apenas alguns segundos maioria destes comandos, o
que se levou a cham-los tambm de sistemas on-line.

A maioria das aplicaes comerciais atualmente processada em ambiente de tempo


compartilhado, que oferece tempos baixos de respostas a seus usurios e menores custos, em
funo do alto grau de compartilhamento dos diversos recursos do sistema.

2.2.3 Sistemas de Tempo Real

Este tipo de sistema implementado de forma bastante semelhante ao de tempo


compartilhado. O que caracteriza a diferena entre eles o tempo exigido no processamento
das aplicaes.

Enquanto nos sistemas de tempo compartilhado o tempo de processamento pode variar


sem comprometer as aplicaes em execuo, nos sistemas de tempo real os tempos de
execuo devem estar dentro de limites rgidos, que devem ser obedecidos, caso contrrio
podero ocorrer problemas irreparveis.

No sistema de tempo real no existe a idia de fatia de tempo como nos sistemas de
tempo compartilhado. Um programa ocupa o processador o tempo que for necessrio ou at
que aparea um outro com um nvel de prioridade maior. Esta prioridade de execuo definida
pela prpria aplicao e no pelo sistema operacional, como nos sistemas de tempo
compartilhado.

7
Estes sistemas so utilizados em aplicaes de controle de processos, como
monitoramento de refinarias de petrleo, controle de trfego areo, de usinas, ou em qualquer
aplicao onde o tempo de processamento fator fundamental.

2.3 Sistemas com Mltiplos Processadores

Os sistemas com mltiplos processadores caracterizam-se por possuir duas ou mais CPUs
interligadas e trabalhando em conjunto. A vantagem deste tipo de sistema permitir que
vrios programas sejam executados ao mesmo tempo ou que um mesmo programa seja
subdividido em vrias partes para serem executadas simultaneamente em mais de um
processador.

Esta tcnica permitiu a criao de sistemas computacionais voltados para processamento


cientfico, prospeco de petrleo, simulaes, processamento de imagens e CAD.

Um fator chave no desenvolvimento dos sistemas multiprocessados a forma de


comunicao entre as CPUs e o grau de compartilhamento da memria e dos dispositivos de
E/S. Em funo destes fatores, podemos classificar os sistemas multiprocessados de acordo com
a figura a seguir:

Sistemas
com
Mltiplos
Processadores

Sistemas Sistemas
Fortemente Fracamente
Acoplados Acoplados

Simtricos Assimtricos Redes Distribudos

Tipos de Sistemas com Mltiplos Processadores

Na figura podemos perceber a diviso dos sistemas multiprocessados em duas categorias


iniciais: sistemas fortemente acoplados e fracamente acoplados. A grande diferena entre
estas duas categorias que nos sistemas fortemente acoplados existe apenas uma memria

8
a ser compartilhada pelos processadores do conjunto, enquanto que nos fracamente
acoplados cada sistema tem sua prpria memria individual. A taxa de transferncia entre
processadores e memria em sistemas fortemente acoplados muito maior que nos
fracamente acoplados.

Nos sistemas fortemente acoplados a memria principal e os dispositivos de E/S so


gerenciados por um nico sistema operacional. Quando todos os processadores na
arquitetura so iguais, diz-se que o sistema simtrico. No entanto, quando os
processadores so diferentes, d-se arquitetura a denominao assimtrica.

Nos sistemas fracamente acoplados, como os processadores esto em arquiteturas


diferentes, somente interligados por cabos de interconexo, cada CPU constitui uma
mquina independente, com memria prpria, dispositivos de E/S e sistemas operacionais
independentes.

Nesta subdiviso, temos como exemplo as redes e os sistemas distribudos.

No ambiente de rede, existem dois ou mais sistemas independentes (hosts), interligados


por linhas telefnicas, que oferecem algum tipo de servio aos demais, permitindo que um
host compartilhe seus recursos, como impressora e diretrios, com os outros hosts da rede.

Enquanto nos sistemas em rede os usurios tm conhecimento dos hosts e seus servios,
nos sistemas distribudos os sistema operacional esconde os detalhes dos hosts individuais e
passa a trat-los como um conjunto nico, como se fosse um sistema s, fortemente
acoplado. Os sistemas distribudos permitem, por exemplo, que uma aplicao seja dividida
em partes e que cada parte seja executada por hosts diferentes na rede. Para os usurios e
suas aplicaes como se no existisse a rede, mas um nico sistema centralizado.

Outros exemplos de sistemas distribudos so os clusters. Em um cluster podem existir


dois ou mais servidores ligados por algum tipo de conexo de alto desempenho, e o usurio
no conhece os nomes dos membros do cluster e nem quantos so. Quando necessrio
algum servio, basta solicitar ao cluster para obt-lo, sem se preocupar com quem vai dispor
e oferecer tal servio. Clusters so muito utilizados em servidores de bancos de dados e
Web.

9
3. Sistemas Multiprogramveis

Um Sistema Operacional pode ser visto como um conjunto de rotinas que executam
concorrentemente de forma ordenada. A possibilidade de um processador executar instrues
em paralelo com operaes de entrada e sada permite que diversas tarefas sejam executadas
concorrentemente. este conceito de concorrncia o princpio fundamental para o projeto e
implementao de sistemas multiprogramveis.

Os sistemas multiprogramveis surgiram a partir das limitaes dos sistemas


monoprogramveis onde os recursos computacionais como processador, memria e dispositivos
de E/S eram utilizados de maneira muito pouco eficiente, limitando seu desempenho, com
muitos destes recursos permanecendo ociosos por longos perodos de tempo.

Nos sistemas monoprogramveis somente um programa pode estar em execuo de cada


vez, permanecendo o processador dedicado exclusivamente a uma tarefa, ficando ocioso
enquanto uma operao de leitura em disco realizada. O tempo de espera relativamente
longo, j que as operaes de E/S so muito lentas se comparadas velocidade de operao do
processador.

Outro aspecto a ser considerado a sub-utilizao da memria principal, onde um programa


nem sempre ocupa todo o espao disponvel, ficando o restante inutilizado. Nos sistemas
multiprogramveis vrios programas podem ser alocados na memria, concorrendo pelo uso do
processador. Dessa forma, quando um programa solicita uma operao de E/S, outros
programas podero utilizar o processador, deixando a CPU menos ociosa e tornando o uso da
memria mais eficiente, pois existem vrios residentes e se revezando na utilizao do
processador.

A utilizao concorrente da CPU deve ser feita de maneira que, quando um programa perde
o uso do processador e depois retorna para continuar sua execuo, seu estado deve ser
idntico ao do momento em que foi interrompido. O programa dever continuar sua execuo
exatamente na instruo seguinte quela onde havia parado, aparentando ao usurio que nada
aconteceu. Em sistemas de tempo compartilhado existe a impresso de que o computador est
inteiramente dedicado ao usurio, ficando esse mecanismo totalmente transparente aos
usurios.

Quanto ao uso dos perifricos, comum nos sistemas monoprogramveis comum termos,
por exemplo, impressoras paradas por um grande perodo de tempo e discos com acesso
restrito a um nico usurio. Esses problemas so minimizados nos sistemas multiprogramveis,
onde possvel compartilhar os dispositivos de E/S, como impressoras e discos, entre diversos
usurios e aplicativos.

10
3.1 Interrupo e Exceo

Durante a execuo de um programa, alguns eventos inesperados podem ocorrer,


ocasionando um desvio forado no seu fluxo normal de execuo. Esses eventos so conhecidos
como interrupo ou exceo, e podem ser resultado de sinalizaes de algum dispositivo de
hardware externo ao ambiente memria/processador. A diferena entre interrupo e exceo
dada pelo tipo de evento ocorrido, embora alguns autores e fabricantes no faam tal distino.

A interrupo o mecanismo que permitiu a implementao da concorrncia nos


computadores, sendo o fundamento bsico dos sistemas multiprogramveis/multitarefa.

Uma interrupo sempre gerada por um evento externo ao programa e, sendo assim,
independe da instruo que est sendo executada. Um exemplo de interrupo quando um
dispositivo avisa ao processador que alguma operao de E/S est completa. Neste caso, o
processador deve interromper o programa para tratar o trmino da operao.

Ao trmino de cada instruo a Unidade de Controle (situada dentro do processador)


verifica a ocorrncia de algum tipo de interrupo. Desta forma, o programa em execuo
interrompido e seu controle desviado para uma rotina do sistema responsvel por tratar o
evento ocorrido, denominada rotina de tratamento de interrupo . Para que o programa
interrompido possa retornar posteriormente sua execuo necessrio que, no momento da
interrupo, um certo conjunto de informaes sobre sua execuo seja preservado.

Essas informaes consistem basicamente no contedo dos registradores internos da


CPU, que devero ser restaurados para a continuao do programa.

Programa
Salva
Contexto

Identifica
a origem
Interrupo
Trata a
Rotina
Interrupo
de
Restaura
Tratamento
Contexto

Mecanismo de interrupo/exceo

11
Para cada tipo de interrupo existe uma rotina de tratamento associada, para onde o
fluxo do programa desviado. A identificao do tipo de evento ocorrido fundamental para
determinar o endereo da rotina adequada ao tratamento da interrupo.

As interrupes podem ser geradas:

- Pelo programa do usurio (entrada de dados pela console ou teclado)


- Pelo hardware (operaes de E/S)
- Pelo sistema operacional (ao trmino da fatia de tempo do processador destinada ao
programa)

As interrupes sempre so tratadas pelo Sistema Operacional.

A exceo um evento semelhante interrupo, pois tambm de fato interrompe um


programa.

A principal diferena que a exceo o resultado da execuo de uma instruo dentro


do prprio programa, como a diviso por zero ou a ocorrncia de um overflow (estouro de
capacidade de um campo) numa operao aritmtica.

Na maioria das vezes, a exceo provoca um erro fatal no sistema, causando o trmino
anormal do programa. Isto se deve ao fato de que a exceo melhor tratada dentro do
prprio programa, com instrues escritas pelo programador.

3.2 Buffer

A tcnica de buffering consiste nua utilizao de uma rea em memria principal,


denominada buffer, criada e mantida pelo Sistema Operacional, com a finalidade de auxiliar
a transferncia de dados entre dispositivos de E/S e a memria. O buffer permite minimizar
a disparidade de velocidade entre o processador e os dispositivos de E/S, e tem como
objetivo principal manter tanto os dispositivos de E/S como o processador ocupados a maior
parte do tempo.

A unidade de transferncia do mecanismo de buffering o registro. O buffer deve


permitir o armazenamento de vrios registros, de forma que o processador tenha sua
disposio dados suficientes para processar sem ter que interromper o programa a cada
leitura/gravao no dispositivo de E/S. Enquanto o processador est ocupado processando,
os dispositivos de E/S esto efetuando operaes para outros processos.

3.3 SPOOL

A tcnica de spooling foi criada inicialmente para auxiliar a submisso de processos ao


sistema, sendo os processos gravados em fita para posterior leitura e execuo.

12
Com o aparecimento dos terminais para acesso ao sistema, esta tcnica teve sua funo
adaptada para armazenar o resultado da impresso dos programas em execuo.

Isto conseguido atravs da criao e manuteno, pelo Sistema Operacional de uma


grande rea em disco, com a finalidade de simular uma impressora. Desta forma, todos os
usurios e seus programas imprimem, na verdade, para este arquivo em disco, liberando a
associao dos dispositivos de impresso diretamente aos programas que esto executando.

O usurio consegue visualizar o resultado de seus programas na tela dos terminais,


gerando assim mais eficincia e economia de papel e fita de impresso. proporo que vo
sendo gerados no SPOOL, os relatrios vo sendo liberados para impresso pelo operador do
sistema, de forma ordenada e seqencial. Para cada usurio, como se ele tivesse uma
impressora associada para si.

3.4 Reentrncia

comum, em sistemas multiprogramveis, vrios usurios utilizarem os mesmos


aplicativos simultaneamente, como editores de texto, compiladores e outros utilitrios. Nesta
situao, se cada usurio que utilizasse um destes aplicativos trouxesse o cdigo executvel
para a memria, haveria ento diversas cpias de um mesmo programa ocupando espao na
memria, o que causaria um grande desperdcio de espao.

Reentrncia a capacidade de um cdigo executvel (cdigo reentrante) ser


compartilhado por vrios usurios, exigindo apenas uma cpia do programa em memria. A
reentrncia permite que cada usurio esteja executando um trecho diferente do cdigo
reentrante, manipulando dados prprios, exclusivos de cada usurio.

Normalmente cdigos reentrantes so utilizados em utilitrios do sistema, como editores,


compiladores e linkers, promovendo um uso mais eficiente da memria e um desempenho
maior do sistema. Alguns sistemas operacionais permitem a possibilidade de se implementar
o conceito de reentrncia em aplicaes desenvolvidas pelo prprio usurio, mas no
comum.

3.5 Segurana e Proteo do Sistema

A eficincia proporcionada por um ambiente multiprogramvel implica em maior


complexidade do sistema operacional, j que alguns problemas de proteo surgem como
decorrncia deste tipo de implementao.

Considerando-se que diversos usurios esto compartilhando os mesmos recursos,


como memria, processador e dispositivos de E/S, faz-se ento necessrio existir
mecanismos de proteo para garantir a confiabilidade e a integridade dos dados e
programas dos usurios, alm do prprio sistema operacional.

13
Como vrios programas ocupam a memria principal simultaneamente, cada usurio
possui uma rea reservada onde seus programas e dados so armazenados durante o
processamento. O sistema operacional deve possuir mecanismos de proteo a essas reas,
de forma a preservar as informaes nela contidas. Caso um programa tente acessar uma
posio de memria fora de sua rea, um erro indicando a violao de acesso deve ocorrer,
sendo responsabilidade do sistema operacional o controle eficiente do compartilhamento dos
recursos e a sincronizao da comunicao, evitando problemas de consistncia.

Semelhante ao compartilhamento da memria, um disco tambm armazena arquivos


de diferentes usurios. Novamente o sistema operacional deve garantir a integridade e
confiabilidade dos dados de cada usurio.

Todo o controle da segurana do sistema implementado pelo sistema operacional, a


partir de mecanismos como grupos de usurios, perfis de usurios e direitos de acesso.

A proteo comea geralmente no procedimento de login, quando o usurio faz a


conexo inicial ao sistema, atravs de nome do usurio e senha. A partir da, toda uma
estrutura de controle iniciada, em funo da identificao do usurio, no sentido de
proteger as reas alocadas em memria, em disco, e at mesmo o uso do processador.

A proteo e segurana do sistema pode ser implementada tambm a nvel do


programa do usurio, com a insero de rotinas especficas dentro do programa para
controlar o acesso de usurios ao aplicativo, alm de controlar internamente quais telas e
funes tal usurio pode acessar.

3.6 Operaes de Entrada e Sada

Nos primeiros sistemas computacionais, a comunicao entre o processador e os


perifricos era direta, sendo o processador responsvel por efetuar as operaes de
leitura/gravao nos dispositivos.

O surgimento do controlador de E/S permitiu ao processador agir de maneira


independente dos dispositivos de E/S. Com esse novo elemento, o processador no mais se
comunicava diretamente com os perifricos, mas sim via controlador.

Passou a existir ento trs maneiras bsicas de se implementar operaes de E/S:

- por programa: o processador sincronizava-se com o perifrico e iniciava a


transferncia de dados, ficando permanentemente testando o estado do perifrico
para saber quando a operao chegaria ao seu final. O processador ficava ocupado
at o trmino da operao de E/S.

14
- por interrupo: evoluindo o processo anterior, aps o incio da transferncia de
dados o processador passou a ficar livre para realizar outras tarefas. Assim, em
determinados intervalos de tempo o sistema operacional deveria testar o estado dos
perifricos para saber se a operao de E/S tinha terminado. Este tipo de operao
permitiu um certo grau de paralelismo, j que um programa poderia ser processado
enquanto uma operao de leitura/gravao em perifrico estava sendo efetuada.
Isto permitiu a implementao dos primeiros sistemas multiprogramveis.

Memria
Principal
CPU

Controlador

Dispositivos de E/S

- A necessidade de se transmitir cada vez um volume maior de informaes trouxe


uma evoluo significativa nas operaes de E/S. Em vez de o processador ser
interrompido vrias vezes para interrogar os dispositivos para saber do resultado
das operaes, o que diminua sua eficincia devido ao excesso de interrupes, foi
criado um dispositivo de transferncia de dados chamado de DMA Direct Memory
Access. Esta tcnica permite que um bloco de dados seja transferido entre a
memria e os dispositivos de E/S sem a interveno do processador, a no ser no
incio (quando a operao solicitada) e no final da transferncia (quando o
processador notificado sobre o trmino da operao). Na figura a seguir,
podemos ver a implementao do canal de E/S gerenciando vrios controladores e,
ligados a estes, vrios perifricos.

O canal de E/S funciona ento como uma interface entre os controladores e a CPU,
como mostra a figura a seguir:

15
Memria
Principal
CPU

Canal de E/S

Controlador Controlador

Dispositivos de E/S Dispositivos de E/S

4. Estrutura do Sistema Operacional

16
4.1 Estrutura do Sistema

USURIO

UTILITRIOS

NCLEO
DO SISTEMA

HARDWARE

Hierarquia do Sistema Operacional

O sistema operacional formado por um conjunto de rotinas que oferecem servios


essenciais aos usurios, s suas aplicaes, e tambm ao prprio sistema. A esse conjunto
de rotinas d-se o nome de ncleo do sistema ou kernel.

fundamental no se confundir o ncleo do sistema com aplicaes, utilitrios ou o


interpretador de comandos, que acompanham o sistema operacional. As aplicaes so
utilizadas pelos usurios de maneira transparente, escondendo todos os detalhes da
interao com o sistema. Os utilitrios, como os compiladores, editores de texto e
interpretadores de comandos permitem aos usurios, desenvolvedores e administradores de
sistema uma interao amigvel com o sistema.

Existe uma grande dificuldade em compreender a estrutura e o funcionamento do


sistema operacional, pois ele no executado como uma aplicao tipicamente seqencial,
com incio, meio e fim. Os procedimentos do sistema so executados concorrentemente sem
uma ordem especfica ou predefinida, com base em eventos dissociados do tempo. Muitos
desses eventos esto relacionados ao hardware e a tarefas internas do prprio sistema
operacional.

4.2 Funes do Sistema

17
As principais funes do ncleo encontradas na maioria dos sistemas comerciais so as
seguintes:

- Tratamento de interrupes e excees: j explicados anteriormente, em detalhes;

- Criao e eliminao de processos: funo responsvel por alocar em memria todos os


recursos necessrios execuo do processo. esta funo que aloca em memria, alm
do executvel, o contexto do processo, o buffer de leitura/gravao (se necessrio), alm
de listas e estruturas de controle utilizadas pelo sistema operacional. Nesta funo
tambm so estabelecidos vnculos fsicos a arquivos em disco, fitas e outros perifricos
que sero usados no processamento. Quando do fim da execuo do programa, esta
funo que desaloca todos os espaos em memria ocupados pelo processo, liberando-os
para futuras alocaes a outros processos;

- Escalonamento e controle de processos: funo responsvel por organizar a fila de


acesso ao processador. Utiliza parmetros do sistema e do perfil do usurio para
estabelecer a ordem em que os processos permanecero espera pela liberao da CPU,
para ento entrarem em execuo;

- Gerncia de memria: funo responsvel por fornecer funo de criao/eliminao de


processos os endereos em memria disponveis para alocao;

- Gerncia de sistemas de arquivos: responsvel pelo gerenciamento dos arquivos, bem


como seu compartilhamento pelos diversos usurios, implementando mecanismos de
controle da segurana e direitos de acesso s reas utilizadas pelos usurios nos diversos
dispositivos;

- Gerncia de dispositivos de E/S: responsvel por gerenciar os dispositivos, prestando


auxlio criao/eliminao de processos e gerncia de sistemas de arquivos no que diz
respeito ao endereamento e associao de arquivos em perifricos;

- Suporte a redes e teleprocessamento: esta funo que executa todos os servios de


rede, fazendo o empacotamento das mensagens vindas dos terminais para a CPU central
e vice-versa, alm de controlar e confirmar o envio e recebimento de todas as
mensagens que trafegam pela rede;

- Contabilizao de uso do sistema: responsvel por contabilizar o uso de todos os recursos


do sistema consumidos pelos usurios e suas aplicaes. So registrados: tempo de CPU,
tempo corrido, quantidade de rea alocada em memria, em disco, linhas impressas,
pginas de papel, entre outros. Isto se faz necessrio para servir de subsdio para anlise
de performance, estatsticas de gastos com material de consumo e tambm para
definio de custos de processamento.;
- Auditoria e segurana do sistema: funo extremamente importante, pois detecta e
registra (num arquivo especial de LOG) todas as ocorrncias de erro e violao de

18
direitos de acesso ao sistema, aos arquivos, memria e a todos os recursos do sistema.
O arquivo de LOG usado pela gerncia de sistemas, com o intuito de verificar e
aperfeioar os mecanismos de segurana e proteo ao sistema.

A estrutura do sistema, a maneira como ele organizado e o inter-relacionamento entre


seus diversos componentes pode variar conforme a concepo do projeto do sistema.

4.3 System Calls

Uma grande preocupao no projeto de sistemas operacionais se refere implementao de


mecanismos de proteo ao ncleo do sistema e tambm o controle de acesso aos servios
oferecidos pelo sistema. Caso uma aplicao que tenha acesso ao ncleo realize alguma
operao que altere sua integridade, todo o sistema poder ficar comprometido e inoperante.

As system calls podem ser entendidas como uma porta de entrada para acesso ao ncleo do
sistema e aos seus servios. Sempre que um usurio ou uma aplicao necessita de algum
servio do sistema, realizada uma chamada a uma de suas rotinas atravs de uma system call.

Atravs dos parmetros fornecidos na system call, a solicitao processada e uma


resposta enviada aplicao juntamente com um estado de concluso indicando o sucesso ou
no da operao. Para cada servio disponvel existe uma system call associada, e cada sistema
operacional possui seu prprio conjunto de chamadas, com nomes, parmetros e formas de
ativao especficos. Isto explica por que uma aplicao desenvolvida utilizando servios de um
determinado sistema operacional no pode ser diretamente portada para um outro sistema.

Aplicao

Ncleo do
System Call Sistema
Operacional

Biblioteca Hardware

4.4 Modos de Acesso

19
Existem certas instrues que no podem ser colocadas diretamente disposio das
aplicaes, pois a sua utilizao indevida poderia ocasionar srios problemas integridade do
sistema. Imagine que uma aplicao atualize um arquivo em disco. O programa, por si s, no
pode especificar diretamente as instrues que acessam seus dados no disco pois, como o disco
um recurso compartilhado, sua utilizao deve ser gerenciada unicamente pelo sistema
operacional. Tal procedimento evita que a aplicao possa ter acesso a qualquer rea do disco
indiscriminadamente, o que poderia comprometer a segurana e a integridade do sistema de
arquivos.

Assim, fica claro que existem certas instrues que s podem ser executadas pelo sistema
operacional ou sob sua superviso. As instrues que tm o poder de comprometer o sistema
so chamadas de instrues privilegiadas, enquanto as instrues que no comprometem o
funcionamento do sistema chamam-se instrues no-privilegiadas.

Para que uma aplicao possa executar uma instruo privilegiada, preciso que haja um
mecanismo de proteo no processador, chamado modos de acesso. Existem basicamente dois
modos de acesso ao processador: modo usurio e modo kernel. Quando o processador trabalha
no modo usurio, somente instrues no-privilegiadas podem ser executadas, tendo assim
acesso a um nmero limitado de instrues do processador. J no modo kernel (ou supervisor),
a aplicao pode ter acesso ao conjunto total de instrues do processador.

A melhor maneira de controlar o acesso s instrues privilegiadas permitir que apenas o


sistema operacional tenha acesso a elas. Sempre que uma aplicao necessita executar uma
instruo privilegiada, a solicitao deve ser feita atravs de uma system call, que altera o modo
de acesso ao processador do modo usurio para o modo kernel. Ao trmino da execuo da
rotina do sistema, o modo de acesso retorna para o modo usurio.

20
4.5 Arquiteturas: Sistemas monolticos, em camadas e microkernel

- Arquitetura monoltica: caracterizada por possuir seus mdulos compilados


separadamente mas linkados formando um nico e enorme programa executvel. Onde
os mdulos podem interagir livremente. Os primeiros sistemas operacionais foram
desenvolvidos com base nesta arquitetura, o que tornava seu desenvolvimento e,
principalmente, sua manuteno muito difceis. Como vantagens desta arquitetura
podemos citar a rapidez de execuo e simplicidade de implementao. Como
desvantagens, a limitao quanto a inovaes futuras e a dificuldade de manuteno.

Aplicao Aplicao

Modo Usurio

Modo Kernel System call

Ncleo
do
Sistema

Hardware

Arquitetura monoltica

21
- Arquitetura em camadas: com o aumento do tamanho do cdigo dos sistemas
operacionais, tcnicas de programao estruturada e modular foram incorporadas em seu
projeto.Na arquitetura em camadas, o sistema dividido em nveis sobrepostos. Cada
camada oferece um conjunto de funes que podem ser utilizadas somente pelas
camadas superiores. Neste tipo de implementao as camadas mais internas so mais
privilegiadas que as camadas mais externas. A vantagem da estruturao em camadas
o isolamento das funes do sistema, facilitando sua manuteno. Uma desvantagem o
desempenho, comprometido devido s vrias mudanas de estado do processador
provocado pela mudana de camadas. A figura a seguir mostra esta arquitetura.

Camada Usurio

Camada Supervisor

Camada Executivo

Kernel

Arquitetura em camadas

- Arquitetura microkernel (cliente x servidor): uma tendncia nos sistemas operacionais


modernos tornar o ncleo do sistema o menor e o mais simples possvel. Para
implementar esta idia, os servios do sistema so disponibilizados atravs de processos,
onde cada um responsvel por oferecer um conjunto especfico de funes, como
gerncia de arquivos, gerncia de processos, gerncia de memria e escalonamento.
Sempre que uma aplicao deseja algum servio, realizada uma solicitao ao processo
responsvel. Neste caso, a aplicao que est solicitando o servio chamada de cliente,
enquanto o processo que responde solicitao chamado de servidor. Um cliente, que
pode ser uma aplicao do usurio ou um outro componente do sistema operacional,
solicita um servio enviando uma mensagem para o servidor. O servidor responde ao
cliente atravs de uma outra mensagem. A principal funo do ncleo realizar a
comunicao, ou seja, a troca de mensagens entre o cliente e o servidor. A utilizao
deste modelo permite que os servidores operem em modo usurio, no tendo acesso

22
direto a certos componentes do sistema. Apenas o ncleo do sistema, responsvel pela
comunicao entre clientes e servidores, executa em modo kernel. Como conseqncia,
se ocorrer um erro em algum servidor,este poder parar, mas o sistema no ficar
inteiramente comprometido, aumentando assim a sua disponibilidade. Como os
servidores se comunicam atravs de trocas de mensagens, no importa se os clientes e
servidores processam em um sistema com um nico processador, com vrios
processadores ou ainda em um ambiente de sistema distribudo. A arquitetura
microkernel permite isolar as funes do sistema operacional por diversos servidores
pequenos e dedicados a servios especficos, tornando o ncleo menor, mais fcil de
depurar (procurar e solucionar erros) e, com isso, aumentando a sua confiabilidade.
Apesar de todas as vantagens deste modelo, sua implementao muito difcil. A
comear pelo desempenho, comprometido devido s vrias trocas de modo de acesso a
cada troca de mensagens entre cliente e servidor. Outro problema que certas funes
do sistema operacional, como operaes de E/S, exigem acesso direto ao hardware.
Assim, o ncleo do sistema, alm de promover a comunicao entre clientes e servidores,
passa a incorpora funes crticas do sistema, como escalonamento, tratamento de
interrupes e gerncia de dispositivos.

Servidor Servidor
Servidor Rede
Arquivo
Memria
Servidor Servidor
Processo Impresso

Modo Usurio

Modo Kernel

Microkernel

Hardware

5. PROCESSO

23
O conceito de processo a base para a implementao de um sistema multiprogramvel. O
processador projetado apenas para executar instrues, no sendo capaz de distinguir qual
programa se encontra em execuo.A gerncia de um ambiente multiprogramvel funo
exclusiva do sistema operacional, que deve controlar a execuo dos diversos programas e o
uso concorrente do processador.

A gerncia do processador uma das principais funes de um sistema operacional. Atravs


dos processos, um programa pode alocar recursos, compartilhar dados e trocar informaes.

5.1 Componentes do processo

Um processo pode ser entendido inicialmente como um programa em execuo, que tem
suas informaes mantidas pelo sistema operacional.

Num sistema multiusurio, cada usurio tem a impresso de possuir o processador e todos
os demais recursos reservados exclusivamente para si, mas isto no verdade. Todos os
recursos esto sendo compartilhados, inclusive a CPU. Neste caso, o processador executa o
processo do usurio por um intervalo de tempo e, no instante seguinte, poder estar
processando um outro programa, do mesmo ou de outro usurio.

Para que a troca de processos possa ser feita sem problemas, necessrio que todas as
informaes do programa que est sendo interrompido sejam guardadas, para que ele possa
retornar CPU exatamente do ponto em que parou, no lhe faltando nenhuma informao vital
sua continuao. Todas as informaes necessrias execuo de um programa fazem parte
do processo.

Um processo tambm pode ser definido como o ambiente onde o programa executado.
Este ambiente, alm das informaes sobre a execuo, possui tambm a quantidade de
recursos do sistema que o programa pode utilizar,como espao de endereamento, tempo do
processador e rea em disco.

Um processo formado por trs partes: contexto de software, contexto de hardware e


espao de endereamento, que juntas mantm todas as informaes necessrias execuo de
um programa.

24
Estrutura do processo:

Contexto de Contexto de
Software Hardware
________
________
________
Programa

Espao de
endereamento

Contexto de Software: neste contexto so especificadas caractersticas e limites dos


recursos que podem ser alocados pelo processo, como nmero mximo de arquivos
abertos, prioridade de execuo, nmero mximo de linhas impressas, etc. Muitas destas
caractersticas so criadas no momento da criao do processo, quando da sua alocao.

O sistema operacional obtm, a partir do cadastro de usurios e do cadastro de


contas no sistema, as informaes e caractersticas que valero para o processo.

O contexto de software composto por tr?es grupos de informaes:

- Identificao: neste grupo so guardadas informaes sobre o usurio que criou o


processo, e, em funo disso, suas reas de atuao no sistema.

- Quotas: so os limites de recursos do sistema que um processo pode alocar, como


rea utilizada em disco, em memria, limite de linhas impressas, nmero mximo
de arquivos abertos, nmero mximo de operaes de E/S pendentes, tempo
limite de CPU, etc.

- Privilgios: diz respeito principalmente s prioridades assumidas pelo processo


durante sua execuo.

Contexto de Hardware: armazena o contedo dos registradores gerais da CPU, alm dos
registradores de uso especfico. Quando um processo est em execuo, o seu contexto
de hardware est armazenado nos registradores da CPU. No momento em que o
processo perde a utilizao da CPU, o sistema salva as informaes no contexto de
hardware do processo.

A troca de um processo por outro no processador, comandada pelo sistema


operacional, denominada troca de contexto, que consiste em salvar o contedo dos
registradores do processo que est deixando a CPU e carrega-los com os valores

25
referentes ao do novo processo que ir executar. Essa operao resume-se em substituir
o contexto de hardware de um processo pelo de outro.

Espao de endereamento: a rea de memria pertencente a um processo onde as


instrues e os dados do programa so armazenados para execuo. Cada processo
possui seu prprio espao de endereamento, que deve ser devidamente protegido do
acesso dos demais processos. Os contextos de software e de hardware no fazem parte
do espao de endereamento .

Bloco de controle do processo: a estrutura de dados que compe o processo, contendo


os contextos de software e de hardware e o espao de endereamento. O BCP reside em
memria, numa rea reservada ao sistema operacional.

5.2 Estados do processo

Num sistema multiprogramvel, um processo no deve alocar a CPU com exclusividade,


de forma que possa existir um compartilhamento no uso do processador. Os processos
passam por diferentes estados ao longo do processamento, em funo de eventos gerados
pelo sistema operacional, pelo hardware, ou pelo prprio programa. So estados possveis
de um processo:

- Criao: neste estado o processo est sendo alocado na memria, sendo criado no
sistema. Todos os recursos necessrios execuo do processo so reservados
durante a passagem do processo por este estado, o que acontece uma nica vez.
Vrios processos podem estar neste estado, ao mesmo tempo.

- Pronto: o estado onde os processos, depois de criados ou quando retornam do


tratamento de uma interrupo, permanecem aguardando a liberao da CPU para
que possam iniciar ou continuar seu processamento. como se fosse uma fila,
gerenciada pelo sistema operacional, que se incumbe de organizar os processos de
acordo com as informaes contidas no contexto de software (identificao,
quotas e privilgios). Vrios processos podem estar neste estado, ao mesmo
tempo.

- Execuo: onde o processo efetivamente utiliza a CPU. Ele permanece no


processador at que seja interrompido ou termine sua execuo. Neste estado,
somente um processo pode permanecer de cada vez, j que existe apenas um
processador.

- Espera: neste estado esto todos os processos que sofreram algum tipo de
interrupo de E/S, onde permanecem at que a interveno seja resolvida. Vrios
processos podem estar neste estado, ao mesmo tempo.

26
- Sada: o estado final do processo, quando este termina seu processamento.
Vrios processos podem estar neste estado, ao mesmo tempo.

5.3 Mudanas de estado do processo

Um processo muda de estado diversas vezes durante sua permanncia no sistema,


devido aos eventos ocorridos durante sua execuo. So mudanas possveis:

- Criao Pronto: o processo foi criado, tem seus recursos alocados, e est apto a
disputar o uso da CPU.

- Pronto Execuo: o processo o primeiro da fila de pronto e a CPU fica


disponvel. Neste momento o processo passa a ocupar a CPU, permanecendo em
execuo at que seja interrompido ou termine sua execuo.

- Execuo Pronto: o processo foi interrompido por fatia de tempo ou por


prioridade. Ainda precisa de mais tempo na CPU para terminar sua execuo, no
tem nenhuma interveno pendente, por isso volta fila de pronto para disputar
novamente o uso da CPU.

- Execuo Espera: esta transio acontece quando o processo foi interrompido


por E/S. Significa que deve permanecer no estado de espera at que a interrupo
seja tratada pelo sistema. Neste estado o processo fica impedido de disputar o uso
da CPU.

- Espera Pronto: Aps o trmino do tratamento da interrupo, o processo volta


fila de pronto para disputar novamente o uso da CPU.

- Execuo Sada: o processo terminou, e no mais disputar o uso da CPU.

A seguir, a figura mostra as mudanas possveis de estado de um processo.

Pronto

Execuo

Mudanas de estado de um
processo

27
5.4 Tipos de processos

Alm dos processos do usurio, a CPU tambm executa processos do sistema. So aqueles
que oferecem os servios do sistema operacional aos usurios, como criao/eliminao de
processos, tratamento de interrupo e todos aqueles correspondentes s funes do sistema j
estudadas. Estes executam sempre, com certa prioridade, concorrendo com os processos do
usurio.

Os processos em execuo, do usurio, podem assumir dois tipos diferentes, de acordo com
suas caractersticas de uso de CPU e perifricos:

- Processo CPU-bound: aquele processo que utiliza muito a CPU. Ele ganha uma fatia de
tempo e a utiliza por inteiro, sem desperdiar nenhum tempo. o caso de programas
cientficos, de clculo numrico, estatstica, matemtica, e tambm na rea de simulao.
Normalmente fazem pouca ou nenhuma entrada de dados, e muito processamento.

- Processo I/O-bound: o tipo de processo que utiliza muito mais E/S do que CPU.
Aplicaes em Banco de Dados, onde se faz consultas e atualizaes constantes em
arquivos em disco so um bom exemplo deste tipo de processo. De acordo com essas
caractersticas, podemos dizer que este tipo de processo permanece mais tempo em
espera (tratando interrupes) do que propriamente em execuo, ocupando a CPU por
perodos mnimos de tempo.

28
6. Gerncia do Processador

6.1 Funes

Com o surgimento dos sistemas multiprogramveis, onde mltiplos processos poderiam


permanecer na memria e disputar o uso de um nico processador, a gerncia do processador
tornou-se uma das atividades mais importantes em um sistema operacional.

A partir do momento em que vrios processos podem estar no estado de pronto, devem
ser estabelecidos critrios para definir qual processo ser escolhido para fazer uso do
processador. Tais critrios compem a poltica de escalonamento, que a base da gerncia do
processador e da multiprogramao em um sistema operacional.

Dentre as funes da gerncia do processador, podemos citar: manter o processador


ocupado a maior parte do tempo. balancear o uso da CPU entre processos, privilegiar a
execuo de aplicaes crticas, maximizar o throughput e oferecer tempos de resposta
razoveis aos usurios interativos.

Cada sistema operacional possui sua poltica de escalonamento adequada ao seu


propsito e s suas caractersticas. Sistemas de tempo compartilhado, por exemplo, possuem
requisitos de escalonamento distintos dos sistemas de tempo real.

6.2 Critrios de escalonamento

- Utilizao do processador: corresponde a uma taxa de utilizao, que na maioria dos


sistemas varia entre 30 e 90%. Uma utilizao abaixo dos 30% indicaria um sistema
ocioso, com carga de processamento baixa, enquanto uma taxa de utilizao acima dos
90% pode indicar um sistema bastante carregado, prximo da sua capacidade mxima
(em alguns casos tal situao pode levar a um crash travamento do sistema).

- Throughput: o nmero de processos executados em um determinado intervalo de


tempo. Quanto maior o throughput, maior o nmero de tarefas executadas em funo do
tempo. A maximizao do throughput desejada na maioria dos sistemas.

- Tempo de Processador: o tempo que um processo leva no estado de execuo,


durante seu processamento. As polticas de escalonamento no interferem neste
parmetro, sendo este tempo funo apenas do cdigo executvel e da entrada/sada de
dados.

- Tempo de Espera (pela CPU): todo o tempo que o processo permanece na fila de
pronto, aguardando a liberao da CPU para ser executado. A reduo deste tempo de
espera desejada pela maioria das polticas de escalonamento.

29
- Tempo de Turnaround: o tempo total que o processo permaneceu no sistema, desde
sua criao at o momento em que encerrado. So contados os tempos de alocao
de memria, espera na fila de pronto e interrupo (E/S).

- Tempo de Resposta: o tempo decorrido entre uma requisio ao sistema e o instante


em que a resposta comea a ser exibida. Em sistemas interativos, como aplicaes on-
line ou acesso Web, os tempos de resposta devem ser da ordem de apenas poucos
segundos.

6.3 Escalonamentos No-Preemptivos e Preemptivos

Escalonamentos do tipo no-preemptivos so aqueles onde o sistema operacional no


pode interromper o processo em execuo para retir-lo da CPU. Assim sendo, se nenhum
evento externo ocorresse durante a execuo do processo, este permanecia na CPU at
terminar ou ento alguma instruo do prprio programa o desviasse para o estado de espera
(operao de E/S).

J os escalonamentos preemptivos so caracterizados pela possibilidade de o sistema


operacional interromper o processo em execuo para retir-lo da CPU e dar lugar a outro.
Neste caso o processo retirado da CPU volta ao estado de pronto, onde permanece
aguardando nova oportunidade de ocupar a CPU. Com o uso da preempo, possvel ao
sistema priorizar a execuo de processos, como no caso de aplicaes em tempo real. Outro
benefcio a possibilidade de implementar polticas de escalonamento que compartilhem o
processador de uma maneira mais uniforme, balanceando o uso da CPU entre os processos.

So escalonamentos no-preemptivos:

- FIFO: o processo que chegar primeiro fila de pronto selecionado para execuo, e
permanece utilizando o processador at terminar sua execuo ou ser interrompido por
E/S. Neste caso, o prximo processo da fila de pronto selecionado para execuo.
Todo processo que chega fila de pronto entra no final desta fila, conservando a ordem
de chegada na fila, at ser escalonado novamente. Apesar de simples, este
escalonamento apresenta algumas deficincias, principalmente no que diz respeito
dificuldade de se prever o incio da execuo de um processo, j que a ordem de
chegada fila de pronto deve ser observada risca. Outro problema quanto aos tipos
de processo, onde os CPU-bound levam vantagem no uso do processador em relao
aos do tipo I/O-bound, pois o sistema no trata este tipo de diferena. O escalonamento
FIFO foi inicialmente implementado em sistemas monoprogramveis, sendo ineficiente
se aplicado em sistemas interativos de tempo compartilhado.

30
Abaixo, um exemplo de escalonamento utilizando o mtodo FIFO: a ordem de chegada
dos processos (A, B, C) na fila de pronto foi obedecida, e, no tendo sido interrompidos por
E/S, os processos executaram inteiramente at terminar, de acordo com seus tempos
necessrios para execuo.

0 10 18 27

Processo A Processo B Processo C


10 u.t. 8 u.t. 9 u.t.

- SJF (Shortest Job First): este escalonamento seleciona o processo que tiver o menor
tempo de processador ainda por executar. Desta forma, o processo que estiver na fila de
pronto com menor necessidade de tempo de CPU para terminar o seu processamento
ser o escolhido para ocupar a CPU. Funciona com um parmetro passado ao sistema
via contexto de software, onde o tempo estimado para o processo informado
baseando-se em estatsticas de execues anteriores.

Como exemplo, vamos utilizar os mesmos processos executados no


escalonamento FIFO acima, com seus respectivos tempos de execuo em u.t.
(unidades de tempo): processo A com 10 u.t., processo B com 8 u.t, e o processo C com
9 u.t. Como neste escalonamento o que importa o tempo de execuo, a nova ordem
de escalonamento para utilizao da CPU ser B, C e A, como segue:

0 8 17 27

Processo B Processo C Processo A

- Cooperativo: este escalonamento busca aumentar o grau de concorrncia no


processador. Neste caso, um processo em execuo pode voluntariamente liberar o
processador retornando fila de pronto, possibilitando que um novo processo seja
escalonado, permitindo melhor distribuio do tempo do processador. A liberao da
CPU uma tarefa exclusiva do programa em execuo, que de maneira cooperativa
libera o processador para um outro processo. Neste mecanismo, o processo em
execuo verifica periodicamente uma fila de mensagens para saber se existem outros
processos na fila de pronto. Porm, como a interrupo do processo no depende do
sistema operacional, situaes indesejveis podem ocorrer, como por exemplo, se um
programa em execuo no verificar a fila de mensagens, os demais programas no
tero chance de executar enquanto a CPU no for liberada. As primeiras verses do
Windows chegaram a utilizar este tipo de escalonamento.

31
So escalonamentos preemptivos:

- Circular: um tipo de escalonamento projetado especialmente para sistemas em tempo


compartilhado. muito semelhante ao FIFO (obedece a ordem de chegada fila de
PRONTO), mas quando um processo passa para o estado de execuo h um limite de
tempo para o uso contnuo do processador, chamado fatia de tempo (time-slice) ou
quantum. Assim, toda vez que um processo selecionado para execuo uma nova fatia
de tempo lhe concedida. Caso esta fatia de tempo expire, o sistema operacional
interrompe o processo, salva seu contexto e o direciona para a fila de PRONTO. Este
mecanismo conhecido como preempo por tempo. A principal vantagem deste
escalonamento no permitir que um processo monopolize a CPU. Outrossim, uma
desvantagem que os processos CPU-bound so beneficiados no uso do processador
em relao aos processos I/O-bound, pois tendem a utilizar totalmente a fatia de tempo
recebida. A figura a seguir mostra o escalonamento circular com 3 processos, onde a
fatia de tempo igual a 2 u.t. No exemplo no esto sendo levados em considerao
tempos de troca de contexto entre os processos, nem o tempo perdido em operaes de
E/S. Os processos A, B e C, gastam 10 u.t, 6 u.t e 3 u.t., respectivamente.

u.t.
2 4 6 8 10 11 17

- Por Prioridades: funciona com base num valor associado a cada processo, denominado
prioridade de execuo. O processo com maior prioridade na fila de PRONTO sempre
o escolhido para ocupar o processador, sendo os processos com prioridades iguais
escalonados pelo critrio FIFO. Neste escalonamento o conceito da fatia de tempo no
existe. Como conseqncia disto, um processo em execuo no pode sofrer preempo
por tempo. Neste escalonamento a perda do uso do processador somente ocorrer no
caso de uma mudana voluntria para o estado de espera (interrupo por E/S), ou
quando um outro processo de prioridade maior passa (ou chega) para o estado de
pronto. Neste caso o sistema operacional interrompe o processo em execuo, salva seu
contexto e o coloca na fila de pronto, dando lugar na CPU ao processo prioritrio. Este
mecanismo chamado de preempo por prioridade. A figura a seguir mostra a
execuo dos processos A, B e C, com tempos de execuo de 10, 4 e 3 u.t.
respectivamente, e valores de prioridades de 2, 1 e 3, tambm respectivamente. Na

32
maioria dos sistemas, valores menores correspondem MAIOR prioridade. Assim, a
ordem de execuo ser invertida para B, A e C.

C
4 14 17 u.t.

A prioridade de execuo faz parte do contexto de software do processo, e pode ser


esttica (quando no pode ser alterada durante a existncia do processo) ou dinmica
(quando pode ser alterada durante a existncia do processo). Este escalonamento
muito usado em sistemas de tempo real, com aplicaes de controle de processos,
controle de trfego (sinais de trnsito, de trens/metr, areo), robtica, entre outros.

- Escalonamento Circular com Prioridades: implementa o conceito de fatia de tempo e de


prioridade de execuo associada a cada processo. Neste escalonamento, um processo
permanece no estado de execuo at que termine seu processamento, ou
voluntariamente passe para o estado de espera (interrupo por E/S), ou sofra uma
preempo por tempo ou prioridade. A principal vantagem deste escalonamento
permitir um melhor balanceamento no uso do processador, com a possibilidade de
diferenciar o grau de importncia dos processos atravs da prioridade (o Windows utiliza
este escalonamento).

- Por Mltiplas Filas: Este escalonamento implementa vrias filas de pronto, cada uma
com prioridade especfica. Os processos so associados s filas de acordo com
caractersticas prprias, como importncia da aplicao, tipo de processamento ou rea
de memria necessria. Assim, no o processo que detm a prioridade, mas sim a fila.
O processo em execuo sofre preempo caso um outro processo entre em uma fila de
maior prioridade. O sistema operacional s pode escalonar processos de uma fila
quando todas as outras filas de maior prioridade estejam vazias. Os processos sempre
voltam para a mesma fila de onde saram.

- Por Mltiplas Filas com Realimentao: semelhante ao anterior, porm permitindo ao


processo voltar para uma outra fila de maior ou menor prioridade, de acordo com seu
comportamento durante o processamento. O sistema operacional identifica
dinamicamente o comportamento de cada processo e o redireciona para a fila mais
conveniente ao longo de seu processamento. um algoritmo generalista, podendo ser
implementado na maioria dos sistemas operacionais.
7. Gerncia de Memria / Memria Virtual

33
7.1 Introduo

Historicamente, a memria principal sempre foi vista como um recurso escasso e caro.
Uma das maiores preocupaes dos projetistas foi desenvolver sistemas operacionais que no
ocupassem muito espao de memria e, ao mesmo tempo, otimizassem a utilizao dos
recursos computacionais. Mesmo atualmente, com a reduo do custo e o aumento considervel
da capacidade da memria principal, seu gerenciamento dos fatores mais importantes no
projeto e implementao dos sistemas operacionais.

Enquanto nos sistemas monoprogramveis a gerncia de memria no muito complexa,


nos sistemas multiprogramveis essa gerncia se torna crtica, devido necessidade de se
maximizar o nmero de usurios e aplicaes utilizando eficientemente o espao da memria
principal.

7.2 Funes

Geralmente, os programas so armazenados em memrias secundrias, de uso


permanente e no volteis, como discos ou fitas. Como o processador somente executa o que
est na memria principal, o sistema operacional deve sempre transferir programas da memria
secundria para a principal antes de serem executados.Como o tempo de acesso s memrias
secundrias muito superior ao tempo de acesso memria principal, o sistema operacional
deve buscar reduzir o nmero de operaes de E/S (acessos memria secundria) a fim de
no comprometer o desempenho do sistema.

A gerncia de memria deve tentar manter na memria principal o maior nmero de


processos residentes, permitindo maximizar o compartilhamento do processador e demais
recursos computacionais. Mesmo no havendo espao livre, o sistema deve permitir que novos
processos sejam aceitos e executados. Outra preocupao na gerncia de memria permitir a
execuo de programas maiores do que a memria fsica disponvel.

Em um ambiente de multiprogramao o sistema operacional deve proteger as reas de


memria ocupadas por cada processo, alm da rea onde reside o prprio sistema. Caso um
programa tente realizar algum acesso indevido memria, o sistema deve, de alguma forma,
impedir o acesso.

7.3 Alocao Contgua Simples

Este tipo de alocao foi implementado nos primeiros sistemas operacionais, embora
ainda nos dias de hoje esteja presente em alguns sistemas monoprogramveis. Nesse modelo, a
memria principal dividida em duas partes, uma para o sistema operacional e a outra para o
programa do usurio. Dessa forma, o programador deve desenvolver suas aplicaes
preocupado apenas em no ultrapassar o espao de memria disponvel.

34
Neste esquema o usurio tem total controle sobre toda a memria, exceto naquela rea
onde reside o sistema operacional, cujo endereamento protegido por um registrador,
impedindo acesso indevido pelo usurio.

Sistema
Operacional X
registrador

rea para
programas

Proteo na alocao contgua simples

Apesar de simples implementao e cdigo reduzido, a alocao contgua simples no


permite a utilizao eficiente dos recursos do sistema, pois apenas um usurio pode dispor
destes recursos. H inclusive um desperdcio de espao de memria, caso o programa no
venha a ocupar toda a rea reservada para ele.

Sistema
Operacional

Programa do
Usurio

rea livre

Sub-utilizao da memria principal

7.4 Segmentao de Programas

Na alocao contgua simples todos os programas esto limitados ao tamanho da


memria principal disponvel para o usurio. Uma soluo encontrada para o problema dividir
o programa em mdulos, de modo que seja possvel a execuo independente de cada mdulo,
utilizando a mesma rea de memria. A esta tcnica d-se o nome de segmentao ou overlay.
Consideremos um programa que tenha trs mdulos: um principal, um de cadastramento
e outro de impresso, sendo os mdulos de cadastramento e impresso independentes. A

35
independncia significa que quando um mdulo estiver na memria para execuo, o outro no
necessariamente precisa estar presente.O mdulo principal comum aos outros dois, logo,
precisa estar na memria durante todo o tempo da execuo do programa.

Na figura a seguir, a memria insuficiente para armazenar todo o programa, que


totaliza 9 KB. A tcnica de overlay utiliza uma rea de memria comum para armazenar o
mdulo principal do programa e uma outra rea na mesma memria, chamada rea de overlay,
que ser compartilhada entre os mdulos de cadastramento e impresso. Assim, sempre que
um dos mdulos for referenciado no mdulo principal, o sistema o carregar da memria
secundria para a rea de overlay, sobrepondo o mdulo antigo na memria.

Memria Principal

Sistema
2 KB Operacional Cadastramento
3 KB Mdulo
Principal 4 KB

4 KB rea de
Overlay Impresso
2 KB
1 KB
rea livre 2 KB

Tcnica de Overlay

A definio das reas de overlay funo do programador, atravs de comandos


especficos da linguagem de programao utilizada.

A grande vantagem da utilizao desta tcnica consiste em se poder executar programas


maiores do que a memria fsica disponvel.

7.5 Alocao Particionada Esttica

Os sistemas operacionais evoluram no sentido de proporcionar melhor aproveitamento


dos recursos disponveis. Nos sistemas monoprogramveis o processador permanece grande
parte do tempo ocioso e a memria principal sub-utilizada. Os sistemas multiprogramveis j
so muito mais eficientes no uso do processador, necessitando que vrios processos estejam na
memria principal ao mesmo tempo e que novas formas de gerncia de memria sejam
implementadas.

36
Nos primeiros sistemas multiprogramveis a memria era dividida em blocos de tamanho
fixo, chamados parties.O tamanho dessas parties, estabelecido em tempo de inicializao
do sistema, era definido em funo do tamanho dos programas que executariam no
ambiente.Sempre que fosse necessria a alterao do tamanho de uma partio, o sistema
deveria ser inicializado novamente com uma nova configurao.

Sistema
Operacional
Partio 1 2 KB
Partio 2 5 KB

Partio 3 8 KB

Inicialmente, os programas s podiam ser carregados e executados em apenas uma


partio especfica, mesmo que as outras estivessem disponveis. Esta limitao se devia aos
compiladores e linkeditores, que geravam apenas cdigo absoluto. No cdigo absoluto, todas as
referncias a endereos no programa so posies fsicas na memria, ou seja, o programa s
poderia ser carregado a partir do endereo de memria especificado no seu prprio cdigo. A
esse tipo de alocao de memria chamou-se alocao particionada esttica absoluta.

Coma evoluo dos compiladores, linkeditores, montadores e loaders, o cdigo gerado


deixou de ser absoluto e passou a ser relocvel . No cdigo relocvel, todas as referncias a
endereos no programa so relativas ao incio do cdigo e no a endereos fixos na memria.
Desta forma, os programas puderam ser alocados em qualquer partio livre, independente do
endereo inicial e da partio para a qual o cdigo foi criado. A esse tipo de alocao deu-se o
nome de alocao particionada esttica relocvel.

Tanto nos sistemas de alocao absoluta como nos de alocao relocvel, os programas,
normalmente, no ocupam totalmente as parties onde so alocados, deixando algum espao
livre dentro das parties. Este tipo de problema, decorrente do esquema de alocao fixa de
parties, chamado fragmentao interna.

A figura a seguir mostra um grfico representando o particionamento esttico de uma


memria e sua fragmentao interna.

Memria Principal

Sistema

37
Operacional
Programa C
1 KB
Programa A

Fragmentao
interna 3 KB

Programa E

5 KB

Alocao particionada esttica com fragmentao interna

7.6 Alocao Particionada Dinmica

A alocao particionada esttica deixou clara a necessidade de uma nova forma de


gerncia de memria principal, onde o problema da fragmentao interna fosse reduzido e,
conseqentemente, o grau de compartilhamento da memria aumentado.

Na alocao particionada dinmica, foi eliminado o conceito de parties de tamanho fixo.


Nesse esquema, cada programa, ao ser carregado, utilizaria o espao necessrio sua
execuo, tornando esse espao a sua partio. Assim, como os programas utilizam apenas o
espao de que necessitam, no esquema de alocao particionada dinmica o problema da
fragmentao interna deixa de existir.

Porm, com o trmino de alguns programas e o incio de outros, passam a existir na


memria blocos cada vez menores na memria, no permitindo o ingresso de novos programas.
A este tipo de problema d-se o nome de fragmentao externa.

Para resolver o problema da fragmentao externa, os fabricantes tentaram duas


solues:
- reunio de todos os blocos livres adjacentes, formando uma grande rea livre, que se
transforma em uma nova partio;

- realocao de todas as parties ainda ocupadas para a parte inicial da memria,


eliminando os blocos livres entre elas, formando uma grande rea livre no final da
memria, que podia ser distribuda entre os processos ainda por executar. A este tipo
de compactao de espaos livres foi dado o nome de alocao particionada dinmica
com realocao.

38
Estas solues ajudaram a diminuir os problemas da fragmentao (tanto interna como
externa), mas, devido complexidade dos algoritmos, nem todos os sistemas operacionais
as utilizaram.

7.7 Estratgias de Alocao de Partio

Os sistemas operacionais implementam basicamente trs estratgias para determinar em


qual rea livre um programa ser alocado para execuo. Essas estratgias tentam evitar ou
diminuir o problema da fragmentao.

A melhor estratgia a ser adotada por um sistema depende de uma srie de fatores,
sendo o mais importante o tamanho dos programas executados no ambiente.

Independentemente do algoritmo utilizado, o sistema possui uma lista das reas livres,
com endereo e tamanho de cada rea.

So estratgias de alocao:

- Best-fit: escolhida a melhor partio, ou seja, aquela que deixa o menor espao sem
utilizao. Uma grande desvantagem desta estratgia que, como so alocados
primeiramente as parties menores, deixando pequenos blocos, a fragmentao
aparece mais rapidamente.

- Worst-fit: aloca o programa na pior partio, ou seja, aquela que deixa o maior
espao livre. Esta tcnica, apesar de aproveitar primeiro as parties maiores, acaba
deixando espaos livres grandes o suficiente para que outros programas utilizem
esses espaos, permitindo que um nmero maior de processos se utilizem da
memria, diminuindo ou retardando a fragmentao.

- First-fit: esta estratgia aloca o programa na primeira partio que o couber,


independente do espao livre que vai deixar. Das trs estratgias, esta a mais
rpida, consumindo menos recursos do sistema.

7.8 Swapping

uma tcnica aplicada gerncia de memria que visa dar maior taxa de utilizao
memria principal, melhorando seu compartilhamento. Visa tambm resolver o problema da
falta de memria principal num sistema.
Toda vez que um programa precisa ser alocado para execuo e no h espao na
memria principal, o sistema operacional escolhe entre os processos alocados que no tem
previso de utilizar a CPU nos prximos instantes (quase sempre entre aqueles que esto em

39
interrupo de E/S ou no final da fila de pronto), e descarrega este processo da memria para
uma rea especial em disco, chamada arquivo de swap, onde o processo fica armazenado
temporariamente. Durante o tempo em que o processo fica em swap, o outro que necessitava
de memria entra em execuo ocupando o espao deixado pelo que saiu. Pouco antes de
chegar a vez do processo armazenado em swap utilizar a CPU, o sistema escolhe um outro
processo para descarregar para swap e devolve o anterior da rea de swap para a memria
principal, para que este possa ser executado novamente. E vai trabalhando assim at que os
processos vo terminando. O problema dessa tcnica que pode provocar um nmero
excessivo de acesso memria secundria (disco), levando o sistema a uma queda de
desempenho.

7.9 Memria Virtual

Anteriormente foram apresentadas diversas tcnicas de gerenciamento de memria que


evoluram no sentido de maximizar o nmero de processos residentes na memria principal e
reduzir o problema da fragmentao, porm os esquemas vistos se mostraram muitas vezes
ineficientes. Alm disso, o tamanho dos programas e de suas estruturas de dados estava
limitado ao tamanho da memria disponvel. Como vimos, a utilizao da tcnica de overlay
para contornar este problema de difcil implementao na prtica e nem sempre uma soluo
garantida e eficiente.

Memria virtual uma tcnica sofisticada e poderosa de gerncia de memria onde as


memrias principal e secundria so combinadas, dando ao usurio a impresso de que existe
muito mais memria do que a capacidade real de memria principal.

O conceito de memria virtual baseia-se em no vincular o endereamento feito pelo


programa aos endereos fsicos da memria principal. Desta forma, o programa e suas
estruturas de dados deixam de estar limitados ao tamanho da memria fsica disponvel, pois
podem possuir endereos vinculados memria secundria, que funciona como uma extenso
da memria principal.

Outra vantagem desta tcnica permitir um nmero maior de processos compartilhando


a memria principal, j que apenas partes de cada processo estaro residentes. Isto leva a uma
utilizao mais eficiente do processador, alm de minimizar (ou quase eliminar) o problema da
fragmentao.

A seguir, os conceitos que envolvem a gerncia de memria virtual, incluindo a


paginao:
- espao de endereamento virtual : o conjunto de endereos virtuais que um
processo pode enderear.

- Espao de endereamento real: analogamente, o conjunto de endereos reais que


um processo pode enderear.

40
- Mapeamento: como o espao de endereamento virtual no tem nenhuma relao
com o espao de endereamento real, um programa pode fazer referncia a um
endereo virtual que esteja fora dos limites da memria principal (real), ou seja, os
programas e suas estruturas de dados no esto mais limitados ao tamanho da
memria fsica disponvel. Quando um programa executado, apenas uma parte do
seu cdigo fica residente na memria principal, permanecendo o restante na memria
virtual at o momento de ser referenciado. Este esquema de endereamento virtual
ignorado pelo programador no desenvolvimento das aplicaes. Cabe ao compilador e
ao linkeditor gerar cdigos executveis em funo do endereamento virtual, e o
sistema operacional se incumbe de administrar os detalhes durante a sua execuo. O
processador apenas executa instrues e referencia dados residentes no espao de
endereamento real. Portanto, deve existir um mecanismo que transforme os
endereos virtuais em endereos reais. Este mecanismo o que chamamos de
mapeamento, e consiste em permitir a traduo do endereo virtual em endereo
real. Como conseqncia, um programa no mais precisa estar necessariamente em
endereos contguos na memria real para ser executado.

- Tabela de endereamento de pginas: estrutura mantida pelo sistema para


armazenar, entre outras informaes, o mapeamento. nica e exclusiva para cada
processo, relacionando os endereos virtuais do processo s suas posies na
memria real.

- Memria virtual por paginao: 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 do espao virtual so chamadas
pginas virtuais, enquanto as pginas do espao real so chamadas pginas reais ou
frames.

- Page fault: a falha de pgina. Sempre que o processo referencia um endereo


virtual, o sistema verifica se a pgina correspondente j est carregada na memria
real. Se no estiver, acontece o page fault. Neste caso, o sistema deve transferir a
pgina virtual para um endereo na memria real. Esta transferncia chamada de
paginao. O nmero de page faults gerados por um processo em um determinado
intervalo de tempo chamado de taxa de paginao do processo. Se esta taxa atingir
valores elevados, pode haver um comprometimento do desempenho do sistema. Um
page fault provoca uma interrupo no processo, pois h a necessidade de acessar
operaes de E/S. Assim, sempre que acontece a paginao, uma interrupo de E/S
far com que o processo em execuo seja interrompido e colocado em estado de
espera at que sua interveno de E/S seja realizada, quando ento o processo
voltar fila de pronto e entrar em execuo de acordo com o escalonamento
normal. Enquanto o sistema trata a interrupo deste processo, um outro ocupar a
CPU.

41
- Working-set: o conjunto de pginas de um processo, em memria real, em um
determinado instante. Este conceito surgiu com o objetivo de reduzir o problema do
thrashing e est relacionado ao princpio da localidade. Existem dois tipos de
localidade que so observados durante a execuo da maioria dos programas. A
localidade espacial a tendncia de que, aps uma referncia a um endereo de
memria, sejam realizadas novas referncias a endereos prximos ou adjacentes. A
localidade espacial a tendncia de que, aps a referncia a uma posio de
memria, esta mesma posio seja referenciada novamente num curto intervalo de
tempo. A partir desse princpio de localidade, o processador tender a concentrar suas
referncias a um conjunto de pginas do processo durante um determinado perodo
de tempo. Imagine um loop principal de um programa que ocupe trs pginas. A
tendncia que estas trs pginas tenham um alto ndice de referncias durante a
execuo do programa.

- Thrashing: o efeito causado pelo excesso de page faults durante a execuo de um


processo. Pode acontecer a nvel de programa ou de sistema. A nvel de programa,
pode ser provocado por um programa mal escrito, com desvios incondicionais
espalhados por seu cdigo (desobedecendo portanto aos princpios da localidade), ou
por um limite de working-set muito pequeno (que no comporte o loop principal do
programa, por exemplo). A soluo para estes casos reescrever o programa ou
aumentar o limite do working-set. No caso de thrashing de sistema, significa que h
mais pginas sendo requeridas na memria real do que ela pode realmente suportar.
A soluo aumentar o tamanho da memria fsica.

- Tamanho da pgina: deve estar entre 512 bytes e 128KB, aproximadamente. Pginas
menores promovem maior compartilhamento da memria, permitindo que mais
programas possam ser executados. Pginas maiores diminuem o grau de
compartilhamento da memria, com menos programas disputando o processador.
Assim conclui-se que quanto menor o tamanho da pgina, MAIOR o grau de
compartilhamento da memria e da CPU.

- Polticas de busca de pginas: definem como as pginas sero carregadas da memria


virtual para a memria real. A poltica por demanda estabelece que uma pgina
somente ser carregada quando for referenciada. Este mecanismo conveniente, pois
leva para a memria real somente as pginas realmente necessrias execuo do
programa, ficando as outras na memria virtual. A outra poltica, chamada paginao
antecipada, funciona carregando antecipadamente vrias pginas da memria virtual
para a principal, na tentativa de economizar tempo de E/S. Nem sempre o sistema
acerta na antecipao, mas o ndice de acertos quase sempre maior que o de erros.
- Polticas de alocao de pginas: determinam quantos frames cada processo pode
manter na memria real. A poltica de alocao fixa determina um limite de working-
set igual para todos os processos, e pode ser vista como uma poltica injusta, na
medida em que processos maiores normalmente necessitam de um working-set maior.
A outra poltica a varivel, que define um limite de working-set diferente e varivel

42
para cada processo, em funo de seu tamanho, taxa de paginao ou at mesmo da
taxa de ocupao da memria principal.

- Polticas de substituio de pginas: definem onde sero trocadas as pginas, quando


se fizer necessria uma substituio. Na poltica local, somente as pginas do
processo que gerou o page fault so candidatas a serem substitudas.J na poltica
global, todas as pginas alocadas na memria principal so candidatas substituio,
independente do processo que gerou o page fault. Como uma pgina de qualquer
processo pode ser escolhida, pode ser que este processo sofra um aumento
temporrio da taxa de paginao em funo da diminuio das suas pginas alocadas
em memria.

7.10 Algoritmos de substituio de pginas

O maior problema na gerncia de memria virtual por paginao no decidir quais


pginas carregar para a memria real, mas sim quais pginas liberar. Quando h a necessidade
de carregar uma pgina, o sistema deve selecionar entre as diversas pginas alocadas na
memria qual delas dever ser liberada pelo processo.

Os algoritmos de substituio de pginas tm o objetivo de selecionar os frames que


tenham as menores chances de serem referenciados num futuro prximo. Caso contrrio, o
frame poderia retornar diversas vezes para a memria real, provocando excesso de page faults.
So algoritmos de substituio de pginas:

- algoritmo timo: impossvel de ser implementado, pois o processador no consegue


prever com segurana qual frame no ser mais referenciado durante a execuo do
programa. Tal fato deve-se lgica do programa e aos dados que ele manipula,
desconhecidos pelo processador.

- Algoritmo aleatrio: escolhe qualquer pgina, entre as alocadas na memria, para


fazer a substituio. Em funo de sua baixa eficincia, este algoritmo no muito
utilizado, embora consuma poucos recursos do sistema.

- Algoritmo FIFO (first in, first out): escolhe a pgina que est h mais tempo na
memria principal para fazer a troca. um algoritmo de simples implementao, mas
corre o risco de retirar uma pgina que, embora tenha sido carregada h mais tempo,
esteja sendo muito utilizada. Por essa razo no muito usado.
- Algoritmo LFU (least frequently used): elege a pgina menos freqentemente usada
para efetuar a troca. Atravs de um contador, armazenado na tabela de
endereamento de pginas, mo sistema identifica quantas referncias cada pgina
teve e utiliza esta informao para escolher a pgina.

43
- Algoritmo LRU (least recently used) : elege a pgina menos recentemente usada para
fazer a troca. O sistema mantm na tabela de endereamento de pginas um campo
onde so armazenadas a data e a hora da ltima referncia de cada pgina, e com
base nestas informaes faz a seleo.

- Algoritmo NRU (not recently used): elege a pgina menos recentemente usada para
efetuar a troca. O sistema exclui da deciso a pgina mais recente e escolhe entre as
outras, pelo mtodo FIFO, qual pgina deve sair.

44
8. Gerncia de Sistemas de Arquivos

8.1 Estrutura de Diretrios

como o Sistema organiza logicamente os arquivos. Contm entradas associadas aos


arquivos, com as informaes de localizao, nome, organizao e outros atributos:

Nvel nico: a implementao mais simples de uma estrutura de diretrios, onde existe
um nico diretrio contendo todos os arquivos do disco. muito limitado, no permitindo
a criao de arquivos com o mesmo nome.

Diretrio pessoal: Evoluo do modelo anterior, permite a cada usurio ter ser diretrio
particular, sem a preocupao de conhecer os outros arquivos do disco. Neste modelo h
um diretrio master que indexa todos os diretrios particulares dos usurios, provendo
o acesso a cada um.

Mltiplos nveis (RVORE): o modelo utilizado hoje em dia em quase todos os Sistemas
Operacionais. Nesta modalidade cada usurio pode criar vrios nveis de diretrios (ou
sub-diretrios), sendo que cada diretrio pode conter arquivos e sub-diretrios. O
nmero de nveis possveis depende do Sistema Operacional.

8.2 Sistemas de alocao de arquivos

FAT: sistema criado no MS-DOS e depois utilizado no Windows. Usa listas encadeadas,
tem um limite de rea utilizvel em parties de 2 GB, caracteriza-se por um baixo
desempenho no acesso e armazenamento.

FAT32: igual ao FAT no que diz respeito a organizao e desempenho, mas pode
trabalhar com parties de at 2TB.

NTFS: NT File System, original da plataforma Windows NT/2000/XP. Opera com uma
estrutura em rvore binria, oferecendo alto grau de segurana e desempenho:

- nomes de arquivo com at 255 caracteres, podendo conter maisculas, minsculas


e espaos em branco;
- dispensa ferramentas de recuperao de erros;
- bom sistema de proteo de arquivos;
- criptografia;
- suporta discos de at 264 bytes.

UNIX: Usa diretrio hierrquico, com um raiz e outros diretrios subordinados. Neste
Sistema Operacional todos os arquivos so considerados apenas como uma seqncia
de bytes, sem significado para o Sistema. responsabilidade da aplicao controlar os

45
mtodos de acesso aos arquivos. O UNIX utiliza tambm alguns diretrios padronizados,
de exclusividade do Sistema.

8.3 Gerncia de espao livre

So trs as formas de se implementar estruturas de espaos livres. Uma delas atravs


de uma tabela denominada mapa de bits, onde cada entrada da tabela associada a um bloco
do disco representado por um bit, que estando com valor 0 indica que o espao est livre, e
com valor 1 representa um espao ocupado. Gasta muita memria, pois para cada bloco do
disco h uma entrada na tabela.

A segunda forma utilizando uma lista encadeada dos blocos livres do disco. Desse
modo, cada bloco possui uma rea reservada para armazenar o endereo do prximo bloco
livre. Apresenta problemas de lentido no acesso, devido s constantes buscas seqenciais na
lista.

A terceira forma a tabela de blocos livres. Nesta, leva em considerao que blocos
contguos de dados geralmente so alocados/liberados simultaneamente. Desta forma, pode-se
enxergar o disco como um conjunto de segmentos de blocos livres. Assim, pode-se manter uma
tabela com o endereo do primeiro bloco de cada segmento e o nmero de blocos contguos
que se seguem.

- Alocao contgua: armazena o arquivo em blocos seqencialmente dispostos no


disco. O arquivo localizado atravs do endereo do primeiro bloco de sua
extenso em blocos. O principal problema neste tipo de alocao a existncia de
espao livre para novos arquivos, que deve ser contgua. Utiliza as estratgias
best-fit, worst-fit e first-fit (j conhecidas) para definir onde o arquivo ser
alocado. Causa alto ndice de fragmentao no disco.

- Alocao encadeada: nesta modalidade o arquivo organizado como um conjunto


de blocos ligados logicamente no disco, independente de sua localizao fsica,
onde cada bloco possui um ponteiro para o bloco seguinte. A fragmentao no
representa problemas na alocao encadeada, pois os blocos livres para alocao
do arquivo no necessariamente precisam estar contguos. O que acontece a
quebra do arquivo em vrios pedaos, o que aumenta o tempo de acesso. Neste
tipo de alocao s se permite acesso seqencial aos blocos do arquivo, sendo
esta uma das principais desvantagens da tcnica. Outra desvantagem a perda de
espao nos blocos com o armazenamento dos ponteiros.

- Alocao indexada: esta tcnica soluciona a limitao da alocao encadeada, no


que diz respeito ao acesso, pois permite acesso direto aos blocos do arquivo. Isso
conseguido mantendo-se os ponteiros de todos os blocos do arquivo em uma
nica estrutura chamada bloco de ndice. Este tipo de alocao, alm de permitir
acesso direto aos blocos, no utiliza informaes de controle nos blocos de dados.

46
8.4 Proteo de acesso

Considerando-se que os meios de armazenamento so compartilhados por vrios


usurios, fundamental que mecanismos de proteo sejam implementados para garantir a
integridade e proteo individual dos arquivos e diretrios:

- Senha de acesso: mecanismo de simples implementao, mas apresenta duas


desvantagens: no possvel determinar quais os tipos de operao podem ser
efetuadas no arquivo, e, se este for compartilhado, todos os usurios que o
utilizam devem conhecer a senha de acesso.

- Grupos de usurio: muito utilizada em muitos Sistemas Operacionais. Consiste


em associar cada usurio a um grupo. Os grupos so organizados logicamente
com o objetivo de compartilhar arquivos e diretrios no disco. Este mecanismo
implementa trs nveis de proteo: OWNER (dono), GROUP (grupo) e ALL
(todos). Na criao do arquivo o usurio especifica se o arquivo pode ser acessado
somente pelo seu criador, pelo grupo ou por todos os usurios, alm de definir
que tipos de acesso podem ser realizados (leitura, escrita, execuo e eliminao)

- Lista de controle de acesso: uma lista associada ao arquivo onde so


especificados quais os usurios e os tipos de acesso permitidos. O tamanho
dessa estrutura pode ser bastante extenso se considerarmos que um arquivo
pode ser compartilhado por vrios usurios. Alm deste problema, h o
inconveniente de se fazer acesso seqencial lista toda vez que um acesso
solicitado. Em determinados sistemas de arquivos pode-se utilizar uma
combinao de proteo por grupos de usurios ou por listas de acesso,
oferecendo assim maior flexibilidade ao mecanismo de proteo de arquivos e
diretrios.

47
9. BIBLIOGRAFIA

Arquitetura de Sistemas Operacionais


Francis B. Machado
Ed. LTC

Sistemas Operacionais: Conceitos e Aplicaes


Abraham Silberschatz
Ed. Campus

Sistemas Operacionais Modernos


A.S. Tanenbaum
Ed. Campus

48

You might also like