Você está na página 1de 8

APOSTILA DE SISTEMAS OPERACIONAIS 2.

Bimestre Parte 2

Prof. Manoel Pantoja A. Jr. Aluno:


GERENCIAMENTO DE MEMRIA
1. Introduo

Data: 31/05/2011

N.

Turma: 2__I

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 de custo e consequente aumento da capacidade da memria principal, seu gerenciamento um dos fatores mais importantes no projeto de sistemas operacionais. Enquanto nos sistemas monoprogramveis a gerncia da 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. Neste captulo apresentaremos os esquemas bsicos de gerncia da memria principal, mostrando suas vantagens, desvantagens e implementaes, numa sequncia quase evolutiva. Esses conhecimentos sero teis para a compreenso das motivaes que levaram ampla adoo do mecanismo de gerncia de memria virtual nos sistemas operacionais modernos, apresentado tambm neste captulo. Uma vez que diversos processos podem ocupar a memria ao mesmo tempo, torna-se necessrio um gerenciamento adequado de modo a otimizar a utilizao da mesma. O componente do SO responsvel por esta tarefa o gerente de memria, que entre outras atribuies deve controlar quais partes da memria esto sendo usadas, alocar memria de acordo com as necessidades de cada processo, liberar memria alocada a um processo quando este termina sua execuo, transferncia de processos ou partes destes entre a memria principal e secundria. Hierarquia de Memria

2. Funes Bsicas Em geral, programas so armazenados em memrias secundrias, como disco ou fita, por ser um meio no-voltil, abundante e de baixo custo. Como o processador somente executa instrues localizadas na memria principal, o sistema operacional deve sempre transferir programas da memria secundria para a memria principal antes de serem executados. Como o tempo de acesso memria secundria muito superior ao tempo de acesso memria principal, o sistema operacional deve buscar reduzir o nmero de operaes de E/S memria secundria, caso contrrio, srios problemas no desempenho do sistema podem ser ocasionados. 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 na ausncia de espao livre, o sistema deve permitir que novos processos sejam aceitos e executados. Isso possvel atravs da transferncia temporria de processos residentes na memria principal para a memria secundria, liberando espao para novos processos. Este mecanismo conhecido como swapping e ser detalhado posteriormente. Outra preocupao na gerncia de memria permitir a execuo de programas que sejam maiores que a memria fsica disponvel, implementado atravs de tcnicas como overlay e memria virtual. 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 de alguma forma deve impedi-lo. Apesar de a gerncia de memria garantir a proteo de reas da memria, mecanismos de compartilhamento devem ser oferecidos para que diferentes processos possam trocar dados de forma protegida.

3. Estratgias de Gerenciamento de Memria As estratgias de gerenciamento de memria so projetadas para conseguir o melhor uso possvel da memria principal. So assim divididas em: a) b) c) Estratgias de busca determinam quando transferir a prxima poro de um programa ou dados para a memria principal por meio do armazenamento secundrio; Estratgias de posicionamento determinam em que lugar da memria principal o sistema deve colocar programas ou dados que chegam; Estratgias de substituio determina que parte dos dados sero removidos da memria principal;

3.1 Alocao de Memria Contgua A alocao contgua simples foi implementada nos primeiros sistemas operacionais, porm ainda est presente em alguns sistemas monoprogramveis. Nesse tipo de organizao, a memria principal subdividida em duas reas: uma para o sistema operacional e outra para o programa do usurio (Fig. abaixo). Dessa forma, o programador deve desenvolver suas aplicaes, preocupado, apenas, em no ultrapassar o espao de memria disponvel, ou seja, a diferena entre o tamanho total da memria principal e a rea ocupada pelo sistema operacional.
Memria Principal Sistema Operacional Registrador

rea para programa

Nesse esquema, o usurio tem controle sobre toda a memria principal, podendo ter acesso a qualquer posio de memria, inclusive a rea do sistema operacional. Para proteger o sistema desse tipo de acesso, que pode ser intencional ou no, alguns sistemas implementam proteo atravs de um registrador que delimita as reas do sistema operacional e do usurio. Dessa forma, sempre que um programa faz referncia a um endereo na memria, o sistema verifica se o endereo est dentro dos limites permitidos. Caso no esteja, o programa cancelado e uma mensagem de erro gerada. indicando que houve uma violao no acesso memria principal. Apesar da fcil implementao e do cdigo reduzido, a alocao contgua simples no permite a utilizao eficiente dos recursos computacioanais, pois apenas um usurio pode dispor desses recursos. Em relao memria principal, caso o programa do usurio no a preencha totalmente, existir um espao de memria livre sem utilizao (Fig. abaixo).
Memria Principal Sistema Operacional

Programa do usurio

rea livre

3.2 Overlay (sobreposies) Na alocao contgua simples, todos os programas esto limitados ao tamanho da rea de memria principal disponvel para o usurio. Uma soluo encontrada para o problema dividir o programa em mdulos, de forma que seja possvel a execuo independente de cada mdulo, utilizando uma mesma rea de memria. Essa tcnica chamada de overlay. Considere um programa que tenha trs mdulos: um principal, um de cadastramento e outro de impresso, sendo os mdulos de cadastramento e de impresso independentes. A independncia do cdigo significa que quando um mdulo estiver na memria para execuo, o outro no precisa necessariamente estar presente. O mdulo principal comum aos dois mdulos; logo, deve permanecer na memria durante todo o tempo da execuo do programa. Como podemos verificar na figura abaixo a memria insuficiente para armazenar todo o programa, que totaliza 9kb. A tcnica de overlay utiliza uma rea de memria comum, onde os mdulos de cadastramento e de impresso podero compartilhar a mesma rea de memria (rea de overlay). Sempre que um dos dois mdulos for referenciado pelo mdulo principal,
Sistemas operacionais 2

o mdulo ser carregado da memria secundria para a rea de overlay. No caso de uma referncia a um mdulo que j esteja na rea de overlay, a carga no realizada; caso contrrio, o novo mdulo ir sobrepor-se ao que j estiver na memria principal.
Memria Principal

2 Kb

Sistema Operacional Cadastramento

3 Kb

Mdulo principal 4 Kb

4 Kb

rea de overlay

Impresso 2 Kb

1 Kb

rea livre rea no utilizada 2 Kb

A definio das reas de overlay funo do programador, atravs de comandos especficos da linguagem de programao utilizada. O tamanho de uma rea de overlay estabelecido a partir do tamanho do maior mdulo. Por exemplo, se o mdulo de cadastramento tem 4 Kb e o mdulo de impresso 2 Kb. A rea de overlay dever ter o tamanho do maior mdulo, ou seja, 4 Kb. A tcnica de overlay tem a vantagem de permitir ao programador expandir os limites da memria principal. A utilizao dessa tcnica exige muito cuidado, pois pode trazer implicaes tanto na sua manuteno quanto no desempenho das aplicaes, devido possibilidade de transferncia excessiva dos mdulos entre a memria principal e a secundria. 3.3 Alocao Particionada Com a tecnologia da multiprogramao dos processadores, as tecnologias de memria precisaram se adequar para possibilitar que diversos processos tambm pudessem residir ao mesmo tempo na memria principal. Assim na Alocaoo Particionada, a memria dividida em um nmero de blocos, eventualmente de diversos tamanhos. medida que os processos so submetidos execuo (processos no estado pronto) o gerente de memria localiza uma partio livre cujo tamanho atenda s necessidades do processo. Alocao Particionada Esttica Nos primeiros sistemas multiprogramveis, a memria era dividida em pedaos de tamanho fixo, chamados parties. O tamanho das parties, estabelecido na fase 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 desativado e reinicializado com uma nova configurao. Esse tipo de gerncia de memria conhecido como alocao particionada esttica.
Memria Principal T abela de parties P artio 1 2 3 T amanho 2 Kb 5 Kb 8 Kb P artio 2 5 Kb Sistema Operacional P artio 1 2 Kb

Programas a serem executados: E 3 Kb D 6 Kb C 1 Kb B 4 Kb A 2 Kb

P artio 3

8 Kb

Inicialmente, os programas s podiam ser carregados e executados em apenas uma partio especfica, mesmo se outras estivessem disponveis. Essa limitao se devia aos compiladores e montadores, que geravam apenas cdigo absoluto. No cdigo absoluto, todas as referncias a endereos no programa so posies fsicas na memria principal, ou seja, o programa s poderia ser carregado a partir do endereo de memria especificado no seu prprio cdigo. Se, por exemplo, os programas A e B

Sistemas operacionais 3

estivessem sendo executados, e a terceira partio estivesse livre, os programas C e E no poderiam ser processados (Fig. abaixo). A esse tipo de gerncia de memria chamou-se alocao particionada esttica absoluta.
Memria Principal Sistema Operacional C 1 Kb E 3 Kb A 2 Kb B 4 Kb Partio 2 5 Kb Partio 1 2 Kb

D 6 Kb

Partio 3

8 Kb

Com a evoluo dos compiladores, montadores, linkers e loaders, o cdigo gerado deixou de ser absoluto e passa a ser relocvel. No cdigo relocvel, todas as referncias a endereos no programa so relativas ao incio do cdigo e no a endereos fsicos de memria. Desta forma, os programas puderam ser executados a partir de qualquer partio. Quando o programa carregado, o loader calcula todos os endereos a partir da posio inicial onde o programa foi alocado. Caso os programas A e B terminassem, o programa E poderia ser executado em qualquer uma das duas parties (Fig. abaixo). Esse tipo de gerncia de memria denominado alocao particionada esttica relocvel.
Memria Principal Sistema Operacional Programa C 2 Kb
Partio 1 2 Tamanho 2 Kb 5 Kb 8 Kb Livre No Sim No 2 rea livre 1 Memria Principal Sistema Operacional Programa C

D 6 Kb

E 3 Kb

Programa A

5 Kb

Programa B

8 Kb

Programa B

Para manter o controle sobre quais parties esto alocadas. a gerncia de memria mantm uma tabela com o endereo inicial de cada partio, seu tamanho, e se est em uso (Fig. acima). Sempre que um programa carregado para a memria, o sistema percorre a tabela, na tentativa de localizar uma partio livre, onde o programa possa ser carregado. Nesse esquema de alocaao de memria, a proteo baseia-se em dois registradores, que indicam os limites inferior e superior da partio onde o programa est sendo executado (Fig. abaixo). Caso o programa tente acessar uma posio de memria fora dos limites definidos pelos registradores, ele interrompido e uma mensagem de violao de acesso gerada pelo sistema operacional.
Memria Principal Sistema Operacional Endereo inicial

Endereo final

Tanto nos sistemas de alocaao absoluta quanto nos de alocaao relocvel, os programas, normalmente, no preenchem totalmente as parties onde so carregados. Por exemplo, os programas C, A e E no ocupam integralmente o espao das

Sistemas operacionais 4

parties onde esto alocados, deixando 1 Kb, 3 Kb e 5 Kb de reas livres, respectivamente (Fig. abaixo). Este tipo de problema, decorrente da alocao fixa das parties, conhecido como fragmentao interna.
Memria P rincipal Sistema Operacional P rograma C 1 Kb P rograma A D 6 Kb B 4 Kb 3 Kb

P rograma E

5 Kb

Alocao Particionada Dinmica A alocao particionada esttica, analisada anteriormente, deixou evidente a necessidade de uma nova forma de gerncia da memria principal, onde o problema da fragmentao interna fosse reduzido e, consequentemente, o grau de compartilhamento da memria aumentado. Na alocao particionada dinmica ou varivel, foi eliminado o conceito de parties de tamanho fixo. Nesse esquema, cada programa utilizaria o espao necessrio, tomando essa rea sua partio (Fig. abaixo). Como os programas utilizam apenas o espao de que necessitam, no esquema de alocao particionada dinmica o problema da fragmentao interna no ocorre.
Memria Principal Sistema Operacional Memria Principal Sistema Operacional

Programa B Programa C Programa E A 2 Kb E 3 Kb C 1 Kb B 4 Kb 15 Kb Programa A

4 Kb 1 Kb 3 Kb 2 Kb

5 Kb

A princpio, o problema da fragmentao interna est resolvido, porm, nesse caso, existe um problema que no to bvio quanto no esquema anterior. Um tipo diferente de fragmentao comear a ocorrer, quando os programas forem terminando e deixando espaos cada vez menores na memria, no permitindo o ingresso de novos programas. No caso da figura abaixo, mesmo existindo 12 Kb livres de memria principal, o programa D, que necessita de 6 Kb de espao, no poder ser carregado para execuo, pois este espao no est disposto contiguamente. Esse tipo de problema chamado fragmentao externa.
Memria Principal Sistema Operacional

4 Kb Programa C D 6 Kb Programa A 3 Kb

5 Kb

Existem duas solues para o problema da fragmentao externa da memria principal. Na primeira soluo, conforme os programas terminam, apenas os espaos livres adjacentes so reunidos, produzindo reas livres de tamanho maior. Na figura abaixo, caso o programa C termine, uma rea de 8 Kb ser criada.
Sistemas operacionais 5

Memria Principal Sistema Operacional

Memria Principal Sistema Operacional

4 Kb Programa C 3 Kb Programa A Programa A 8 Kb

5 Kb

5 Kb

A segunda soluo envolve a relocao de todas as parties ocupadas, eliminando todos os espaos entre elas e criando uma nica rea livre contgua (Fig. abaixo). Para que esse processo seja possvel, necessrio que o sistema tenha a capacidade de mover os diversos programas na memria principal, ou seja, realizar relocao dinmica. Esse mecanismo de compactao, tambm conhecido como alocao particionada dinmica com relocaco, reduz em muito o problema da fragmentao, porm a complexidade do seu algoritmo e o consumo de recursos do sistema, como processador e rea em disco, podem torn-lo invivel.
Memria Principal Sistema Operacional Memria Principal Sistema Operacional Programa C 4 Kb Programa C Relocao 3 Kb Programa A 12 Kb Programa A

5 Kb

4. Estratgias de Alocao de Partio Os sistemas operacionais implementam, basicamente, trs estratgias para determinar em qual rea livre um programa ser carregado para execuo. Essas estratgias tentam evitar ou diminuir o problema da fragmentao externa. A melhor estratgia a ser adotada por um sistema depende de uma srie de fatores, sendo o mais importante o tamanho dos programas processados no ambiente. Independentemente do algoritmo utilizado, o sistema possui uma lista de reas livres. com o endereo e tamanho de cada rea (Fig. abaixo).
Memria Principal Sistema Operacional reas livres 1 2 3 T amanho rea livre 1 4 Kb 5 Kb 3 Kb rea livre 2 5 Kb Programa C 4 Kb

Programa A

rea livre 3

3 Kb

Best-fit Na estratgia best-fit, a melhor partio escolhida, ou seja, aquela em que o programa deixa o menor espao sem utilizao (Fig. abaixo). Nesse algoritmo, a lista de reas livres est ordenada por tamanho, diminuindo o tempo de busca por uma rea desocupada. Uma grande desvantagem desse mtodo consequncia do prprio algoritmo. Como alocada a partio que deixa a menor rea livre, a tendncia que cada vez mais a memria fique com pequenas reas no-contguas, aumentando o problema da fragmentao.

Sistemas operacionais 6

Memria Principal Sistema Operacional

Sistema Operacional

4 Kb Programa C F 1 Kb 5 Kb

(a

t- f es )B

it

Programa C

Programa A

Programa A Programa F

3 Kb

rea livre

2 Kb

Worst-ft Na estratgia worst-fit, a pior partio escolhida, ou seja, aquela em que o programa deixa o maior espao sem utilizao (Fig. abaixo). Apesar de utilizar as maiores parties, a tcnica de worst-fit deixa espaos livres maiores que permitem a um maior nmero de programas utilizar a memria, diminuindo o problema da fragmentao.
Memria Principal Sistema Operacional

Sistema Operacional

4 Kb

(b) Worst-fit
Programa C F 1 Kb 5 Kb

Programa C Programa F rea livre 4 Kb

Programa A

Programa A

3 Kb

First-fit Na estratgia Worst-fit, a primeira partio livre de tamanho suficiente para alocar o programa escolhida (Fig. abaixo). Nesse algoritmo, a lista de reas livres est identificada crescentemente por endereos. Como o mtodo tenta primeiro utilizar as reas livres de endereos mais baixos, existe uma grande chance de se obter uma grande partio livre nos endereos de memria mais altos. Das trs estratgias apresentadas. a first-fit a mais rpida, consumindo menos recursos do sistema.
Memria Principal Sistema Operacional

Sistema Operacional Programa F

t- f irs )F (c

4 Kb Programa C F 1 Kb 5 Kb

rea livre Programa C

3 Kb

it
Programa A

Programa A

3 Kb

Sistemas operacionais 7

5. Swapping Mesmo com o aumento da eficincia da multiprogramao e, particularmente, da gerncia de memria, muitas vezes um programa no podia ser executado por falta de uma partio livre disponvel. A tcnica de swapping foi introduzida para contornar o problema da insuficincia de memria principal. Em todos os esquemas apresentados anteriormente, um processo permanecia na memria principal at o final da sua execuo, inclusive nos momentos em que esperava por um evento, como uma operao de leitura ou gravao. O swapping uma tcnica aplicada gerncia de memria para programas que esperam por memria livre para serem executados. Nesta situao, o sistema escolhe um processo residente, que transferido da memria principal para a memria secundria (swap out), geralmente disco. Posteriormente, o processo carregado de volta da memria secundria para a memria principal (swap in) e pode continuar sua execuo como se nada tivesse ocorrido (Fig. Ao lado).
Memria Principal Sistema Operacional Programa A H Programa B Programa E Programa G B Memria Principal Sistema Operacional Programa A Programa H Programa E Swap in B rea Livre Swap out

Arquivo de Swap

O algoritmo de escolha do processo a ser retirado da memria principal deve priorizar aquele com menores chances de ser executado, para evitar o swapping desnecessrio de um processo que ser executado logo em seguida. Os processos retirados da memria esto geralmente no estado de espera, mas existe a possibilidade de um processo no estado de pronto tambm ser selecionado. No primeiro caso, o processo dito no estado de espera outswapped e no segundo caso no estado de pronto inswapped. Para que a tcnica de swapping seja implementada, essencial que o sistema oferea um loader que implemente a relocao dinmica de programas. Um loader relocvel que no oferea esta facilidade permite que um programa seja colocado em qualquer posio de memria, porm a relocao apenas realizada no momento do carregamento. No caso do swapping, um programa pode sair e voltar diversas vezes para a memria, sendo necessrio que a relocao seja realizada pelo loader a cada carregamento. A relocao dinmica realizada atravs de um registrador especial denominado registrador de relocao. No momento em que o programa carregado na memria, o registrador recebe o endereo inicial da posio de memria que o programa ir ocupar. Toda vez que ocorrer uma referncia a algum endereo, o endereo contido na instruo ser somado ao contedo do registrador, gerando, assim, o endereo fsico (Fig. abaixo). Dessa forma, um programa pode ser carregado em qualquer posio de memria.
Registrador de Relocao Endereo incial da partio Cdigo de operao Instruo Endereo

Endereo de memria

O conceito de swapping permite maior compartilhamento da memria principal e consequentemente, maior utilizao dos recursos do sistema computacional. Seu maior problema o elevado custo das operaes de entrada/sada (swap in/out). Em situaes crticas, quando h pouca memria disponvel, o sistema pode ficar esperando a execuo de swapping, deixando de realizar tarefas dos processos residentes.

Sistemas operacionais 8

Você também pode gostar