Você está na página 1de 22

VII - Gerenciamento de Memria

emria o segundo recurso de maior importncia dentro da arquitetura de um sistema computador. A disponibilidade e o gerenciamento deste recurso vital para o desempenho do sistema. Assim, fatores como a quantidade de memria disponvel, tempo de acesso e custo so capitais na sua especificao e aquisio. Evidente que o desejado poder-se ter memria de maior capacidade, que seja bastante rpida e cujo custo seja no mnimo compatvel com o dos demais componentes do computador. Como era de esperar, existe uma relao de compromisso (trade-off) entre estes trs fatores, na realidade o que ocorre que: memrias mais rpidas apresentam maior custo por bit armazenado; memrias de maior capacidade apresentam menor custo por bit; e quanto maior a capacidade da memria mais lenta ela ser. Estes fatos fazem com que os projetistas busquem solucionar o problema, dentro das restries inerentes a tecnologia atualmente disponvel, adotando no uma mas sim um conjunto de memrias organizadas segundo uma hierarquia tal que possibilite adequar custo, capacidade de armazenamento e tempo de resposta.

VII.1 Nveis hierrquicos de Armazenamento


Seis nveis, conforme pode ser visto na figura VII.1 abaixo, formam uma estrutura de memria que opera integrada e ordenada segundo a capacidade de armazenamento, a velocidade de acesso que proporcionam ao sistema e ao custo por bit.

registradores Memria cache Memria principal Disco eletrnico

Disco magntico Disco ptico Fita magntica

Figura VII.1 - Nveis Hierrquicos de Armazenamento Quanto mais elevado o nvel na pirmide, mais rpida, de menor capacidade e de custo mais elevado o dispositivo de memria. O intercmbio de dados entre os diferentes dispositi-

Gerenciamento 13

de

Memria

vos que compem o sistema hierrquico de memria deve ser suportado pelo sistema operacional da forma mais transparente e segura possvel. Com esta estrutura possvel alcanar os seguintes marcos: 1. decrscimo no custo global do sistema por bit armazenado; 2. aumento da capacidade global de armazenamento; 3. melhoria do desempenho (tempo de acesso); 4. reduo do nmero de acessos memria principal. a) Registradores Localizados no interior da UCP, servem de memria (buffer) para as operaes internas a UCP e so de acesso exclusivo ao processo corrente. Resumem-se a alguns poucos registradores, cujo nmero e tamanho depende da arquitetura interna de hardware da UCP. So de tamanho fixo e normalmente idntico ao da palavra de memria. b) Cache uma memria RAM de tamanho reduzido e com velocidade de acesso bem mais elevada do que a da memria principal. utilizada com o objetivo de acelerar a execuo dos processos possibilitando acesso mais rpido quelas palavras mais freqentemente referenciadas e, com isto, explorar o princpio da localidade de referncia dos dados e dos programas. A cache geralmente localizada dentro da UCP, compartilhando da arquitetura interna e dos barramentos desta. Funcionalmente, a cache se situa entre os registradores e a memria principal e, assim, toda operao de leitura (ou escrita) na memria tem sua execuo, primeiramente, tentada na memria cache (fig. VII.2).

CPU

CACHE OU

MP

Figura VII.2 - Esquema de Acesso com CACHE Presente Se o dado estiver na cache, ocorrer um hit, e esta ento que fornece o dado UCP; caso contrrio ocorrer um miss, e a memria principal fornecer o dado UCP e memria cache. Os dados entre cache e UCP so transferidos com base na palavra (word) e entre a memria principal e a cache a transferncia feita em blocos, como mostra a figura VII.3.

UCP

palavras

Cache

blocos

MP

Figura VII.3 - Unidade de transferncia para Cache e MP

14 VII

Antonio G. Thom

Cap.

O uso da cache otimiza o acesso memria principal, geralmente muito mais lenta, por esta servir UCP em grande parte dos acessos e evitar assim, a ida at a MP. O tempo de acesso nestes casos passa a ser dado pela seguinte expresso:

tma = tc + (1-hit) * tmp

onde, tma tc tmp hit tempo mdio de acesso tempo de acesso cache tempo de acesso MP probabilidade do dado estar na cache

Assim, se por exemplo, um computador possui memria principal com tempo de acesso da ordem de 1.5s e memria cache com tempo de acesso da ordem de 0.1s. O tempo necessrio para ler 1000 bytes com taxas de hit respectivamente de 0%, ou seja, 100% de acesso memria principal, e de 85%, ser: a) tma1 = 1000 * (0.1 + 1.5) = 1.6ms e b) tma2 = 1000 * (0.1+ 0.15 * 1.5) = 325s Outras medidas de desempenho so eficincia de acesso (T1/Tma) e de custo (Cs). Em outras palavras:
T1 = Tma 1 hit + (1 hit ) T2 T1

onde, Tma T1 T2 hit tempo mdio de acesso considerando-se 2 nveis de memria tempo mdio de acesso da memria de mais alto nvel tempo mdio de acesso da memria de mais baixo nvel taxa de localizao do dado na memria de nvel mais elevado

Observe que quanto mais T1/Tma se aproxima de 1, maior ser o grau de eficincia do sistema. e

C S + C2 S2 Cs = 1 1 S1 + S2

onde, Cs C1 C2 S1 S2 custo mdio por bit combinados dois nveis adjacentes de memria custo mdio por bit da memria de nvel mais elevado custo mdio por bit da memria de nvel mais baixo tamanho da memria de nvel mais elevado (M1) tamanho da memria de nvel mais baixo (M2)

Gerenciamento 15

de

Memria

A eficincia agora est direo da proximidade de Cs com C2, uma vez que C1 tende a ser muito maior que C2. Isto geralmente requer que S1 seja muito menor que S2. O projeto de uma memria cache envolve os seguintes aspectos: 1. 2. 3. 4. 5. Tamanho da cache Unidade de transferncia com a MP Funo de alocao Algoritmo de substituio estratgia para operaes de escrita Cache Tag Bloco

MP

Bloco de k palavras
palavra

Bloco de comprimento K

Figura VII.4 - Organizao fsica da MP e da Cache Mesmo um tamanho pequeno de cache introduz uma melhora sensvel no desempenho do sistema. O tamanho do bloco, por outro lado, est ligado taxa de hit. Ao ser elevado tende a aumentar o hit porm, a partir de um certo tamanho passa a provocar um reflexo contrrio, em virtude da intensificao da troca de blocos por substituio. A Funo de Alocao se refere ao processo de escolha dos possveis locais de armazenamento para um bloco a ser trazido da MP e o Algoritmo de Substituio se refere, em caso de necessidade, estratgia de escolha, dentre os locais selecionados pela funo de alocao, daquele bloco de dados a ser retirado da cache para abrir espao para o novo que entra. As operaes de escrita num sistema dotado de memria cache, precisam de uma ateno especial, com vistas a manter a coerncia do sistema (cache coherency). Num extremo temos a estratgia chamada write-through, onde tanto a cache como a MP so atualizadas a cada operao de escrita corresponde e no outro a write-back, onde a MP somente atualizada ao final de toda uma seqncia de operaes ou quando o dado alterado precisar deixar a cache em virtude do algoritmo de substituio. Na tcnica write-through, caso a memria cache retorne um hit ou um miss a ao do sistema ser a seguinte: no caso de um hit (ou seja, o dado se encontra na cache)

16 VII

Antonio G. Thom

Cap.

1. escreve o novo valor do dado na cache, e 2. escreve o novo valor do dado tambm na MP (fig VII.5).

CPU

CACHE

MP

write

Figura VII.5 - Esquema de write-through com hit no caso de um miss (o dado no se encontra na cache) 1. l o dado na MP e o grava na cache, 2. escreve o novo valor do dado na cache, e 3. escreve o novo valor do dado tambm na MP (fig VII.6)

CPU

CACHE

MP

read write

Figura VII.2b - Esquema de write-through com miss Na tcnica write-back, caso a memria cache retorne um hit a ao do sistema ser a seguinte: 1. escreve o novo valor do dado apenas na cache tantas vezes quanto puder, e
CPU CACHE MP

write

2. l da cache e escreve o valor na MP somente quando precisar remover o dado da cache por falta de espao ou no final do processamento do programa (fig VII.7).

CPU

CACHE

MP

read

write

Figura VII.7 - Esquema de write-back com hit, (a) escreve apenas na CACHE tantas vezes quantas necessrias, (b) escreve (copia) o dado na MP uma nica vez ao final do processamento ou quando necessrio para abrir espao na Cache

Gerenciamento 17

de

Memria

No caso de um miss (o dado no se encontra na cache) escreve o novo valor do dado apenas na MP (fig. VII.8).

CPU

CACHE

MP

write

Figura VII.8 - Esquema de write-back com miss c) Memria Principal constituda por um determinado nmero de clulas, cada uma podendo armazenar uma quantidade fixa de informao e sendo individualizada por um endereo nico. A clula representa a unidade de acesso memria, isto , a menor quantidade de bits que pode ser individualmente endereada e acessada. O tamanho (quantidade de bits) de cada clula depende da arquitetura fsica do computador. A clula de memria muitas vezes referenciada como byte por geralmente coincidir com o tamanho deste. Na figura VII.9 abaixo so apresentados os tamanhos de clula para alguns computadores conhecidos. ex. Mquina Borroughs B1700 IBM PC PDP8 IBM 1130 XDS 940 XDS Sigma 9 CDC 3600 CDC Cyber bits/clula 1 8 12 16 24 32 48 60

Figura VII.8 - Tamanhos de Clulas para alguns computadores conhecidos d) Memria Virtual uma estratgia de utilizao combinada da memria principal com a memria secundria (disco magntico) tal que, de forma transparente ao usurio, d a este e aos processos a impresso de estarem fazendo uso de uma memria principal muito maior do que a real. Requer a existncia de componentes especficos no sistema operacional, como ser visto mais a frente, para prover e gerenciar o uso da memria virtual de maneira transparente aos demais componentes do prprio sistema operacional, dos aplicativos, dos programas elaborados pelo usurio e do prprio usurio. Pela importncia deste tpico ele ser visto em maiores detalhes mais a frente ainda neste captulo.

18 VII

Antonio G. Thom

Cap.

e) Memria Secundria Prov flexibilidade (memria virtual), segurana (backup) e maior capacidade de armazenamento ao sistema. Inclui os seguintes dispositivos: discos magnticos fitas magnticas discos pticos fixos (HDs) e removveis (disquetes); cartucho, cassete e rolo; apenas para leitura (CDROMs) e para leitura e gravao (WORMs e magneto-pticos).

VII.2 Alocao de Espao na Memria Principal


Consiste nos procedimentos do sistema operacional quanto a proteo e a alocao de espaos em memria principal para execuo dos diferentes processos que compartilham no tempo o uso da UCP. Com a evoluo do hardware e dos sistemas, vrios mtodos de alocao foram surgindo e sendo adotados pelos sistemas operacionais das respectivas pocas. Dentre eles temos: alocao contgua simples, parties estticas, parties estticas relocveis, e parties dinmicas a) Alocao Contgua Simples Adotada nos sistemas operacionais mais antigos do tipo monoprogramveis, consiste na alocao contnua dos endereos de memria, onde os mais baixos so utilizados pelo SO e o restantes so disponibilizados para o usurio (fig. VII.9).

Registrador Fence

SO
Processo do usurio Espao livre

limite de acesso p/ o usurio

Figura VII.9 - Memria com Alocao Contgua Simples Neste esquema no h proteo, ou seja, o usurio tem controle total sobre todo o espao de memria, podendo acessar qualquer posio, inclusive alterar e destruir o sistema operacional. Para proteo alguns sistemas incluem um registrador, chamado registrador fence, para delimitar as reas do SO e do usurio. Embora de implementao simples e cdigo reduzido, a alocao contgua simples no permite uma utilizao eficiente do processador e da memria, pois apenas um usurio pode

Gerenciamento 19

de

Memria

usar os recursos existentes. Os problemas de proteo e de realocao so resolvidos da seguinte maneira:

registrador fence S
MEMO

PROCESSO

add fence

address N Address Violation

Figura VII.10 - Esquema de Proteo a. proteo - a cada tentativa de acesso do usurio memria, o SO realiza um teste com o registrador fence, permitindo ou no o acesso. b. realocao - da forma como est configurada a MP (fig. VII.9), se o SO precisar crescer ser necessrio deslocar o registrador fence e, por via de conseqncia, recompilar todos os programas, uma vez que os endereos so absolutos. Uma primeira soluo para este problema surgiu com a adoo do endereamento decrescente para o processo, isto a partir do final da MP (fig. VII.11).

SO Registrador Fence rea livre

Usurio

Figura VII.11 - Alocao com Endereamento Decrescente Desta forma, tanto o SO como o processo do usurio podem crescer at o limite fsico da memria, sem que um gere problemas, overhead, para o outro. Os programas do usurio nesta poca sofriam fortemente da limitao fsica do espao de memria que, por fora da tecnologia existente, j era reduzido por natureza. A soluo encontrada na poca foi a de dividir o programa em mdulos independentes, que pudessem ser executados separadamente reutilizando, de forma sucessiva, uma mesma rea de memria. Esta tcnica chamada de overlay, e nela cabe ao programador a identificao dos trechos do programa que podem ser colocados em diferentes mdulos. Na figura VII.12 abaixo exemplificado um caso de overlay onde um programa de 940K subdividido em trs partes (mdulos), um principal de 510K, que permanece em memria durante todo o perodo de execuo e chama, de forma alternada, as outras duas rotinas, uma de 200K e outra de 230K.

20 VII

Antonio G. Thom

Cap.

Observe que o espao de memria disponvel para o usurio de aproximadamente 750K e que o maior comprimento do programa em execuo ser de 740K, quando as rotinas principal e B estiverem juntas na memria.

total do programa: 940K

SO
255K Mod. Principal 510K 1M Mod. B 230K

Usurio

Mod. A 200K

Figura VII.12 - Tcnica de Overlay b) Mltiplas Parties Para a multiprogramao ser possvel, necessrio que vrios programas estejam na memria ao mesmo tempo para que possam se revezar rapidamente no uso e controle da UCP, da a necessidade de uma nova forma de organizao da memria. b.1) Alocao Particionada Esttica Nos primeiros sistemas operacionais multiprogramados, a MP foi dividida em pedaos de tamanho fixo, chamados parties. O tamanho das parties era varivel e estabelecido na fase de boot do sistema, sendo definido pelo operador em funo do tamanho dos programas a serem executados. A proteo das parties era garantida atravs dos registradores de limite superior e inferior (fence). A princpio, os programas eram previamente alocados e s podiam ser executados em uma das parties, mesmo que outras estivessem disponveis. Essa limitao se devia aos compiladores que eram capazes apenas de gerar endereamento absoluto. Os processos para execuo eram selecionados e organizados pelo operador formando uma fila para cada partio (fig. VII.13).

SO

processos em fila para execuo

Partio #1

lower bound limit partio #2


X A C Partio #2

upper bound limit partio #2


Z Y Partio #3

Figura VII.13 - Alocao Particionada Esttica

Gerenciamento 21

de

Memria

b.2) Alocao Particionada Esttica Relocvel Com a evoluo dos compiladores, linkers e loaders, foi possvel a gerao de cdigos relocveis a nvel de execuo, isto , os endereos dentro de um programa eram relativos ao incio do mesmo e, assim, se tornando independente da posio absoluta de carga do mesmo na memria. No esquema de endereamento relocvel, o endereo absoluto de cada instruo do programa passa a ser calculado atravs do seu endereo relativo (gerado pelo compilador) e o endereo de carga na memria (fornecido pelo carregador - loader, e armazenado num registrador especial chamado registrador base). Na partio relocvel uma nica fila de processos formada, e o carregador (loader) escolhe a partio a ser usada dentre as disponveis no momento da carga de cada processo (fig. VII.14).
SO Part #1 2Kb X 6Kb A 1.5Kb C ou 3Kb Part #3 5Kb Part #2 8 Kb

Figura VII.14 - Alocao Particionada Relocvel Este tipo de partio tem o potencial de gerar fragmentao interna de memria, i.e. memria alocada e no utilizada pelo programa. Este tipo de fragmentao ocorre sempre que o programa no utilizar toda a memria disponvel na partio para a qual foi alocado. A fila nica tambm gerava problemas, uma vez que processos com partio disponvel poderiam ter que ficar aguardando na fila o atendimento de outros processos que estivessem na frente e que necessitassem alguma partio de tamanho no disponvel. b.3) Alocao Particionada Dinmica A soluo anterior, particionada esttica relocvel, deixou claro a necessidade de se implementar uma nova forma de organizao da MP que reduzisse o problema de fragmentao e aumentasse o grau de compartilhamento da mesma. Eliminou-se ento, o conceito de parties de tamanho fixo definidas no momento do boot. O tamanho da partio passou a ser dinmico e definido automaticamente pelo prprio SO, de acordo com cada programa a ser executado. A princpio o problema da fragmentao parecia resolvido porm, observou-se que a mesma passaria agora a ocorrer na medida que os programas fossem terminando e deixando fragmentos, chamados de fragmentos externos, cada vez menores e dispersos pela memria. Fenmeno este vulgarmente conhecido como colcha-de-retalhos. Desta forma, como exempli-

22 VII

Antonio G. Thom

Cap.

ficado na figura VII.15 abaixo, os espaos iam se tornando cada vez menores e, por no serem contguos, no podiam ser reagrupados para execuo de novos processos. O tratamento deste problema veio com a introduo da tcnica de compactao. Porm com a restrio de um custo computacional mais elevado.
SO 4Kb

D
5Kb

Proc A Proc B 2Kb Proc C

fragmentos

Figura VII.15 - Alocao Particionada Dinmica 10) Compactao Simples Consistia em reunir espaos adjacentes no utilizados produzindo um nico espao de tamanho maior (fig. VII.16).
SO SO

4Kb Proc A (3K) Proc B (5K)


1Kb

sada de B

4Kb Proc A (3K)

6 Kb
Proc C (7K)

Proc C (7K)

Figura VII.16 - Compactao Simples 20) Compactao com Relocao

SO

SO

4Kb sada de B Proc A (3K) Proc B (5K) 1Kb Proc C (7K) Proc A (3K) Proc C (7K) 10Kb

Figura VII.17 - Compactao com Relocao

Gerenciamento 23

de

Memria

Envolve a relocao de todas as parties ocupadas, eliminando assim todos os espaos vazios entre elas e criando uma nica rea livre e contgua de memria. Esta soluo reduz o problema da fragmentao, porm a complexidade do seu algoritmo e o custo computacional para sua operacionalizao podem torn-lo invivel (fig. VII.17). b.3.1) Estratgias para Escolha da Partio A escolha da partio pelo SO merece cuidado especial uma vez que reflete no nvel de fragmentao gerado e no desempenho global do sistema. Trs estratgias bsicas so comumente adotadas: best-fit; worst-fit e first-fit. O SO mantm uma lista de reas livres, com o endereo e o tamanho de cada uma. Best-fit - alocada a partio que deixa a menor rea livre (fragmentao). A tendncia da memria ficar cada vez mais com pequenas reas no contguas, tornando mais crtico o problema da fragmentao. Worst-fit - alocada a partio que deixa a maior rea livre. Tem a tendncia de deixar espaos livres maiores e no provocar fragmentaes to pequenas como no caso do best-fit. First-fit - alocada a partio de endereo mais baixo. Apresenta grandes chances de permitir a existncia de parties maiores nos endereos mais elevados.

VII.3 Swapping
A tcnica de swapping veio para tentar minorar o problema da insuficincia de memria para a execuo dos processos em ambiente multiprogramado. Consiste na transferncia automtica de todo um processo da MP para o disco (swap out) e vice-versa, do disco para a MP (swap in), conforme exemplificado na figura VII.18 abaixo.
Memria Disco

A B X

Swap out

Z
Swap in

Figura VII.18 - Esquema de Swapping Um dos problemas gerados pelo swapping a relocao dos programas. No caso de um programa que saia e volte muitas vezes para a memria, necessrio que a relocao do mesmo seja realizada automaticamente pelo loader a cada operao de carregamento. A melhor soluo para esta relocao a realizada atravs do registrador base ou registrador de relocao. Toda vez que um programa carregado na memria, o seu registrador base carregado com o endereo inicial da regio de memria onde o programa ser carregado.

24 VII

Antonio G. Thom

Cap.

O conceito de swapping permitiu um maior compartilhamento da MP e, consequentemente, um maior throughput. Seu maior problema o elevado custo das operaes de E/S (swap in/out).
reg. base end inicial partio cod instruo endereo

+
end. memria

Figura VII.19 - Clculo do Endereo Absoluto de Memria

VII.4 Memria Virtual


uma tcnica sofisticada e eficiente de gerenciamento de memria, incorporada aos SOs mais recentes. Ela combina, de forma transparente aos usurios e ao restante do prprio sistema operacional, as memrias principal e secundria (disco) afim de proporcionar a iluso de existir uma memria principal muito maior do que a real. O conceito de memria virtual se baseia na separao entre o endereamento usado pelo programa e os endereos fsicos da memria principal. Agora, o espao que um programa pode enderear chamado de espao virtual, que pode ser bem maior do que o espao fsico existente na memria principal. O Endereamento Virtual possui as seguintes caractersticas: o conjunto de endereos que podem ser utilizados pelos processos em execuo. o espao virtual pode ser muito maior do que o espao fsico. o compilador se encarrega de implementar automaticamente o endereamento virtual. um programa, em um ambiente de memria virtual, no faz referncia a endereos fsicos, apenas a endereos virtuais. O software de gerenciamento da memria virtual se encarrega de mapear cada endereo virtual para um endereo fsico, de forma automtica e transparente ao processo e ao usurio. o sistema operacional faz uso da memria secundria como extenso da memria principal, de forma transparente. quando um programa executado, apenas uma parte do cdigo executvel fica na memria principal, o restante permanece em memria secundria e s carregado quando referenciado para uso. cada processo tem a seu dispor o mesmo espao de endereamento virtual, como se toda a memria virtual lhe pertencesse. Cabe ao software de gerenciamento controlar e impedir qualquer violao de acesso entre dois ou mais processos concorrentes. a) Mapeamento Nos sistemas atuais, para agilizar o processo, o mapeamento executado por um hardware especfico que trabalha junto com o sistema operacional. Para garantir segurana, o me-

Gerenciamento 25

de

Memria

canismo de mapeamento se encarrega de manter tabelas de mapeamento exclusivas para cada processo (page tables).

Espao Virtual Espao Real

Mapeamento

Figura VII.20 - Mapeamento do Endereo Virtual x Real Caso a granularidade do mapeamento fosse o byte, o espao fsico requerido pelas tabelas de mapeamento seria to grande quanto o espao virtual, o que inviabilizaria o uso e a implementao do mecanismo de memria virtual. Em virtude disto, as tabelas mapeiam blocos de informaes chamadas pginas ou segmentos. Observe que quanto maior o tamanho do bloco, menor a tabela de mapeamento, porm maior o tempo de transferncia do mesmo de / ou para a MP (fig. VII.20). obs: Com a introduo do mapeamento, os programas deixaram de ter, necessariamente, de ocupar um espao contgo na memria fsica. b) Paginao a tcnica virtual que faz uso de blocos de tamanho fixo tanto no espao virtual (pginas) como no espao real (frames). Nesta tcnica, o endereo virtual formado pelo nmero da pgina virtual e pelo deslocamento dentro desta mesma pgina. O nmero (endereo) da pgina virtual nico dentro da page table. O endereo fsico calculado (mapeado) pela composio do endereo do frame fornecido pela page table com o deslocamento fornecido pela instruo virtual, conforme pode ser visto na figura VII.21 a seguir. Alm da informao sobre a localizao fsica da pgina virtual (frame), a page table possui outras informaes como o nvel de proteo da pgina, o bit de validade (validity bit), que indica se a pgina est na memria fsica ou no, e o bit de modificao (modified bit), que indica se a pgina na memria fsica foi modificada ou no. Esta informao importante pois se o sistema precisar remover a pgina da memria fsica por uma razo de necessidade de espao, ter ou no que salv-la em disco antes de alterar o bit de validade na page table. Toda vez que uma pgina referenciada e no est na memria fsica ocorre um page fault, que dispara um processo de alocao de memria fsica, que pode, por sua vez, requerer a retirada de uma pgina que esteja residindo na memria fsica antes de realizar a carga da pgina referenciada.

26 VII

Antonio G. Thom

Cap.

Observe que neste esquema de memria virtual, cada referncia a memria se converte, na melhor das hipteses, em dois acessos a memria principal, um para leitura da page table e outra para acesso ao dado propriamente dito. Na ocorrncia de um page fault, alm dos acessos acima referenciados, tem-se o acesso ao disco para carga dos dados e, antes disso, se necessrio, o salvamento de algum dado em memria para abertura de espao.

nr. da pgina virtual

deslocamento

Endereo Virtual

Page Table infos. gerais a nvel proc end do frame

Valid e modified bits endereo fsico end do frame deslocamento

memria principal frame

frame byte

Figura VII.21 - Esquema de Mapeamento com Paginao Quando a pgina no est na memria principal, a page table contm o endereo da mesma no disco magntico. Abaixo v-se alguns conceitos relacionados com esta estratgia de gerenciamento: Demand Paging - a transferncia sob demanda para a memria principal, ou seja apenas quando a pgina referenciada; Antecipatory Paging - tenta antecipar a demanda por uma pgina carregando-a na MP antes dela ser referenciada; Working Set - o espao de memria (nmero de pginas) que permitido a um processo manter simultaneamente na MP; Page Size - o tamanho adotado para as pgina, normalmente entre 512 e 4Kb (512 o mais comum);

Gerenciamento 27

de

Memria

Fragmentao - o espao de MP alocado a um processo e no utilizado pelo mesmo que, no caso de paginao, interna a cada pgina e bem mais reduzida doque nos demais casos j visto at aqui; Swapping - tambm vlido para memria virtual (neste caso a page table do processo transferida da MP para a MS e, portanto, precisa ser carregada para MP antes de ser iniciado o processo de mapeamento do endereo virtual; Thrashing - definido como a excessiva transferncia de dados entre MP e MS (paginao ou segmentao). As causas mais provveis so: a) a nvel do prprio processo - mau dimensionamento do working set, ou no observao do princpio da localidade pelo programador; b) a nvel do sistema - pouca memria ou nmero excessivo de processos concorrentes. c) Working Set O conceito de working set surgiu da observao e anlise da taxa de paginao dos vrios processos em execuo. Percebeu-se a ocorrncia de uma elevada taxa de paginao durante a fase inicial de execuo (carga) do processo e, geralmente, uma estabilizao desta taxa no decorrer do restante do processamento. Este comportamento deve-se ao fato de que antes de iniciada a execuo o processo reside como um todo na memria secundria (MS), sendo ento necessrio carregar para a memria as pginas a medida que estas vo sendo referenciadas pela primeira vez, mas depois de um certo tempo de processamento a demanda por novas pginas tende a reduzir (princpio da localidade) e a taxa de paginao se estabiliza. O tamanho do working set definido pelo gerente do sistema (system manager), e de fundamental importncia para garantir um fluxo adequado de execuo dos processos (throughput). Um working set muito grande reduz o nmero de processos que podem compartilhar simultneamente a memria, alm de geralmente ser sub-utilizado pela maioria dos processos existentes. Alguns sistemas operacionais adotam a estratgia de estabelecimento de um working set dinmico, observado um tamanho mximo e mnimo pr-definidos. d) Relocao de Pginas Um dos maiores problemas na implementao de um software de gerenciamento para paginao o tratamento dos page faults, pois isto demanda a escolha de uma estratgia para selecionar as pginas a serem removidas da MP, afim de que seja aberto espao para o carregamento de pginas residentes na MS. Qualquer que seja a estratgia adotada de projeto, ela deve sempre considerar o bit de modificao (modified bit) para determinar se a pgina a ser retirada da MP sofreu ou no alguma alterao durante sua estada na memria. Caso positivo a pgina precisa ser salva na MS antes que a outra seja carregada, caso contrrio basta carregar a outra por cima. A melhor estratgia possvel a adotar seria a de relocar a pgina que no viesse a ser referenciada em futuro prximo. Isto seria o ideal, porm impraticvel pois o sistema operacional (SO) no possui bola de cristal e, portanto, no tem como adivinhar o futuro. As estratgias mais conhecidas so: escolha aleatria (raramente adotada); FIFO (first_in_first_out, simples de ser implementada);

28 VII

Antonio G. Thom

Cap.

LRU (least_recently_used, gera um overhead razovel); NUR (not_used_recently, usa um flag inicializado com 0); LFU (least_frequently_used, mantm um contador de referncias p/ cada pgina). Escolha Aleatria No faz uso de qualquer critrio para a seleo. Todas as pginas do working set tm a mesma chance de ser selecionada. Embora seja a estratgia mais simples de ser implementada e consumir poucos recursos de processamento, raramente utilizada pela sua baixa eficincia. FIFO Remove a pgina carregada menos recentemente, independente de quando a pgina foi referenciada pela ltima vez. Sua implementao bastante simples, por exemplo, atravs de uma fila FIFO para cada working set. LRU Remove a pgina utilizada menos recentemente, isto , aquela que no referenciada h mais tempo. Sua implementao mais complexa que a dos algoritmos anteriores e, embora o algoritmo funcione razoavelmente bem, existe algumas situaes em que ele falha grosseiramente, como no caso extremo de um loop que referencia em seqncia um nmero de pginas que exceda em um o tamanho mximo do working set. Uma possvel forma de implementao deste algoritmo realizada atravs do uso de uma matriz quadrada conforme mostra a figura VII.22. A matriz tem dimenso igual ao nmero de pginas do working set. Cada linha e coluna de mesma ordem se referencia a uma mesma pgina. Ao ser carregada a pgina, a linha correspondente da matriz zerada. Quando a pgina referenciada, a linha correspondente da matriz carregada com "1s" e a coluna correspondente com "0s". A qualquer instante, a pgina menos recentemente referenciada aquela cuja linha apresenta o menor somatrio. (a) B C 0 0 0 1 0 0 0 0 (b) B C 0 0 0 1 0 0 1 1 (c) B C 1 1 0 1 0 0 1 1 (d) B C 0 1 0 1 0 0 0 1

A B C D

A 0 1 0 0

D 0 1 0 0

A 0 1 0 1

D 0 0 0 0

A 0 0 0 0

D 1 0 0 0

A 0 1 0 0

D 1 1 0 0

2 3 1

Figura VII.22 - Implementao do esquema LRU para a referncia de pginas: B, D, A, B. Observe que a qualquer instante a linha de maior valor corresponde a pgina mais recentemente referenciada, e assim por diante NRU Escolhe a pgina que no tenha sido recentemente referenciada. O algoritmo faz uso de um bit extra: flag "R", para registrar a utilizao da pgina. O bit setado para "1" quando a pgina referenciada e, em perodos de tempo pr-determinados, so todos ressetados para "0". Toda vez que ocorrer um page fault e uma relocao de pgina for necessria, o algoritmo

Gerenciamento 29

de

Memria

analisa os bist "R" e "M" (modified bit) de todas as pginas do working set e as classifica em 04 grupos: classe 1: classe 2: classe 3: classe 4: no referenciadas (R = 0) e no modificadas (M = 0), no referenciadas (R = 0) e modificadas (M = 1), referenciadas (R = 1) e no modificadas (M = 0), e referenciadas (R = 1) e modificadas (M = 1).

O algoritmo remove uma pgina qualquer, escolhida aleatoriamente, de uma classe no vazia a partir da classe 1. Observe que o algoritmo d preferncia para remover uma pgina que tenha sido modificada porm no recentemente referenciada, a uma pgina no modificada mas recentemente referenciada. LFU Nesta estratgia o algoritmo remove a pgina que tenha sido menos referenciada. Para isto ele precisa manter um contador para cada pgina, que zerado por ocasio da carga da pgina e acrescido de uma unidade cada vez que a mesma referenciada. O problema desta estratgia que pginas mais recentemente carregadas tendem a ter menores valores nos seus contadores e pginas fortemente utilizadas durante um perodo do processamento tendem a se perpetuar na memria, mesmo no sendo mais referenciadas. e) Segmentao a tcnica de gerenciamento que possibilita os programas serem subdivididos logicamente em blocos distintos como, por exemplo, rea de cdigo e rea de dados, e o carregamento de cada um destes blocos em uma rea (segmento) distinto da MP. Os blocos, diferentemente das pginas, podem ter tamanhos distintos e so chamados segmentos, cada um possuindo seu espao de endereamento prprio. A grande diferena entre paginao e segmentao est no fato de que a primeira divide o programa em partes iguais e de tamanho fixo, sem qualquer relao lgica com a estrutura do mesmo, e a segunda, no fazendo uso de blocos de tamanho fixo, permite a adoo de uma relao entre os blocos e a lgica do programa. Na paginao tem-se um esquema de memria virtual unidimensional, ao passo que na segmentao pode-se adotar um esquema multidimensional. Este fato pode facilitar ao programador sua tarefa de otimizar o desempenho operacional do programa. Por exemplo, um compilador precisa lidar com muitas tabelas dinmicas que so construdas, expandidas e encolhidas a medida que a compilao procede, incluindo: 1. Texto Fonte, que vai sendo salvo para a impresso da listagem; 2. Tabela de smbolos, contendo os nomes e atributos das variveis; 3. Tabela de Constantes, contendo todas as constantes inteiras e de ponto-flutuante utilizadas; 4. rvore de parsing, contendo a anlise sinttica do programa; e 5. Pilha, usada para chamadas de procedimentos dentro do compilador. As quatro primeiras tabelas crescem continuamente a medida que a compilao procede, j a ltima pode crescer e diminuir de forma imprevisvel.

30 VII

Antonio G. Thom

Cap.

Num esquema unidimensional as tabelas precisariam ser alocadas em pores contguas do espao de endereamento virtual, como pode ser visto na figura VII.23 abaixo, e, mesmo com a previso de espao livre para crescimento, problemas podem ocorrer. Num esquema multidimensional por outro lado, os espaos so separados, independentes e no necessariamente contguos. O mecanismo de mapeamento muito semelhante ao da paginao. Uma segment table faz agora as vezes da page table, sendo que neste caso cada entrada na tabela possui tambm a informao sobre o tamanho do segmento. O endereo virtual formado por um nmero de segmento e um deslocamento (offset) dentro do segmento.

Tabela de Smbolos

Texto Fonte (a) Esquema unidimensional de endereamento virtual

Tabela de Constantes

rvore de Anlise Sinttica

Pilha de Chamadas

( b ) Esquema multidimensional seg. 0 seg. 1 Fonte seg. 2 Tab. Ctes. seg. 3 rvo re seg. 4 Pilha

Tab. Smbo los

Figura VII.23 - Espao uni e multidimensional de endereamento da memria virtual

A tcnica de segmentao elimina a fragmentao interna caracterstica da tcnica de paginao, porm volta a introduzir a possibilidade de ocorrncia de segmentao externa, isto , entre segmentos.

Gerenciamento 31

de

Memria

nr. do segmento virtual

deslocamento

Endereo Virtual

Segment Table infos. gerais a nvel proc end do seg.

Valid e modified bits

endereo fsico

end do seg.

deslocamento

memria principal Segmento

segmento byte

Figura VII.24 - Esquema de Mapeamento com Segmentao

f) Segmentao_com_Paginao Conceitualmente a reunio das tcnicas de segmentao e de paginao. O processo logicamente segmentado (como na tcnica de segmentao) e agora, dentro de cada segmento ele subdividido em pginas de tamanho fixo. O endereo virtual agora formado por um nmero de segmento, um nmero de pgina e um deslocamento (offset) dentro da pgina. O mapeamento requer uma etapa a mais do que o necessrio para as duas tcnicas anteriores, conforme pode ser visto na figura VII.25 a seguir. Fazendo-se uma anlise das 3 estratgias de organizao do esquema virtual, pode-se constatar que:

32 VII

Antonio G. Thom

Cap.

a) na paginao a memria plana e contnua (unidimensional) e pode ocorrer o problema da segmentao interna, ou seja, o processo no utilizar completamente a ltima pgina a ele alocada; b) na segmentao a memria pode ser alocada por partes e no contnua (multidimensional) e desaparece o problema da fragmentao interna, mas volta a aparecer o da segmentao externa; c) na segmentao com paginao tem-se a forma de alocao segmentada e a fragmentao interna, bem emnor e mais simples de ser gerenciada.

segmento

page

offset

endereo virtual

page table
page table

end. frame

segment table

endereo fsico

frame

offset

Figura VII.25- Esquema de Segmentao com Paginao g) Proteo realizada a nvel de pgina ou segmento (dependendo da tcnica adotada) e vem especificada nos primeiros bits de cada entrada na page ou segment table. exemplo: R 0 1 1 W 0 0 1 descrio sem acesso apenas leitura leitura e gravao

h) Compartilhamento de Memria (cdigo reentrante) O cdigo executvel de alguns programas, principalmente utilitrios e programas de sistema, podem ser compartilhados afim de evitar o consumo desnecessrio de MP. Para que isto ocorra o programa reentrante precisa ser especificamente caracterizado como tal pelo gerente do sistema e, assim, automaticamente, o sistema operacional se encarrega de fazer com que os processos que estiverem usando um determinado programa reentrante estejam com as entradas das suas respectivas page ou segment tables apontando para os mesmos frames na MP (frames estes ocupados pelo cdigo executvel do programa reentrante). Na figura VII.26 abaixo pode ser observado o caso em que dois processos A e B, compartilham o mesmo cdigo de um terceiro processo, reentrante, que reside em MP.

Gerenciamento 33

de

Memria

A utilizao de cdigo reentrante no s otimiza a ocupao da MP, uma vez que evita a coexistncia de cpias idnticas de um mesmo trecho de programa na memria, mas tambm melhora o desempenho dos programas, uma vez que reduz a paginao ou segmentao destes pelo fato do programa reentrante permanecer residente em memria.

Processo A Memria Principal

frame reentrante Pgina do Processo Reentrante

Page Table A

Processo B
frame reentrante

Page Table B

Figura VII.26 - Processo Reentrante

VII.5 Referncias Bibliogrficas


Davis, William S., Sistemas Operacionais - Uma Viso Sistemtica, Ed. Campus, 1990. Machado, Francis B. e Maia, Luiz P., Introduo Arquitetura de Sistemas Operacionais, Ed. LTC, 1994. Silberschatz, Abraham e Galvin, Peter B., Operating System Concepts, 4a edio, Ed. Addison-Wesley Publishing Company, 1994. Stallings, William, Operating Systems, Ed. Macmillan Publishing Company, 1992. Tanenbaum, Andrew S., Organizao Estruturada de Computadores, Ed. Prentice-Hall do Brasil, 1990. Tanenbaum, Andrew S., Sistemas Operacionais - Projeto e Implementao, Ed. PrenticeHall do Brasil, 1987. Tanenbaum, Andrew S., Sistemas Operacionais Modernos, Ed. Campus, 1995.

Você também pode gostar