Gestão de Memória - fenix.tecnico.ulisboa.pt · a dimensão das tabelas de páginas e listas de...

68
P. Ferreira/J. A. Marques - INESC/IST – 01/02 1 Gestão de Memória mecanismos de gestão de memória protecção da memória algoritmos de gestão de memória

Transcript of Gestão de Memória - fenix.tecnico.ulisboa.pt · a dimensão das tabelas de páginas e listas de...

P. Ferreira/J. A. Marques - INESC/IST – 01/02 1

Gestão de Memóriamecanismos de gestão de memóriaprotecção da memóriaalgoritmos de gestão de memória

P. Ferreira/J. A. Marques - INESC/IST – 01/02 2

Mecanismos de Gestão de Memória

P. Ferreira/J. A. Marques - INESC/IST – 01/02 3

Objectivos e Organização da Gestão de Memória

objectivo:Gerir o espaço de endereçamento dos processos• assegurar que cada processo dispõe da memória que precisa• garantir que cada processo só acede à memória a que tem direito (protecção)• optimizar (i.e. minimizar) as transferências de informação em memórias organizadas

hierarquicamente

organização:memória uniforme:a informação (dados ou código) apenas é acessível quando se encontra na memória principalmemória hierarquizada: as informações são repartidas ou replicadas por diversos níveis da memória de modo a, simultaneamente, maximizar o número de referências às unidades mais rápidas e minimizar a ocupação das mesmas

P. Ferreira/J. A. Marques - INESC/IST – 01/02 4

Hierarquia de Memóriamemória principal (física ou central):

acesso aleatóriotempo de acesso reduzidocusto elevadoinformação volátil

memórias secundárias (ou de disco):acesso quase aleatório (por blocos)tempo de acesso elevadocusto reduzidoinformação persistente

P. Ferreira/J. A. Marques - INESC/IST – 01/02 5

EndereçamentoPara perceber a gestão da memória tem de se começar por compreender a relação entre os endereços manipulados pelos programadores, os endereços gerados pelo compilador e os endereços físicos que realmente permitem aceder à memória.Consideremos uma instrução numa linguagem de alto nível

A= B+1

O programador vê apenas referências lógicas que o compilador tem de transformar em endereços. Três situações se podem colocar:

Endereços reais físicos – não existe qualquer operação posterior.Endereços reais recolocáveis – os endereços tem de ser somados a uma base para obter o endereço físicoEndereços virtuais – os endereços têm de ser transformados em tempo de execução para os endereços físicos.

P. Ferreira/J. A. Marques - INESC/IST – 01/02 6

Geração dos Endereços Físicosrealizada na escrita do programa, na sua compilação ou na ediçãode ligações:

o programa apenas poderá ser executado numa zona determinada da memóriaprincipal (colocação estática)

realizada aquando do carregamento do executável na memóriaprincipal:

o editor de ligações gera um executável recolocável que pode ser implantado emqualquer região da memória principal (recolocação e reimplantação estática)

a correspondência é realizada durante a execução do programa:tradução dinâmica dos endereços virtuais em endereços reais durante a execuçãodo processo (reimplantação dinâmica)

P. Ferreira/J. A. Marques - INESC/IST – 01/02 7

Recolocaçãoendereços lógicos e tabelas de conversão:

o código dos executáveis possui endereços lógicos convertíveis quando do carregamento em memória para endereços reais mediante a utilização de tabelas de conversão geradas pelo compilador ou editor de ligações

utilização de endereçamento baseado:durante a execução um endereço real é gerado somando ao endereço lógico um valor constante B (base)O valor B é guardado no registo base do processador e é definido em cadacarregamento do executávelcomo medida de protecção, os endereços reais obtidos mediante endereçamentobaseado são comparados (pelo hardware) com um valor limite, guardado no registolimite.

P. Ferreira/J. A. Marques - INESC/IST – 01/02 8

Programaprincipal

(residente)

Memória principal

Overlay 1

Overlay 2

Overlay 3

Mecanismo de Sobreposição (overlay)Possibilidade de executar programas com dimensão superior àmemória principal em sistemas com endereçamento realos overlays continuam a ter de ser dimensionados para a memória física disponível.

P. Ferreira/J. A. Marques - INESC/IST – 01/02 9

Overlay (cont.)exemplo:

parte residente contém as variáveis globaisvários overlays comn rotinas de inicialização, cálculo, escrita dos resultados

é simples de suportar pelo sistema operativoimplica que o programador indique explicitamente quando deve ser carregado um novo overlaycertos programas não são facilmente divididos em overlayslento devido à possível troca sistemática de overlaysobviamente, a parte residente mais qualquer um dos overlays tem de caber na memória principal

P. Ferreira/J. A. Marques - INESC/IST – 01/02 10

Sistemas Multiprogramados com Endereçamento Real

a memória principal está dividida em partições, às quais estáassociada uma fila de processos para execuçãoas partições podem ser de tamanho fixo (único ou não) ou de tamanho variável:

fixo: menor capacidade de recolocação, utilização de overlays, fragmentaçãointerna, paragem da máquina para alterar a dimensão das partiçõesvariável: maior capacidade de recolocação, fragmentação externa, recompactação

protecção através da utilização de registos com endereços inicial e final da partição activa (ou dos registos base e limite)

P. Ferreira/J. A. Marques - INESC/IST – 01/02 11

Sistemas Multiprogramados com Endereçamento Real - partições fixas

memória dividida em partições de dimensão fixaem cada partição é carregado um programaprogramas recolocáveis fragmentação interna: dimensão dos programas não coincide exactamente com a dimensão das partiçõesvários programas em execução implica mecanismos de protecção

P. Ferreira/J. A. Marques - INESC/IST – 01/02 12

Sistemas Multiprogramados com Endereçamento Real - partições fixas

Se o programa da partição i fica bloqueado então o programa da partição j pode ser executadoO grau máximo de multiprogramação é dado pelo número de partiçõesPode suceder que haja uma fila de processos à espera de ser executados numa dada partição:Os overlays podem ser usados dentro das partições

Filas de espera de programas para execução (uma por partição)

Partição 0

Partição 2

Partição 1

P. Ferreira/J. A. Marques - INESC/IST – 01/02 13

Tradução de Endereços com Partições Fixas

partição 0

partição 1

partição 2

partição 3

partição 4

partição 5

0

2K

4K

6K

8K

10K

Memória física

offset +endereço

P3 base: 6Kregisto base

2K

<?

N

GeraExcepção

registo limite

S

P. Ferreira/J. A. Marques - INESC/IST – 01/02 14

Sistemas Multiprogramados com Endereçamento Real - partições variáveis

Alocação sucessiva de partições com dimensões variáveisQuando um programa termina, a sua partição pode ser associada a outra (se for contígua), criando uma única de maior dimensãodimensão dos programas limitada pela memória físicaprotecção assegurada de modo análogo às partições fixas.

P. Ferreira/J. A. Marques - INESC/IST – 01/02 15

Sistemas Multiprogramados com Endereçamento Real - partições variáveis

número e dimensão de partições variáveis resolve fragmentação internafragmentação externa: muitas partições de dimensão muito reduzidaimplica a recompactação da memória (garbage collector): programas todos juntosem partições contíguas (processamento suspenso)

Sistema Operativo

Prog A 50 K

Prog C 30 K

Prog B 70 K

Prog D 80 K

Livre

ProgD

80 K

ProgC

30 K

ProgB

70 K

ProgA

50 K

ProgE

40 K

Fila de espera única de programas para execução

P. Ferreira/J. A. Marques - INESC/IST – 01/02 16

Tradução de Endereços com Partições Variáveis

partição 0

partição 1

partição 2

partição 3

partição 4

memória física

offset +endereço

P3 baseregisto base

P3 dimensãoregisto limite

<?

GeraExcepção

N

S

P. Ferreira/J. A. Marques - INESC/IST – 01/02 17

Endereços Reais e VirtuaisOs primeiros computadores suportavam apenas endereços reais:

endereços gerados pelo compilador têm relação directa com os endereços da memória física. O sistema operativo não podia efectuar qualquer gestão dos programas. (para quem se lembra o Sprectum é um computador deste tipo)

Os primeiros sistemas multiprogramados utilizavam uma arquitectura baseada em que um registo base é somado ao endereço codificado no programa.

Os programas podem ser recolocados a partir de um endereço inicial.um programa era gerado de forma contígua a dimensão dificulta a gestão da memória

Endereçamento virtual surge como uma solução para estes problemas:os endereços gerados pelo programa são convertidos pelo processador, em tempo de execução, em endereços físicosa unidade de gestão de memória no processador é responsável pela conversãoos dados referenciados pelo endereço virtual podem estar em memória principal ou secundária

P. Ferreira/J. A. Marques - INESC/IST – 01/02 18

Endereçamento Real vs. Endereçamento Virtual

b) Memória Virtuala) Memória Real

Espaço de endereçamento virtual Memória Física

Unidade de gestão da memória

Espaço de endereçamento visto pelo programa Memória Física

P. Ferreira/J. A. Marques - INESC/IST – 01/02 19

Programa fonte

Referências simbólicas: A = A + 1;Apontadores: B = malloc (size);

Código executável

Endereços reais Endereços virtuais

Não recolocáveis RecolocáveisContém endereços físicos Gerado com referência

a um endereço de base

Endereços que necessitamde tradução dinâmica durante

a execução do programa

Compilador + editor de ligações

Endereços Reais e Virtuais (cont.)

P. Ferreira/J. A. Marques - INESC/IST – 01/02 20

Endereçamento Virtualespaço de endereçamento dos processos não linearmenterelacionado com a memória físicade cada vez que são usados os endereços virtuais são convertidos(pela UGM) para endereços reaispara minimizar a informação necessária à conversão, a memóriavirtual é logicamente dividida em blocos contíguos:

endereço virtual = (bloco, deslocamento)

dois tipos de blocos:segmentos - dimensão variável.páginas - dimensão constante.

apenas precisam de estar na memória principal os blocos que estãoa ser utilizados por cada processo

P. Ferreira/J. A. Marques - INESC/IST – 01/02 21

Espaço de Endereçamento Virtual

Memória auxiliar

EspaçoVirtual do processo A

EspaçoVirtual do processo B

EspaçoVirtual do Processo C

Memória física

P. Ferreira/J. A. Marques - INESC/IST – 01/02 22

Paginaçãoespaço de endereçamento virtual linear de dimensão superior à damemória principal:

o programador nunca precisa de se preocupar com a gestão de memória quandoescreve um programa

na memória principal mantêm-se apenas algumas páginas do programa, sendo carregadas de memória secundária as demaisapenas quando necessário (falta de página)as instruções do processador têm de ser recomeçáveisa dimensão das páginas (constante) é normalmente muito menorque a da memória principal e influencia:

a fragmentação internao número de faltas de páginas e o tempo da sua resoluçãoa dimensão das tabelas de páginas e listas de páginas mantidas pelo sistemaoperativo

P. Ferreira/J. A. Marques - INESC/IST – 01/02 23

R Prot Base

+BTP

Página Deslocamento

Endereço virtual

Tabela de Páginas

P M

Base Deslocamento

Endereço real

Memória principal

Base

BTP

LTP

Tradução de Endereços Virtuais em MemóriaPaginada

P. Ferreira/J. A. Marques - INESC/IST – 01/02 24

Tabela de Tradução de Endereços(Translation Lookaside Buffer, TLB)

R Prot Base

+BTP

Página Deslocamento

Endereço virtual

Tabela de Páginas

P M

Base Deslocamento

Endereço real

Memória principal

Base

BTP

LTP

TLB

P. Ferreira/J. A. Marques - INESC/IST – 01/02 25

Memória Virtual PaginadaBits da página são enviados para o TLB

Comparação

Acesso à Tab. de Páginas

PáginaPresente

Actualizar TLB

Trazer Página do

DiscoConcatenar Base e Desloc.

S

S

P. Ferreira/J. A. Marques - INESC/IST – 01/02 26

Memória Virtual Paginada (cont.)fragmentação interna na última página de cada bloco lógico do programaa dimensão das páginas (constante) influencia:

a fragmentação internao número de faltas de páginas e o tempo da sua resoluçãoa dimensão das tabelas de páginas e listas de páginas mantidas pelo sistema operativo

protecção:verificação e limitação dos tipos de acesso ao segmento: leitura, escrita e execução.processos diferentes têm tabelas de páginas diferentes: espaços de endereçamento disjuntose inacessíveis a terceirosprotecção de blocos lógicos: igual protecção do conjunto de páginas que formam esse bloco

partilha de memória entre processos:podem-se partilhar páginas entre diferentes processos usando um mecanismo semelhante aousado para memória segmentadapartilha de blocos lógicos: partilha de múltiplas páginasnão é possível partilhar menos que uma página

P. Ferreira/J. A. Marques - INESC/IST – 01/02 27

Segmentaçãodivisão dos programas em segmentos lógicos que reflectem a sua estrutura funcional:

rotinas, módulos, código, dados, pilha, etc.o espaço de endereçamento virtual é linear em cada segmentoo programador pode ter que se preocupar com a gestão de memória quando escreve um programa

tentar suportar directamente na gestão de memória as abstracções comuns nas linguagens de programação:

carregamento em memóriaprotecçãoeficiência (princípio da localidade de referência)

dimensão dos segmentos é limitada pela arquitectura e não pode exceder a dimensão da memória principal

P. Ferreira/J. A. Marques - INESC/IST – 01/02 28

P Prot Limite Base

+BTS

Segmento Deslocamento

+

Deslocamento

Limite

Endereço virtual

Memória principal

Tabela de segmentosBTS

LTS

Base

Tradução de Endereços Virtuais em MemóriaSegmentada

P. Ferreira/J. A. Marques - INESC/IST – 01/02 29

Memória Virtual Segmentadafragmentação externaprotecção:

verificação de limites de endereçamento intra-segmentosverificação e limitação dos tipos de acesso ao segmento: leitura, escrita e execuçãoprocessos diferentes têm tabelas de segmentos diferentes: espaços de endereçamento disjuntos e inacessíveis a terceiros

partilha de memória entre processos:basta colocar nas tabelas de segmentos dos processos em questão o endereço real do segmento a partilhar os endereços virtuais usados para aceder ao segmento partilhado podem ser diferentes nos vários processosa protecção dum segmento partilhado é definida para cada processo através da respectiva tabela de segmentos

os segmentos têm tamanhos variáveis pelo que os algoritmos de substituição na memória são mais complicadosos programadores têm de ter uma noção mínima do modelo de endereçamentoo espaço de endereçamento não é linear

P. Ferreira/J. A. Marques - INESC/IST – 01/02 30

Limite Base

+BTS

Página Deslocamento

Endereço virtual

Tabela de Segmentos

P

Base Deslocamento

Endereço real

Segmento

BaseP

Tabela de Páginas

+

TLB

Prot R M Prot

Memória Segmentada/Paginada

P. Ferreira/J. A. Marques - INESC/IST – 01/02 31

Partilha de MemóriaA partilha de memória virtual é bastante simples, basta que os descritores de segmento ou página em dois processos independentes referenciem o mesmo endereço base.A protecção no acesso (RWE) nos dois processos não têm de ser

idêntica. Por exemplo um segmento pode ser de (RW) num processo e noutro apenas R.Na paginação a partilha tem que ter em conta a granularidade das páginas. Apenas se pode partilhar páginas ou múltiplos de páginas.Numa arquitectura segmentada a entidade partilhada é uma divisão lógica do programa pelo que a partilha é natural.

P. Ferreira/J. A. Marques - INESC/IST – 01/02 32

Protecção de MemóriaArquitectura Segmentada

Processos diferentes têm tabelas de segmentos diferentes;O número de segmento e o deslocamento são verificados, comparando-os respectivamente com a dimensão da tabela e com a dimensão do segmento;Cada segmento tem associado em código de acesso (leitura, escrita, execução).

Sistemas PaginadosProcessos diferentes têm tabelas independentes;O número de página é validado com o tamanho da tabela;

Cada página tem um código de acesso;A granularidade mínima da protecção é a da página.

Arquitectura de memória do i386

P. Ferreira/J. A. Marques - INESC/IST – 01/02 34

Algoritmos de Gestão de Memória

P. Ferreira/J. A. Marques - INESC/IST – 01/02 35

Algoritmos de Gestão de Memóriaexistem três tipos de decisões que o sistema operativo tem de tomarem relação à memória principal:

reserva: onde colocar um bloco de informaçãotransferência: quando transferir um bloco de memória secundária para memóriaprimária e vice-versasubstituição: quando não existe mais memória livre, qual o bloco a retirar damemória principal para satisfazer um pedido

P. Ferreira/J. A. Marques - INESC/IST – 01/02 36

Reserva de Memóriaa reserva e a libertação de memória ocorre nas seguintes situações:

na criação e terminação de processosna criação é reservado espaço para o código, dados e pilha do programana extensão do espaço de endereçamento (área de dados ou pilha)

reserva de páginas:reservar uma qualquer página entre todas as que estão livres

reserva de partições variáveis ou segmentos:analisar uma lista de blocos livres para encontrar um com dimensão igual ousuperior à desejadaescolher o bloco livre que provocar menor fragmentação externareservar parte ou a totalidade do bloco escolhido tendo em conta uma dimensãomínima para o fragmento geradoessa dimensão mínima gera fragmentação interna mas reduz a lista de blocos livres

P. Ferreira/J. A. Marques - INESC/IST – 01/02 37

Critérios de Escolha de Blocos Livresbest-fit (o menor possível):

gera elevado número de pequenos fragmentosem média percorre-se metade da lista de blocos livres na procuraa lista tem de ser percorrida outra vez para introduzir o fragmento

worst-fit (o maior possível):pode facilmente impossibilitar a reserva de blocos de grandes dimensõesa lista de blocos livres tem de ser percorrida para introduzir o fragmento

first-fit (o primeiro possível):minimiza a tempo gasto a percorrer a lista de blocos livresgera muita fragmentação externaacumula muitos blocos pequenos no início da lista, ficando para o fim os blocos maioresa lista é desordenada e os fragmentos não têm que ser reintroduzidos

next-fit (o primeiro possível a seguir ao anterior):espalha os blocos pequenos por toda a memória

P. Ferreira/J. A. Marques - INESC/IST – 01/02 38

Critérios de Escolha de Blocos Livres (cont.)dimensão do pedido: 15k

best-fit – Cworst-fit – Dfirst-fit - B

13K A13K A

22K B

16K C

32K D

29K E

P. Ferreira/J. A. Marques - INESC/IST – 01/02 39

Critérios de Escolha de Blocos Livres (cont.)buddy:

a memória livre é dividida em blocos de dimensão bn

se b = 2 então designa-se por buddy bináriopara satisfazer um pedido de dimensão D percorre-se a lista à procura de um blocode dimensão R tal que 2k-1 < R < 2k

se não for encontrado procura-se um de dimensão 2k+i , i >0, que será dividido emduas partes iguais (buddies)um dos buddies será subdividido quantas vezes for necesssário até se obter um bloco de dimensão 2k

se possível, na libertação um bloco é recombinado com o seu buddy, sendo a associação entre buddies repetida até se obter um bloco com a maior dimensãopossívelconsegue-se um bom equilíbrio entre o tempo de procura e a fragmentação internae externa

P. Ferreira/J. A. Marques - INESC/IST – 01/02 40

Algoritmos de Transferênciaexistem três situações em que a transferência pode ser feita:

a pedido (on request): o programa ou o sistema operativo determinam quando se deve carregar o bloco em memória principal

por necessidade (on demand): o bloco é acedido e gera-se uma falta (de segmento ou de página), sendo necessário carregá-lo para a memória principalpor antecipação: o bloco é carregado na memória principal pelo sistema operativoporque este considera fortemente provável que ele venha a ser acedido nospróximos instantes

P. Ferreira/J. A. Marques - INESC/IST – 01/02 41

Transferência de Segmentosnormalmente um processo para se executar precisa de ter pelomenos um segmento de cóidgo, de dados e de stack em memóriacaso haja escassez de memória os segmentos de outros processosque não estejam em execução são transferidos na íntegra para disco (swapping)os segmentos são guardados numa zona separada do disco chamadaárea de transferência (swap area)quando são transferidos todos os segmentos de um processo diz-se que o processo foi transferido para disco (swapped out)a transferência de segmentos faz-se usualmente a pedido:

em arquitecturas que suportem a falta de segmentos, certos segmentos de um programa podem ser transferidos para memória principal por necessidade

P. Ferreira/J. A. Marques - INESC/IST – 01/02 42

Transferência de Páginaso mecanismo normal de transferência de páginas é por necessidade:

páginas de um programa que não sejam acedidas durante a execução de um processo não chegam a ser carregadas em memória principal

usam-se também políticas de transferência por antecipação para:diminuir o número de faltas de páginaoptimizar os acessos a disco

as páginas retiradas de memória principal são guardadas numazona separada do disco chamada área de paginação:

apenas se ainda não existir uma cópia da página em disco

as páginas modificadas são transferidas em grupos para memóriasecundária de modo a optimizar os acessos a disco

P. Ferreira/J. A. Marques - INESC/IST – 01/02 43

Algoritmos de Swapping de Processos ou de Segmentos

usam-se geralmente três critérios para decidir qual o processo a transferir para disco:

estado e prioridade do processo: processos bloqueados e pouco prioritários sãocandidatos preferenciaistempo de permanência na memória principal: um processo tem que permanecer um determinado tempo a executar-se antes de ser novamente enviado para discodimensão do processo

estas decisões são normalmente tomadas pela componente de gestãode processos e não pela de gestão de memória

P. Ferreira/J. A. Marques - INESC/IST – 01/02 44

Algoritmos de Substituição de Páginassubstituição de páginas:

manutenção de duas listas de páginas: • livres • livres modificadas

quando o número de páginas livres é inferior a um determinado valor, o processo paginador irá transferir as páginas livres para disco. Se as páginas livres forem insuficientes seránecessário transferir páginas livres modificadas.páginas livres modificadas são periodicamente escritas em disco

o algoritmo de escolha das páginas a libertar segue o princípio da localidade de referênciamenos usada recentemente (Least Recently Used, LRU):

utilização de uma marca temporal do último acesso na PTEutilização de um contador por página que indique a que “grupo etário” ela pertencequando o contador, que é actualizado regularmente pelo processo paginador, atingir um valor máximo, a página passa para a lista das livres ou das livres mas modificadas

P. Ferreira/J. A. Marques - INESC/IST – 01/02 45

Algoritmos de Substituição de Páginas (cont.)não usada recentemente (Not Recently Used, NRU):

agrupamento das páginas em 4 grupos:• 0: (R = 0, M = 0) Não referenciada, não modificada• 1: (R = 0, M = 1) Não referenciada, modificada• 2: (R = 1, M = 0) Referenciada, não modificada• 3: (R = 1, M = 1) Referenciada, modificada

o processo paginador percorre regularmente as tabelas de páginas e coloca o bit R a 0caso não exista, este pode ser simulado usando os direitos de acesso da PTElibertam-se primeiro as páginas dos grupos de número mais baixo

FIFO:é muito eficiente mas não atende ao grau de utilização das páginas (apenas ao seutempo de permanência em memória primária)existem variantes desta política que evitam a transferência de páginas antigas masmuito usadas para disco

P. Ferreira/J. A. Marques - INESC/IST – 01/02 46

Espaços de Trabalho (working sets)os processos devem “roubar” páginas uns aos outros ou devem“roubar” páginas a si mesmos?espaço de trabalho (working set) de um processo num determinadointervalo de tempo é o conjunto de páginas acedidas pelo processonesse intervalo de tempo:

verifica-se que, para intervalos de tempo razoáveis, o espaço de trabalho de um processo mantém-se constante e menor que o seu espaço de endereçamento

se vários processos tiverem menos páginas em memória que o seuespaço de trabalho o sistema pode entrar em colapso (trashing)utilização de valores máximo e mínimo de dimensão do espaço de trabalho para controlar a paginação:

estes valores devem-se adaptar dinamicamente a cada aplicação

P. Ferreira/J. A. Marques - INESC/IST – 01/02 47

Espaços de Trabalho (cont.)

faltas depáginas

fracção do processocarregado em memória

1

1

Acessos aleatórios a memória

Acessos à memória com localidade de referência

P. Ferreira/J. A. Marques - INESC/IST – 01/02 48

Comparação: segmentação e paginação (1)segmentação:

vantagens:• adapta-se à estrutura lógica dos programas• permite a realização de sistemas simples sobre hardware simples• permite realizar eficientemente as operações que agem sobre segmentos inteiros

desvantagens:• o programador tem de ter sempre algum conhecimento dos segmentos subjacentes• os algoritmos tornam-se bastantes complicados em sistema mais sofisticados• o tempo de transferência de segmentos entre memória principal e disco torna-se

incomportável para segmentos muito grandes• a dimensão máxima dos segmentos é limitada

P. Ferreira/J. A. Marques - INESC/IST – 01/02 49

Comparação: segmentação e paginação (2)paginação:

vantagens:• o programador não tem que se preocupar com a gestão de memória• os algoritmos de reserva, substituição e transferência são mais simples e eficientes• o tempo de leitura de uma página de disco é razoavelmente pequeno• a dimensão dos programas é virtualmente ilimitada

desvantagens:• o hardware é mais complexo que o de memória segmentada• operações sobre segmentos lógicos são mais complexos e menos elegantes, pois têm de

ser realizadas sobre um conjunto de páginas• o tratamento das faltas de páginas representa uma sobrecarga adicional de

processamento

P. Ferreira/J. A. Marques - INESC/IST – 01/02 50

UNIXGestão de Memória

P. Ferreira/J. A. Marques - INESC/IST – 01/02 51

Unix - Gestão de MemóriaUnix implementado sobre muitos computadores diferentes (baseada, segmentada, paginada, segmentada/paginada)a gestão de memória garante:

protecção do espaço de endereçamentopermitir modificação dinâmica do espaço de endereçamento

existem ainda requisitos de desempenho:manter em memória o maior número de processosminimizar as transferências entre disco e memória

dois grupos de implementações:transferência (swapping) nas arquitecturas baseadas e segmentadaspaginação nas arquitecturas paginadas e segmentadas/paginadas

P. Ferreira/J. A. Marques - INESC/IST – 01/02 52

Transferência (swapping)primeira implementação do Unix: pdp-11, espaço de endereçamento de um processo limitado a 8 páginas de 8 Kb cadaarquitecturas segmentadas:

regiões (texto, dados, stack)carregadas contiguamente em memóriatransfere para disco processos que estejam bloqueados ou com menor prioridade

existem 4 casos que provocam a transferência:chamada fork - é preciso espaço para o novo processochamada brk - expande o segmento de dados do processocrescimento natural do stacksistema operativo precisa de espaço para carregar em memória um processo que estavaswapped-out

P. Ferreira/J. A. Marques - INESC/IST – 01/02 53

Swapperswapper: processo que efectua as transferências de segmentos entre memóriaprincipal e secundáriaárea especial do disco reservada para os segmentos retirados de memóriaárea de swap: o swapper usa o disco directamente (sem passar pela cache)alocação de espaço na área de swap é diferente da alocação feita pelo sistema de ficheirosárea de swap: regiões de cada processo contíguas em discoprocesso no estado executável permanece pelo menos 2 segundos em memóriaantes de ser swapped outprocesso em disco permanece pelo menos 2 segundos em disco

P. Ferreira/J. A. Marques - INESC/IST – 01/02 54

Paginaçãomaioria dos “Unixs” têm memória virtual paginadano sistema V o espaço de endereçamento de um processo organiza-se em regiões de memóriaUm processo tem inicialmente 3 regiões: código, dados e stackcada região tem uma tabela de páginas própria e uma tabela de descritores de blocos de discoAs regiões de memória partilhada que um processo mapear constituem novas regiões de memória.

P. Ferreira/J. A. Marques - INESC/IST – 01/02 55

Tabelas de Gestão de memória de um Processo

u area

per processregion table region table

process tablemain memory

P. Ferreira/J. A. Marques - INESC/IST – 01/02 56

Paginaçãotabela de descritores de blocos de disco: para cada PTE contém informação sobrea página quando está em discoPTE:

endereço físico da páginabit P (página válida ou não)bit R (página referenciada ou não)bit M (página modificada ou não), protecção da página, bit de copy on write (C/W),bits com idade da página

descritor de blocos: número do device, bloco de disco, tipo da página (transferida, demand fill, demand zero)

P. Ferreira/J. A. Marques - INESC/IST – 01/02 57

Tabela de Páginas e deDescritores de Blocos de Disco

região

P | R | M | C/W | PROT | Idade | End. Físico Nº do Dispositivo | Nº do Bloco | Tipo

Tabela de Páginas Tabela de Descritores de Blocos de Disco

P. Ferreira/J. A. Marques - INESC/IST – 01/02 58

Paginação (cont.)páginas de memória física descritas pela tabela pfdata indexada pelo número dapágina:

estado da página (livre, existe cópia na área de swap ou num ficheiro executável, operaçãode leitura pendente)contador com número de processos que referenciam a páginanúmero de device e bloco onde existe cópia da páginadois pares de apontadores (lista de páginas livres, tabela de hashing cuja chave é o device e bloco de disco)

quando a página é libertada:sistema operativo preenche descritor do bloco de disco com o número do device e blocoonde a página vai ser escritacoloca a página na lista das páginas livres e na lista de hashing

falta de página:[número do device-número de bloco] é a chave da tabela de hashing

P. Ferreira/J. A. Marques - INESC/IST – 01/02 59

Mapeamento da Memória Virtual

541 K

783 K

986 K

897 K.

.

.

.

.

.

.

727 K

941 K

1096 K

2001 K.

.

.

.

.

.

552 K

87 K852 K

764 K

433 K

333 K.

.

.

.

.

.

137K

empty

8 K

32 K

64 K

text

data

stack

Virtual Addresses

Per Proc Region Table

Page Tables (Physical Addresses)

P. Ferreira/J. A. Marques - INESC/IST – 01/02 60

Faltas na Gestão de MemóriaFaltas de Presença

A página nã está persente na tabela de páginas

Faltas de ProtecçãoO acesso pretendido não está de acordo com a protecção definida para a página

SIGSEGVSignal que é enviado ao processo quando a falta não pode ser resolvida pela Gestão de MemóriaPoderá eventualmente ser tratada pelo processo por exemplo aumentando a região de dados.

P. Ferreira/J. A. Marques - INESC/IST – 01/02 61

Criação de um Processofork: duplica os segmentos de código, dados e pilha do painão é feita nenhuma cópia física de memória:

cria uma nova tabela de regiões para o filhodá-lhe a mesma região de códigocopia as regiões de dados e pilha, i.e. aloca novas tabelas de páginas e copias as PTE e osdescritores de blocos de discoem seguida, percorre as PTE do pai e, para as páginas válidas, incrementa o contador de processos na pfdata e coloca a 1 o bit copy on write (no pai e no filho)antes duma página ser escrita (pelo pai ou pelo filho):

• o sistema copia-a para uma nova página que aloca, • preenchendo a PTE do processo onde ocorreu a falta com o endereço físico da nova página• só se copiam as páginas que forem de facto modificadas

P. Ferreira/J. A. Marques - INESC/IST – 01/02 62

fork

Região 1(Código)

Tabela de Regiõesdo Processo Pai

Tabela de Regiõesdo Processo Filho

0K

4K

8K

12K

16K

Tabela de Páginas

Região 2(Dados do Pai)

0K

4K

8K

12K

16K

Tabela de Páginas

921

Região 3(Dados do Filho)

0K

4K

8K

12K

16K

Tabela de Páginas

921

327

P. Ferreira/J. A. Marques - INESC/IST – 01/02 63

Tratamento do Copy on Write

Page 828 Valid, Copy on Write

Page Table Entry – Proc A

(a) Before Proc B Incurs Protection Fault

Page 828 Valid, Copy on Write

Page Table Entry – Proc B

Page 828 Valid, Copy on Write

Page Table Entry – Proc C

Page 828 Valid, Copy on Write

Page Table Entry – Proc A

Page 786 Valid

Page Table Entry – Proc B

Page 828 Valid, Copy on Write

Page Table Entry – Proc C

Page Frame 828

Ref Count 3

Page Frame 828

Ref Count 2

Page Frame 786

Ref Count 1

P. Ferreira/J. A. Marques - INESC/IST – 01/02 64

Execução de um Programasó são carregadas as páginas de facto necessáriasexec:

lê o inode correspondente ao ficheiro executávelcria uma tabela com os números dos blocos do ficheiro executável correspondentea cada página e associa a tabela ao inodepreenche a tabela dos descritores de blocos de disco com o deslocamento dapágina no ficheiro

falta de página:sistema operativo usa o valor guardado no descritor de bloco de disco para indexara tabela asociada ao inode, tendo aí o número do bloco de disco onde está a página

P. Ferreira/J. A. Marques - INESC/IST – 01/02 65

exec

Região 1(Código do Pai)

Tabela de Regiõesdo Processo Pai Tabela de Regiões

do Processo Filho

0K

4K

8K

12K

16K

Tabela de Páginas

327

Região 2(Dados do Pai)

0K

4K

8K

12K

16K

Tabela de Páginas

921

Região 4(Dados do Filho)

0K

4K

8K

12K

16K

Tabela de Páginas

529

Região 3(Código do Filho)

0K

4K

8K

12K

16K

Tabela de Páginas

425

P. Ferreira/J. A. Marques - INESC/IST – 01/02 66

Substituição de Páginasalgoritmo Menos Usada Recentemente (LRU)utilização de cada página é mantida na PTEpage-stealer é acordado quando o número de páginas livres desce abaixo de um dado limitepercorre as PTE incrementando os bits de idade das páginasse a página for referenciada a sua idade é anuladase a página atingir uma certa idade:

se não existir cópia na área de transferência o núcleo coloca a página numa lista de páginaspara serem transferidasse existir cópia na área de transferência e a página não tiver sido modificada, o núcleoapenas coloca o bit P a zero, decrementa o contador de referências na pfdata e coloca a página a lista de páginas livresse existir cópia na área de transferência mas a página tiver sido modificada em memória, o núcleo coloca-a na lista de páginas para serem transferidas e liberta o espaço que elaocupava na área de transferência

P. Ferreira/J. A. Marques - INESC/IST – 01/02 67

Substituição de Páginas (cont.)quando a página for escrita em disco:

núcleo coloca o bit P a zero na PTE respectivadecrementa o contador de referências na pfdatase este contador ficar nulo, a página é colocada na lista de páginas livres (podeainda ser recuperada se for referenciada antes de ser reutilizada)núcleo aloca espaço para a página na área de transferência e guarda o número do bloco de disco no descritor do bloco de disco respectivomesmo se a página for reutilizada, será sempre escrita em discopara optmizar os acessos a disco, a escrita é feita quando a lista de páginas a seremescritas atinge uma dada dimensão

P. Ferreira/J. A. Marques - INESC/IST – 01/02 68

Tratamento da Falta de Página

Page Table

Phys Page State

DisckEntries Block

Descriptors

State BlockVirt

Addr0

1K

2K

3K

4K

64K

65K

66K

67K

.

.

.

.

.

.

.

.

.

1648 Inv File 3

None

1917

None

1036

Inv

Inv

Inv

Inv

DF

Disk

DZ

Disk

1206

387

1036 387 0

.

.

.

.

.

.

.

.

.

.

.

1648

1861

1618 1

01206

Page Frames

Page Disk Block Count

5