SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos...

12
SISTEMAS OPERACIONAIS Gerência de Memória Apostila 7

Transcript of SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos...

Page 1: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

SISTEMAS

OPERACIONAIS

Gerência de Memória

Apostila 7

Page 2: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 2

1.0 – INTRODUÇÃO

Historicamente, a memória principal sempre foi vista como um

recurso escasso e caro. Uma das maiores preocupações dos

projetistas foi desenvolver Sistemas Operacionais que não

ocupassem muito espaço de memória e, ao mesmo tempo,

otimizassem a utilização dos recursos computacionais. Mesmo

atualmente, com a redução de custo e consequente aumento da

capacidade da memória principal, seu gerenciamento é um dos

fatores mais importantes no projeto de Sistemas Operacionais.

Enquanto nos sistemas monoprogramáveis a gerência da

memória não é muito complexa, nos sistemas multiprogramáveis

essa gerência se torna crítica, devido à necessidade de se maximizar

o número de usuários e aplicações utilizando eficientemente o espaço

da memória principal.

1.1 - Funções Básicas

Em geral programas são armazenados em memórias

secundárias, como discos ou fitas, por ser um meio não-volátil,

abundante e de baixo custo. Como o processador somente executa

instruções localizadas na memória principal, o Sistema Operacional

deve sempre transferir programas da memória secundária para a

memória principal antes deles serem executados. Como o tempo de

acesso à memória secundária é muito superior ao tempo de acesso à

memória principal, o Sistema Operacional deve buscar reduzir o

número de operações de E/S à memória secundária, para evitar

problemas de desempenho do sistema.

A gerência de memória deve tentar manter na memória

principal o maior número possível de processos residentes,

permitindo maximizar o compartilhamento do processador e demais

recursos computacionais. Mesmo na ausência de espaço livre, o

sistema deve permitir que novos processos sejam aceitos e

executados. Isto é possível através da transferência temporária de

Page 3: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 3

processos residentes na memória principal para a memória

secundária, liberando espaço para novos processos. Este mecanismo

é conhecido como swapping.

Outra preocupação na gerência de memória é permitir a

execução de programas que sejam maiores que a memória física

disponível, implementando técnicas como overlay e memória virtual.

Em um ambiente de multiprogramação, o sistema operacional

deve proteger as áreas de memória ocupadas por cada processo,

além da área onde reside o próprio sistema. Caso um programa tente

realizar algum acesso indevido à memória, o sistema de alguma

forma deve impedí-lo. Apesar de a gerência de memória garantir a

proteção de áreas da memória, mecanismos de compartilhamento

devem ser oferecidos para que diferentes processos possam trocar

dados de forma protegida.

2.0 - ALOCAÇÃO DE MEMÓRIA

Simples

Contígua

Particionada Estática(Fixa) / Dinâmica

Alocação

Paginação

Não-Contígua Segmentação (Memória

Virtual) Segmentação com Paginação

2.1 - Alocação Contígua Simples

Foi implementada nos primeiros Sistemas Operacionais, porém

ainda está presente em alguns sistemas monoprogramáveis. Nesse

tipo de organização, a memória principal é subdividida em duas

áreas: uma para o sistema operacional e outra para o programa do

usuário. Dessa forma, o programador deve desenvolver suas

Page 4: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 4

aplicações, preocupado, apenas, em não ultrapassar o espaço de

memória disponível, ou seja, a diferença entre o tamanho total da

memória principal e área ocupada pelo Sistema Operacional.

Figura 1 - Alocação Contígua Simples

Esquema em que o usuário tem controle sobre toda a memória

principal, inclusive a área do Sistema Operacional.

Implementa controle de proteção do sistema através de

registrador que delimita a área do Sistema Operacional.

Fácil implementação e código reduzido, porém não utiliza os

recursos computacionais de forma eficiente, pois apenas um

usuário/aplicação pode dispor deste recurso.

2.2 - Técnia de Overlay

Na alocação contígua simples, todos os programas estão

limitados ao tamanho da área de memória principal disponível para o

usuário. Uma solução encontrada para o problema é dividir o

programa em módulos, de forma que seja possível a execução

independente de cada módulo, utilizando uma mesma área de

memória. Essa técnica é chamada de overlay.

Page 5: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 5

Figura 2 - Técnia de Overlay

A técnica de overlay utiliza uma área de memória comum, os

os módulos “não-carregados” poderão compartilhar esta área

de memória (área de overlay).

Sempre que um módulo “não-carregado” for referenciado pelo

módulo principal, o módulo será carregado da memória

secundária para a área de overlay. No caso de uma referência

a um módulo já carregado, a carga não será realizada.

A definição das áreas de overlay é função do programador,

através de comandos específicos das linguagem de

programação utilizada.

O tamanho da área de overlay é estabelecido a partir do

tamanho do maior módulo.

Esta técnica tem a vantagem de permitir ao programador

expandir os limites da memória principal, porém deve ser

utilizada com cuidado, pois pode trazer sérios problemas de

desempenho, devido a possibilidade de transferência excessiva

dos módulos entre a memória principal e a secundária.

2.3 - Alocação Contígua Particionada

Page 6: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 6

Os Sistemas Operacionais evoluiram no sentido de

proporcionar melhor aproveitamento dos recursos disponíveis. Nos

sistemas monoprogramáveis, o processador permance grande parte

do tempo ocioso e a memória principal é subutilizada. Os sistemas

multiprogramáveis jão são muito mais eficientes no uso do

processador, necessitando assim, que diversos programas estejam

na memória principal ao mesmo tempo e que novas formas de

gerência da memória sejam implementadas.

2.4 - Alocação Contígua Particionada Fixa (Estática)

Nos primeiros sistemas multiprogramáveis, a memória era

dividida em pedaços de tamanho fixo, chamados partições. O

tamanho das partições, estabelecido na fase de inicialização do

sistema, era definido em função do tamanho dos programas que

executariam no ambiente. Sempre que fossem necessárias alterações

do tamanho de uma partição, o sistema deveria ser reinicializado

com a nova configuração.

Figura 3 - Alocação Contígua Particionada Fixa (Estática) - Absoluta

Inicialmente, os programas só podiam ser carregados e

executados em apenas uma partição específica, mesmo se

outras estivessem disponíveis.

Page 7: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 7

Esta limitação se devia aos compiladores e montadores, que

geravam apenas código absoluto.

No exemplo acima, supondo que os programas A e B estivesem

sendo executados, os programas C e E não poderiam ser

processados na terceira partição, mesmo esta estando livre.

A esse tipo de gerência chamou-se alocação particionada

estática absoluta.

Com a evolução dos compiladores, montadores, ligadores e

carregadores, o código gerado deixou de ser absoluto e passou a

ser relocável. No código relocável, todas as referências a

endereços no programa são relativas ao início do código e não a

endereços físicos de memória. Desta forma, os programas

puderam ser executados a partir de qualquer partição.

Figura 4 - Alocação Contígua Particionada Fixa (Estática) -

Relocável

Supondo que na partição 1 esteja o programa C, na partição 2

o programa A e na partição 3 o programa B. Caso os

programas A e B terminassem, o programa E poderia ser

executado tanto na partição 2 quanto na partição 3.

Page 8: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 8

Para manter o controle sobre as partições alocadas, a gerência

de memória mantém uma tabela com o endereço inicial de

cada partição, seu tamanho, e se está em uso ou não.

Figura 5 – Tabela de Alocação de Partições

A esse tipo de gerência chamou-se alocação particionada

estática relocável.

Neste esquema de memória, a proteção baseia-se em dois

registradores, que indicam os limites (inferior e superior) da

partição onde o programa está sendo executado.

Figura 6 – Proteção na Alocação Particionada

Tanto nos sitemas de alocação absoluta quanto nos de

alocação relocável, os programas, normalmente, não preenchem

Page 9: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 9

totalmente as partições onde são carregados, deixando área de

memória livre. Este problema é conhecido como fragmentação

interna.

Um exemplo de sistema operacional que implementou esse tipo

de gerência de memória é o OS/MFT (Multiprogramming with Fixed

Number of Tasks) da IBM.

2.5 - Alocação Contígua Particionada Dinâmica

Na alocação particionada dinâmica ou variável, foi eliminado o

conceito de partições de tamanho fixo. Nesse esquema, cada

programa utilizaria o espaço necessário, tornando essa área sua

partição. Como cada programa utiliza apenas o espaço que necessita,

o programa de fragmentação interna não ocorre.

Um outro problema começará a ocorrer, conhecido como

fragmentação externa. Ele ocorre quando os programas forem

terminando e deixando espaços cada vez menores na memória, não

permitindo o ingresso de novos programas.

Figura 7 - Alocação Contígua Particionada Dinâmica

Existem duas soluções para este problema. O primeiro método

indica que, conforme os programas terminem, apenas os espaços

livres adjacentes sejam reunidos, produzindo áreas livres de

tamanho maior.

Page 10: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 10

Figura 8 - Primeira Solução para Fragmentação Interna

A segunda solução envolve a relocação de todas as partições

ocupadas, eliminando todos os espaços entre elas e criando uma

única área livre contígua. Para que esta solução possa ser

implementada, é necessário que o sistema tenha a capacidade de

mover os diversos programas na memória principal, ou seja, realizar

a relocação dinâmica.

Figura 9 - Segunda Solução para Fragmentação Interna

Esta técnica de gerenciamento é conhecida como alocação

particionada dinâmica com relocação.

Reduz em muito o problema da fragmentação, porém aumenta

a complexidade do algoritmo e o consumo de recursos do

sistema (processador e área de disco).

Exemplo de implementação: OS/MVT (Multiprogramming with a

Variable Number os Tasks) da IBM.

Page 11: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 11

2.6 - Estratégias de Alocação de Partição

O Sistemas Operacionais implementam, basicamente, três

estratégias para determinar em qual área livre um programa será

carregado para execução. A melhor estratégia depende de uma série

de fatores, como o tamanho dos programas a serem processados.

Independente do algoritmo utilizado, o sistema possui uma lista das

áreas livres, com o endereço e o tamanho de cada área.

Figura 10 - Estratégias de Alocação de Partição

Qual partição livre alocar a um processo que pede por um

tamanho X ?

FIRST-FIT: a primeira partição livre onde caibam X bytes é

escolhida;

o A procura pode começar sempre no início da lista, ou a

partir do último bloco alocado (“next-fit”).

BEST-FIT: a partição livre de tamanho mais parecido com X

bytes é escolhida (sendo igual ou maior do que X);

o Pode se aproveitar da ordenação da lista de área livres.

o Pode aumentar o problema de fragmentação.

WORST-FIT: a maior a partição livre é escolhida;

o Diminui o problema de fragmentação, pois deixa espaços

livres maiores.

Page 12: SISTEMAS OPERACIONAIS - Uniban · UNIBAN Sistemas Operacionais Gerência de Memória 3 processos residentes na memória principal para a memória secundária, liberando espaço para

UNIBAN Sistemas Operacionais

Gerência de Memória 12

Figura 11 – Exemplo de Uso das Estratégias de Alocação de Partição