Você está na página 1de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

GERNCIA DE MEMRIA

NDICE:

1. Introduo 2. Funes Bsicas 3. Alocao Contgua Simples 4. Tcnica de Overlay 5. Alocao Particionada 6. Swapping 7. Bibliografia 8. Lista de Exerccios

1 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

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 de custo e conseqente 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.

2. FUNS 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. Os sistemas de gerncia de memria podem ser divididos em duas grandes categorias: aqueles que movem os processos entre a memria principal e o disco (swapping e paginao), e aqueles que no movimentam os processos entre tais dispositivos de armazenamento. Os ltimos so bem mais simples que os primeiros. A gerncia de memria deve tentar manter na memria principal o maior nmero possvel 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 .
2 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

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 da 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. ALOCAO CONTGUA SIMPLES


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.

Figura 1: Alocao contgua simples

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. 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.

Figura 2: Proteo na alocao contgua simples


3 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

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 de fcil implementao e do cdigo reduzido, a alocao contgua simples no permite a utilizao eficiente dos recursos computacionais, 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.

Figura 3: Subutilizao da memria principal

4. TCNICA DE OVERLAY
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 4, 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, 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
4 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

carga no realizada; caso contrrio, o novo mdulo ir sobrepor-se ao que j estiver na memria principal.

Figura 4: Tcnica de overlay

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. 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.

5. ALOCAO PARTICIONADA
Os sistemas operacionais recursos evoluram disponveis. no Nos sentido de proporcionar melhor o

aproveitamento

dos

sistemas

monoprogramveis,

processador permanece grande parte do tempo ocioso e a memria principal subutilizada. Os sistemas multiprogramveis j so muito mais eficientes no uso do processador, necessitando, assim, que diversos programas estejam na memria principal ao mesmo tempo e que novas formas de gerncia da memria sejam implementadas. 5.1. O Modelo da Multiprogramao Quando optamos por multiprogramar um processador, sua utilizao poder ser bastante otimizada. Colocando a questo de uma forma bem grosseira, se um processo gasta em mdia 20% do tempo em que est armazenado na memria principal usando
5 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

efetivamente o processador, com cinco processos ao mesmo tempo na memria, o processador ficar ocupado o tempo todo. Este modelo muito otimista e irreal, uma vez que assume que nunca dois ou mais processos estaro esperando por entrada/sada ao mesmo tempo. Um modelo mais realista procura considerar o uso do processador de forma probabilstica. Suponha que determinado processo gaste uma frao p de seu tempo, esperando por entrada/sada. Com n processos na memria ao mesmo tempo, a probabilidade de todos eles aguardarem por entrada/sada ao mesmo tempo, caso em que o processador estar ocioso, pn. Neste caso, o uso do processador ser dado pela frmula: uso do processador = 1 pn

A figura 5 mostra a utilizao do processador como uma funo de n, funo esta denominada de grau de multiprogramao.

Figura 5: Utilizao do processador como funo do nmero de processos na memria principal

A anlise da figura 5 mostra que se os processos gastam 80% de seu tempo esperando por entrada/sada, no mnimo 10 processos devem estar ao mesmo tempo na memria, para manter o grau de ociosidade abaixo de 10%. Este modelo probabilstico apenas uma aproximao, pois assume que todos os n processos so independentes, significando que aceitvel para um sistema com cinco processos na memria ter trs deles rodando e dois esperando. Mas, com um nico processador, no podemos ter trs processos rodando de uma vez, de forma que um processo que fique pronto enquanto o
6 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

processador est ocupado ter que esperar. Ento, tais processos no so independentes. Um modelo mais aperfeioado poderia ser construdo usando a teoria das filas. Mesmo sendo um modelo muito simples, o modelo da figura acima pode ser usado para fazer previses a respeito da performance do processador. Suponha, por exemplo, que um computador tenha 1M de memria, com o sistema operacional ocupando 200K, e cada programa do usurio ocupando tambm 200K. Nestas condies, podemos ter quatro programas de usurio na memria ao mesmo tempo. Com 80% de percentagem de espera por entrada/sada, temos uma utilizao do processador em torno de 60%, ignorando o overhead do sistema operacional. A adio de outro megabyte de memria permite que o sistema saia de um grau de multiprogramao 4 para um grau 9, fazendo a percentagem de utilizao chegar a 87% aproximadamente. Em outras palavras, o segundo megabyte de memria far o throughput crescer 45%. J um terceiro megabyte far com que a utilizao do processador cresa de 87% para 96%, melhorando o throughput em apenas 10% aproximadamente. Usando este modelo, o analista dever decidir que o segundo megabyte um timo investimento, mas o terceiro no.

Anlise da Performance do Sistema sob Multiprogramao O modelo acima tambm pode ser usado para analisar sistemas batch.

Consideremos um centro de computao onde os jobs esperam em mdia 80% do tempo por entrada/sada. Quatro jobs so submetidos conforme a tabela abaixo:
Job 1 2 3 4 Instante da chegada 10:00 10:10 10:15 10:20 Minutos de processador necessrios 4 3 2 2

O primeiro job precisa de quatro minutos do processador. Com 80% de espera por entrada/sada, tal job gasta apenas 12 segundos de tempo do processador para cada minuto em que estiver na memria, mesmo que no haja outros jobs competindo com ele pelo uso do processador. Os outros 48 segundos so gastos aguardando que operaes de entrada/sada se completem. Desta forma, ele precisar estar na memria por no mnimo 20 minutos, de forma a conseguir quatro minutos de processador, mesmo com ausncia de competio. Das 10:00 s 10:10, o job 1 esteve sozinho na memria e conseguiu 2 minutos de tempo de processador. Com a chegada do job 2 , a utilizao do processador cresce de 0,20 para 0,36 devido ao aumento do grau de programao. No entanto, com o
7 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

escalonamento round robin, cada job obtm 0,18 minuto de trabalho do processador para cada minuto que permanecer na memria. Com a adio do segundo job, custou ao primeiro uma diminuio de 10% de sua performance sem competio. s 10:15 chega o terceiro job. At este momento os jobs 1 e 2 receberam respectivamente 2,0 e 0,9 minutos de tempo de processador. Com grau de multiprogramao 3, cada job obtm 0,16 minuto do processador para cada minuto decorrido de tempo real, conforme a tabela abaixo:

1 Processador ocioso Processador ocupado Processador / processo 0,80 0,20 0,20

2 0,64 0,36 0,18

3 0,51 0,49 0,16

4 0,41 0,59 0,15

Das 10:15 s 10:20, cada um dos trs obtm 0,8 minuto do processador. s 10:20 chega o quarto job. A figura 6 mostra a seqncia completa dos eventos:

Figura 6:Seqncia de chegadas e trmino de jobs

5.2. 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 ou fixa.

8 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 7: Alocao particionada esttica 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 cdigos absolutos. 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 estivessem sendo executados, e a terceira partio estivesse livre,os programas C e E no poderiam ser processados. A esse tipo de gerncia de memria chamou-se alocao particionada esttica absoluta.

Figura 8: Alocao particionada esttica absoluta

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
9 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

programa E poderia ser executado em qualquer uma das duas parties. Esse tipo de gerncia de memria denominado alocao particionada esttica relocvel.

Figura 9: Alocao particionada esttica relocvel 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. 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.

Figura 10: Tabela de alocao de parties

Nesse esquema de alocao de memria, a proteo baseia-se em dois registradores, que indicam os limites inferior e superior da partio onde o programa est sendo executado. 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.

10 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 11: Proteo na alocao particionada Tanto nos sistemas de alocao absoluta quanto nos de alocao 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 parties onde esto alocados, deixando 1kb, 3kb e 5kb de reas livres, respectivamente, conforme a figura 10. Este tipo de problema, decorrente da alocao fixa das parties, conhecido como fragmentao interna.

Figura 12: Fragmentao interna

Um exemplo de sistema operacional que implementou esse tipo de gerncia de memria o OS/MFT da IBM.

5.3. 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, conseqentemente, o grau de compartilhamento da memria aumentado.
11 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

Na alocao particionada dinmica ou varivel, foi eliminado o conceito de parties de tamanho fixo. Nesse esquema, cada programa utilizaria o espao necessrio, tornando essa rea sua partio. Como os programas utilizam apenas o espao de que necessitam, no esquema de alocao particionada dinmica o problema da fragmentao interna no ocorre.

Figura 13: Alocao particionada dinmica 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 12, mesmo existindo 12kb livres de memria principal, o programa D, que necessita de 6kb de espao, no poder ser carregado para execuo, pois este espao no est disposto contiguamente. Esse tipo de problema chamado de fragmentao externa.

Figura 14: Fragmentao externa

Existem duas solues para o problema da fragmentao externa da memria principal. Na primeira soluo, conforme os programas terminam, apenas os espaos
12 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

livres adjacentes so reunidos, produzindo reas livres de tamanho maior. Na figura 13, caso o programa C termine, uma rea de 8kb ser criada.

Figura 15: Soluo para a fragmentao externa (a) A segunda soluo envolve a relocao de todas as parties ocupadas, eliminado todos os espaos entre elas e criando uma nica rea livre contgua (Fig. 14). 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 relocao, 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.

Figura 16: Soluo para a fragmentao externa (b)

Um exemplo de sistema operacional que implementou esse tipo de gerncia de memria o OS/MVT da IBM.

13 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

5.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. Gerncia de Memria com Mapeamento de Bits Com o emprego do mapeamento de bits, a memria dividida em unidades de alocao, to pequenas quanto poucas palavras ou to grandes quanto vrios quilobits. Correspondendo a cada unidade de alocao definida, h um bit do mapa de bits, que 0 se a unidade estiver livre e 1 se estiver ocupada. O tamanho da unidade de alocao um ponto importante do projeto. Quanto menor a unidade de alocao, maior o mapa de bits. No entanto, mesmo com uma unidade de alocao to pequena quanto quatro bytes, 32 bits de memria necessitaro de somente um bit do mapa. Se a unidade de alocao escolhida for muito grande, o mapa de bits ser pequeno, mas uma parcela considervel da memria poder ser desperdiada na ltima unidade, se o tamanho do processo no for um mltiplo exato do tamanho da unidade de alocao. O mapa de bits uma forma simples de controlar a alocao da memria, pois seu tamanho s depende do tamanho da memria a do tamanho da unidade de alocao. O principal problema deste mtodo ocorre quando for necessrio trazer para a memria um processo que ocupa k unidades de alocao. O gerente de memria deve procurar por k bits 0 consecutivos no mapa. Esta procura excessivamente lenta, de forma que, na prtica, os mapas de bit raramente so usados.

Figura 17: Mapa de bits e Listas ligadas

Gerncia da Memria com Listas Ligadas

14 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

Uma outra forma de controlar a alocao da memria mantendo uma lista ligada dos segmentos livres e ocupados da memria. Entende-se por segmento um processo ou um buraco entre dois processos. Cada entrada da lista especifica um buraco (H) ou um processo (P), o endereo no qual o segmento comea e um ponteiro para a prxima entrada. A lista de segmentos poder ser ordenada pelos endereos. Esta ordenao tem a vantagem de permitir uma rpida atualizao da lista sempre que um processo terminar ou for removido da memria. Um processo que deixa a memria por qualquer motivo sempre tem dois vizinhos, exceto quando estiver no incio ou no fim da fila. Tais vizinhos podem ser processos ou buracos, levando a quatro possveis combinaes.

Figura 18: Combinaes de vizinhos possveis para um processo X que est terminando seu processamento Quando os processos e os buracos so mantidos numa lista ordenada por endereos, vrios algoritmos podem ser usados para alocar memria para um novo processo ou para um processo que precise ser transferido do disco para a memria. Vamos assumir que o gerente de memria conhea a quantidade de memria a ser alocada: Primeira alocao: o gerente de memria procura ao longo da lista de segmentos at encontrar um buraco que seja suficiente grande para abrigar o processo. O buraco ento quebrado em dois pedaos, um para o processo e outro para o espao no-utilizado. A primeira alocao um algoritmo extremamente rpido, pois ele gasta em procura o mnimo de tempo possvel. Prxima alocao: que funciona exatamente igual ao primeiro, exceto pelo fato de guardar a posio onde ele encontra um buraco conveniente. Da prxima vez que o algoritmo for chamado, ele inicia sua busca deste ponto, em vez de comear de novo no incio da lista. A performance deste algoritmo um pouco pior que o anterior. Melhor alocao: busca na lista inteira a melhor posio para armazenar o processo que est precisando de espao. Em vez de parar ao encontrar um buraco grande, que poder ser necessrio mais tarde, ele busca um buraco cujo
15 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

tamanho seja o mais prximo possvel do tamanho do processo. Este algoritmo o mais lento, pois precisa pesquisar toda a lista cada vez que for chamado. Ele tambm resulta em maior desperdcio de memria que o da primeira locao, pois ele tende a dividir a memria em buracos muito pequenos, que tornam-se difceis de usar em funo do tamanho reduzido. Pior alocao: a pior partio escolhida, ou seja, aquela em que o programa deixa o maior espao sem utilizao. Apesar de utilizar as maiores parties, a tcnica pior alocao deixa espaos livres maiores que permitem a um maior nmero de programas utilizar a memria, diminuindo o problema da fragmentao. As simulaes mostram que este algoritmo no apresenta bons resultados prticos. Todos os quatro algoritmos podero ter seus tempos de execuo reduzidos mantendo-se as listas separadas para processos e buracos. Desta forma, em todos eles se gasta toda a energia na pesquisa de buracos e no de processos. O preo pago por isto a complexidade adicional introduzida no algoritmo e o maior tempo gasto na liberao da memria, uma vez que um segmento que foi liberado deve ser removido da lista de processos e inserido na de buracos. Se mantivermos listas distintas para processos e buracos, a de buracos deve ser ordenada em funo do tamanho dos mesmos, para fazer com que a melhor alocao fique mais rpida. Quando este algoritmo pesquisa a lista de buracos do menor para o maior, to logo ele encontre um buraco adequado, poder abandonar a busca, pois certamente este ser o melhor buraco. Com a lista ordenada por tamanho, as performances da primeira alocao e da melhor alocao se equivalem. Gerncia da Memria Usando o Sistema Buddy Na seo anterior vimos que mantendo todos os buracos em uma ou mais listas, ordenadas pelo tamanho do buraco, conseguimos um tempo de alocao bem razovel, porm um tempo de liberao extremamente ruim, pelo fato de todas as listas terem que ser pesquisadas para encontrar os vizinhos dos segmentos liberados. O sistema buddy um algoritmo para gerenciamento de memria que tira vantagem do fato de os computadores usarem nmeros binrios para o endereamento, como uma forma de acelerar o merge dos buracos adjacentes quando um processo termina ou quando retirado da memria. Tal algoritmo funciona da seguinte forma. O gerente de memria mantm uma lista de blocos livres de tamanho 1, 2, 4, 8, 16, etc bytes, at o tamanho da memria. Com uma memria de 1M, sero necessrias 21 destas listas, desde o tamanho de 1 byte at 1M byte. As demais listas esto vazias. A configurao inicial da memria mostrada na figura abaixo:
16 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

Figura 19: Sistema Buddy

Inicialmente um processo A de 70k trazido para a memria. Como a lista de buracos s tem potncias inteiras de 2, o processo requisitar 128k por ser a potncia de 2 mais prxima da sua necessidade. No h nenhum bloco de 128k disponvel e, portanto, o bloco de 1M vai ser dividido em dois blocos de 512k, chamados buddies, um comeando no endereo 0 e outro no 512k. Um deles, o de endereo 0, ento dividido em dois outros de 256k, um no endereo 0 e outro no 256k. Destes dois, o que estiver no endereo mais baixo vai ser novamente dividido em dois de 128k, e o do endereo 0 alocado ao processo A. A seguir um processo B de 35k deve ser escrito na memria. Neste momento devemos arredondar 35k para a potncia 2 imediatamente superior, descobrindo que no h nenhum bloco de 64k disponvel. Desta forma, o outro buddie de 128k dividido em dois, um no endereo 128k e outro no 192k. O bloco de endereo 128k alocado ao processo B. A terceira requisio para um processo C de 80k, atendida como um bloco de 128k com incio em 256k. Imaginemos agora que o processo A termine seu processamento e o bloco de 128k deve ser devolvido. Ele simplesmente deve ser acrescentado lista dos blocos livres de 128k. Agora, o processo D requisita um bloco de 60k. O bloco de 64k do endereo 192k alocado ao processo. O processo B termina e devolve o bloco. Somente quando D devolve o bloco que pode ser feito o merge em um bloco de 256k. Quando C finaliza, voltaremos configurao inicial de 1M em 0. O sistema buddy tem uma vantagem sobre os algoritmos que ordenam os blocos pelo tamanho, mas no necessariamente forando-os a serem potncias de 2. A vantagem que quando um bloco de tamanho 2k for liberado, o gerente de memria s deve procurar na lista dos blocos de 2k para ver se h possibilidade de merge. Com os outros algoritmos todas as listas devero ser verificadas. O resultado que o sistema buddy bem mais rpido que os demais.
17 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

Infelizmente, o sistema buddy no eficiente em termos de utilizao da memria. O problema decorre obviamente da necessidade de se arredondar a requisio feita pelo processo para a prxima potncia de 2. A um processo de 35k deve ser alocado 64k. Os 29k excedentes so perdidos.

6. 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 fim 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.

Figura 20: Swapping


18 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

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 outswapped. 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. Dessa forma, um programa pode ser carregado em qualquer posio de memria.

Figura 21: Relocao dinmica

O conceito de swapping permite maior compartilhamento da memria principal e, conseqentemente, maior utilizao dos recursos do sistema operacional. 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 quase que dedicado execuo de swapping, deixando de realizar outras tarefas e impedindo a execuo dos processos residentes. Os primeiros sistemas operacionais que implementaram esta tcnica surgiram na dcada de 1960, como o CTSS do MIT e OS/360 da IBM. Com a evoluo dos sistemas
19 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

operacionais, novos esquemas de gerncia de memria passaram a incorporar a tcnica de swapping, como a gerncia de memria virtual.

7. BIBLIOGRAFIA
MACHADO, F. B., MAIA, L. P., Arquitetura de Sistemas Operacionais, 3a edio, Ed. LTC, 2002, Rio de Janeiro TANENBAUM, A., Sistemas Operacionais Modernos, 5a edio, Ed. Makron Books, 1999, Rio de Janeiro

20 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

8. LISTA DE EXERCCIOS
1. 2. Quais as funes bsicas da gerncia de memria? Considere um sistema computacional com 40kb de memria principal e que utilize um sistema operacional de 10kb que implemente alocao contgua de memria. Qual a taxa de subutilizao da memria principal para um programa que ocupe 20kb de memria? 3. Suponha um sistema computacional com 64kb de memria principal e que utilize um sistema operacional de 14kb que implemente alocao contgua de memria. Considere tambm um programa de 90kb, formado por um mdulo principal de 20kb e trs mdulos independentes, cada um com 10kb, 20kb e 30kb. Como o programa poderia ser executado utilizando-se apenas a tcnica de overlay? 4. Considerando o exerccio anterior, se o mdulo de 30kb tivesse seu tamanho aumentado para 40kb, seria possvel executar o programa? Caso no possa, como o problema poderia ser contornado? 5. Qual a diferena entre fragmentao interna e fragmentao externa da memria principal? 6. Suponha um sistema computacional com 128kb de memria principal e que utilize um sistema operacional de 64kb que implemente alocao particionada esttica relocvel. Considere tambm que o sistema foi inicializado com trs parties: P1 (8kb), P2 (24kb) e P3 (32kb). Calcule a fragmentao interna da memria principal aps a carga de trs programas PA, PB e PC. a) b) c) 7. P1 PA (6kb); P2 PB (20kb); P3 PC (28kb) P1 PA (4kb); P2 PB (16kb); P3 PC (26kb) P1 PA (8kb); P2 PB (24kb); P3 PC (32kb)

Considerando o exerccio anterior, seria possvel executar quatro programas concorrentemente utilizando apenas a tcnica de locao particionada esttica relocvel? Se for possvel, como? Considerando ainda o mesmo exerccio, seria possvel executar um programa de 36kb? Se for possvel, como?

8. 9.

Qual a limitao da alocao particionada esttica absoluta em relao alocao esttica relocvel? Considere que os processos da tabela a seguir esto aguardando para serem executados e que cada um permanecer na memria durante o tempo especificado. O sistema operacional ocupa uma rea de 20kb no incio da memria e gerencia a memria utilizando um algoritmo de particionamento dinmico modificado. A memria total disponvel no sistema de 64kb e alocada em blocos mltiplos de 4kb. Os processos alocados de acordo com sua identificao (em ordem crescente) e iro aguardar at obter a memria de que necessitam. Calcule a perda de memria por
21 de 22

SISTEMAS OPERACIONAIS NOTAS DE AULA

fragmentao interna e externa sempre que um processo colocado ou retirado da memria. O sistema operacional compacta a memria apenas quando existem duas ou mais parties livres adjacentes. Processos 1 2 3 Memria 30 kb 6 kb 36 kb Tempo 5 10 5

10. Considerando as estratgias para escolha da partio dinamicamente, conceitue as estratgias best-fit e worst-fit especificando prs e contras de cada uma. 11. Considere um sistema que possua as seguintes reas livres na memria principal, ordenadas crescentemente: 10kb, 4kb, 20kb, 18kb, 7kb, 9kb, 12kb e 15kb. Para cada programa abaixo, qual seria a partio alocada utilizando-se as estratgias first-fit, best-fit e worst-fit? a) 12kb b) 10kb c) 9kb 12. Um sistema utiliza alocao particionada dinmica como mecanismo de gerncia de memria. O sistema operacional aloca uma rea de memria total de 50kb e possui, inicialmente, os programas da tabela a seguir: 5 kb 3 kb 10 kb 6 kb 26 kb Programa A Programa B Livre Programa C Livre

Realize as operaes abaixo seqencialmente, mostrando o estado da memria aps cada uma delas. Resolva a questo utilizando as estratgias best-fit, worst-fit e firstfit: a) b) c) alocar uma rea para o programa D que possui 6 kb; liberar a rea do programa A; alocar uma rea para o programa E que possui 4 kb.

13. O que swapping e para que utilizada essa tcnica? 14. Por que importante o uso de um loader com relocao dinmica para que a tcnica de swapping possa ser implementada?

22 de 22

Você também pode gostar