• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
68
0
0

Texto

(1)

Gestão de Memória

Ö

mecanismos de gestão de memória

Ö

protecção da memória

(2)
(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 principal

Š memó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

(4)

Hierarquia de Memória

Ö

memória principal (física ou central):

Š acesso aleatório

Š tempo de acesso reduzido Š custo elevado

Š informação volátil

Ö

memórias secundárias (ou de disco):

Š acesso quase aleatório (por blocos) Š tempo de acesso elevado

Š custo reduzido

(5)

Endereçamento

Ö

Para 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ísico

Š Endereços virtuais – os endereços têm de ser transformados em tempo de execução para os endereços físicos.

(6)

Geração dos Endereços Físicos

Ö

realizada na escrita do programa, na sua compilação ou na edição

de ligações:

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

Ö

realizada aquando do carregamento do executável na memória

principal:

Š o editor de ligações gera um executável recolocável que pode ser implantado em qualquer 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ção do processo (reimplantação dinâmica)

(7)

Recolocação

Ö

endereç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 cada carregamento do executável

Š como medida de protecção, os endereços reais obtidos mediante endereçamento baseado são comparados (pelo hardware) com um valor limite, guardado no registo limite.

(8)

Programa principal (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 real

Ö

os overlays continuam a ter de ser dimensionados para a memória

(9)

Overlay (cont.)

Ö

exemplo:

Š parte residente contém as variáveis globais

Š vários overlays comn rotinas de inicialização, cálculo, escrita dos resultados

Ö

é simples de suportar pelo sistema operativo

Ö

implica que o programador indique explicitamente quando deve ser

carregado um novo overlay

Ö

certos programas não são facilmente divididos em overlays

Ö

lento devido à possível troca sistemática de overlays

Ö

obviamente, a parte residente mais qualquer um dos overlays tem

(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ção

Ö

as 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ção interna, paragem da máquina para alterar a dimensão das partições

Š variá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

(11)

Sistemas Multiprogramados com

Endereçamento Real - partições fixas

Ö

memória dividida em partições de dimensão fixa

Ö

em cada partição é carregado um programa

Ö

programas recolocáveis

Ö

fragmentação interna: dimensão dos programas não coincide

exactamente com a dimensão das partições

(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 executado

Ö O grau máximo de multiprogramação é dado pelo número de partições

Ö Pode 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

(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: 6K registo base 2K <? N Gera Excepção registo limite S

(14)

Sistemas Multiprogramados com

Endereçamento Real - partições variáveis

Ö

Alocação sucessiva de partições com dimensões variáveis

Ö

Quando um programa termina, a sua partição pode ser associada a

outra (se for contígua), criando uma única de maior dimensão

Ö

dimensão dos programas limitada pela memória física

(15)

Sistemas Multiprogramados com

Endereçamento Real - partições variáveis

Ö número e dimensão de partições variáveis resolve fragmentação interna

Ö fragmentação externa: muitas partições de dimensão muito reduzida

Ö implica a recompactação da memória (garbage collector): programas todos juntos

em 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 Prog D 80 K Prog C 30 K Prog B 70 K Prog A 50 K Prog E 40 K

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

(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 base registo base P3 dimensão registo limite <? Gera Excepção N S

(17)

Endereços Reais e Virtuais

Ö Os 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ísicos

Š a unidade de gestão de memória no processador é responsável pela conversão

Š os dados referenciados pelo endereço virtual podem estar em memória principal ou secundária

(18)

Endereçamento Real vs.

Endereçamento Virtual

b) Memória Virtual a) 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

(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áveis

Contém endereços físicos Gerado com referência a um endereço de base

Endereços que necessitam de tradução dinâmica durante

a execução do programa

Compilador + editor de ligações

(20)

Endereçamento Virtual

Ö

espaço

de endereçamento

dos processos

não

linearmente

relacionado com a memória física

Ö

de cada vez que são usados os endereços virtuais são convertidos

(pela UGM) para endereços reais

Ö

para minimizar a informação necessária à conversão, a memória

virtual é 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ão

(21)

Espaço de Endereçamento Virtual

Memória auxiliar Espaço Virtual do processo A Espaço Virtual do processo B Espaço Virtual do Processo C Memória física

(22)

Paginação

Ö

espaço de endereçamento virtual linear de dimensão superior à da

memória principal:

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

Ö

na memória principal mantêm-se apenas algumas páginas do

programa, sendo carregadas de memória secundária as demais

apenas quando necessário (falta de página)

Ö

as instruções do processador têm de ser recomeçáveis

Ö

a dimensão das páginas (constante) é normalmente muito menor

que a da memória principal e influencia:

Š a fragmentação interna

Š o número de faltas de páginas e o tempo da sua resolução

Š a dimensão das tabelas de páginas e listas de páginas mantidas pelo sistema operativo

(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

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

Paginada

(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 TLB

(25)

Memória Virtual Paginada

Bits da página são enviados para o TLB Comparação Acesso à Tab. de Páginas Página Presente Actualizar TLB Trazer Página do Disco Concatenar Base e Desloc. S S

(26)

Memória Virtual Paginada (cont.)

Ö fragmentação interna na última página de cada bloco lógico do programa

Ö a dimensão das páginas (constante) influencia:

Š a fragmentação interna

Š o número de faltas de páginas e o tempo da sua resolução

Š a 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 disjuntos e inacessíveis a terceiros

Š protecçã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 ao usado para memória segmentada

Š partilha de blocos lógicos: partilha de múltiplas páginas Š não é possível partilhar menos que uma página

(27)

Segmentação

Ö

divisã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 segmento

Š o 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ória Š protecção

Š eficiência (princípio da localidade de referência)

Ö

dimensão dos segmentos é limitada pela arquitectura e não pode

(28)

P Prot Limite Base + BTS Segmento Deslocamento + Deslocamento Limite Endereço virtual Memória principal Tabela de segmentos BTS Base

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

Segmentada

(29)

Memória Virtual Segmentada

Ö fragmentação externa

Ö protecção:

Š verificação de limites de endereçamento intra-segmentos

Š verificação e limitação dos tipos de acesso ao segmento: leitura, escrita e execução

Š processos 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 processos

Š a 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 complicados

(30)

Limite Base + BTS Página Deslocamento Endereço virtual Tabela de Segmentos P Base Deslocamento Endereço real Segmento Base P Tabela de Páginas + TLB Prot R M Prot

Memória Segmentada/Paginada

(31)

Partilha de Memória

Ö

A 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

(32)

Protecção de Memória

Ö

Arquitectura 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 Paginados

Š Processos 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;

(33)
(34)
(35)

Algoritmos de Gestão de Memória

Ö

existem três tipos de decisões que o sistema operativo tem de tomar

em relação à memória principal:

Š reserva: onde colocar um bloco de informação

Š transferência: quando transferir um bloco de memória secundária para memória primária e vice-versa

Š substituição: quando não existe mais memória livre, qual o bloco a retirar da memória principal para satisfazer um pedido

(36)

Reserva de Memória

Ö

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

Š na criação e terminação de processos

Š na criação é reservado espaço para o código, dados e pilha do programa Š na 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 ou superior à desejada

Š escolher o bloco livre que provocar menor fragmentação externa

Š reservar parte ou a totalidade do bloco escolhido tendo em conta uma dimensão mínima para o fragmento gerado

(37)

Critérios de Escolha de Blocos Livres

Ö best-fit (o menor possível):

Š gera elevado número de pequenos fragmentos

Š em média percorre-se metade da lista de blocos livres na procura Š a 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ões Š a 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 livres Š gera muita fragmentação externa

Š acumula muitos blocos pequenos no início da lista, ficando para o fim os blocos maiores Š a lista é desordenada e os fragmentos não têm que ser reintroduzidos

Ö next-fit (o primeiro possível a seguir ao anterior):

(38)

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

Ö

dimensão do pedido: 15k

Š best-fit – C Š worst-fit – D Š first-fit - B 13K A 13K A 22K B 16K C 32K D 29K E

(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ário

Š para satisfazer um pedido de dimensão D percorre-se a lista à procura de um bloco de 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 em

duas 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ão possível

Š consegue-se um bom equilíbrio entre o tempo de procura e a fragmentação interna e externa

(40)

Algoritmos de Transferência

Ö

existem 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 principal

Š por antecipação: o bloco é carregado na memória principal pelo sistema operativo porque este considera fortemente provável que ele venha a ser acedido nos próximos instantes

(41)

Transferência de Segmentos

Ö

normalmente um processo para se executar precisa de ter pelo

menos um segmento de cóidgo, de dados e de stack em memória

Ö

caso haja escassez de memória os segmentos de outros processos

que 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

(42)

Transferência de Páginas

Ö

o 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ágina Š optimizar os acessos a disco

Ö

as páginas retiradas de memória principal são guardadas numa

zona 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ória

(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ão candidatos preferenciais

Š tempo de permanência na memória principal: um processo tem que permanecer um determinado tempo a executar-se antes de ser novamente enviado para disco

Š dimensão do processo

Ö

estas decisões são normalmente tomadas pela componente de gestão

(44)

Algoritmos de Substituição de Páginas

Ö substituiçã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ência

Ö menos usada recentemente (Least Recently Used, LRU):

Š utilização de uma marca temporal do último acesso na PTE

Š utilização de um contador por página que indique a que “grupo etário” ela pertence

Š quando 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

(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 0

Š caso não exista, este pode ser simulado usando os direitos de acesso da PTE Š libertam-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 seu tempo de permanência em memória primária)

Š existem variantes desta política que evitam a transferência de páginas antigas mas muito usadas para disco

(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 determinado

intervalo de tempo é o conjunto de páginas acedidas pelo processo

nesse 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 seu

espaç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:

(47)

Espaços de Trabalho (cont.)

faltas de páginas 1 Acessos aleatórios a memória Acessos à memória

(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

(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

(50)

UNIX

(51)

Unix - Gestão de Memória

Ö Unix implementado sobre muitos computadores diferentes (baseada, segmentada,

paginada, segmentada/paginada)

Ö a gestão de memória garante:

Š protecção do espaço de endereçamento

Š permitir modificação dinâmica do espaço de endereçamento

Ö existem ainda requisitos de desempenho:

Š manter em memória o maior número de processos Š minimizar as transferências entre disco e memória

Ö dois grupos de implementações:

Š transferência (swapping) nas arquitecturas baseadas e segmentadas Š paginação nas arquitecturas paginadas e segmentadas/paginadas

(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 cada

Ö arquitecturas segmentadas:

Š regiões (texto, dados, stack)carregadas contiguamente em memória

Š transfere 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 processo Š chamada brk - expande o segmento de dados do processo Š crescimento natural do stack

Š sistema operativo precisa de espaço para carregar em memória um processo que estava

(53)

Swapper

Ö swapper: processo que efectua as transferências de segmentos entre memória

principal 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 disco

Ö processo no estado executável permanece pelo menos 2 segundos em memória

antes de ser swapped out

(54)

Paginação

Ö maioria dos “Unixs” têm memória virtual paginada

Ö no sistema V o espaço de endereçamento de um processo organiza-se em regiões

de memória

Ö Um processo tem inicialmente 3 regiões: código, dados e stack

Ö cada região tem uma tabela de páginas própria e uma tabela de descritores de

blocos de disco

Ö As regiões de memória partilhada que um processo mapear constituem novas

(55)

Tabelas de Gestão de memória de um

Processo

u area

per process

region table region table

(56)

Paginação

Ö tabela de descritores de blocos de disco: para cada PTE contém informação sobre

a página quando está em disco

Ö PTE:

Š endereço físico da página Š bit 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,

(57)

Tabela de Páginas e de

Descritores de Blocos de Disco

região

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

(58)

Paginação (cont.)

Ö páginas de memória física descritas pela tabela pfdata indexada pelo número da

página:

Š estado da página (livre, existe cópia na área de swap ou num ficheiro executável, operação de leitura pendente)

Š contador com número de processos que referenciam a página Š número de device e bloco onde existe cópia da página

Š dois 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 bloco onde a página vai ser escrita

Š coloca a página na lista das páginas livres e na lista de hashing

Ö falta de página:

(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 K 852 K 764 K 433 K 333 K . . . . . . 137K empty 8 K 32 K 64 K text data stack Virtual Addresses Per Proc Region Table

(60)

Faltas na Gestão de Memória

Ö

Faltas de Presença

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

Ö

Faltas de Protecção

Š O acesso pretendido não está de acordo com a protecção definida para a página

Ö

SIGSEGV

Š Signal que é enviado ao processo quando a falta não pode ser resolvida pela Gestão de Memória

Š Poderá eventualmente ser tratada pelo processo por exemplo aumentando a região de dados.

(61)

Criação de um Processo

Ö fork: duplica os segmentos de código, dados e pilha do pai

Ö não é feita nenhuma cópia física de memória:

Š cria uma nova tabela de regiões para o filho Š dá-lhe a mesma região de código

Š copia as regiões de dados e pilha, i.e. aloca novas tabelas de páginas e copias as PTE e os descritores de blocos de disco

Š em 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

(62)

fork

Região 1 (Código) Tabela de Regiões do Processo Pai Tabela de Regiões do Processo Filho 0K 4K 8K 12K 16K Região 2 (Dados do Pai) 0K 4K 8K 12K 16K 921 Região 3 (Dados do Filho) 0K 4K 8K 12K 16K 921 327

(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

(64)

Execução de um Programa

Ö

só são carregadas as páginas de facto necessárias

Ö

exec:

Š lê o inode correspondente ao ficheiro executável

Š cria uma tabela com os números dos blocos do ficheiro executável correspondente a cada página e associa a tabela ao inode

Š preenche a tabela dos descritores de blocos de disco com o deslocamento da página no ficheiro

Ö

falta de página:

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

(65)

exec

Região 1 (Código do Pai)

Tabela de Regiões

do Processo Pai Tabela de Regiões

do Processo Filho 0K 4K 8K 12K 16K 327 Região 2 (Dados do Pai) 0K 4K 8K 12K 16K 921 Região 4 (Dados do Filho) 0K 4K 8K 12K 16K 529 Região 3 (Código do Filho) 0K 4K 8K 12K 16K 425

(66)

Substituição de Páginas

Ö algoritmo Menos Usada Recentemente (LRU)

Ö utilização de cada página é mantida na PTE

Ö page-stealer é acordado quando o número de páginas livres desce abaixo de um

dado limite

Ö percorre as PTE incrementando os bits de idade das páginas

Ö se a página for referenciada a sua idade é anulada

Ö se 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áginas para serem transferidas

Š se existir cópia na área de transferência e a página não tiver sido modificada, o núcleo apenas coloca o bit P a zero, decrementa o contador de referências na pfdata e coloca a página a lista de páginas livres

Š se 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 ela ocupava na área de transferência

(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 respectiva Š decrementa o contador de referências na pfdata

Š se este contador ficar nulo, a página é colocada na lista de páginas livres (pode ainda 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 respectivo

Š mesmo se a página for reutilizada, será sempre escrita em disco

Š para optmizar os acessos a disco, a escrita é feita quando a lista de páginas a serem escritas atinge uma dada dimensão

(68)

Tratamento da Falta de Página

Page Table

Phys Page State

Disck Entries Block Descriptors State Block Virt Addr 0 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 0 1206 Page Frames

Page Disk Block Count

Referências

Documentos relacionados

como foi possível analisar ao longo do capítulo, esta maior afirmação turca na cena internacional não deve ser considerada como uma vitória do Islão sobre o laicismo turco ou

BARBOSA MOREIRA, José Carlos, Problemas e soluções em matéria de reconhecimento e execução de sentença e laudos arbitrais estrangeiros, in Temas de Direito Processual,

Os fanclipes e os inúmeros videoclipes feitos pelos fãs (recombinando imagens, ressignificando sonoridades) parecem ser a premissa para a criação neste período amplamente

Explica 2 aspetos relativos à importância dos transportes marítimos e aéreos de modo completo, dois para um dos tópicos ou um para cada

Estivo relacionado dende moi novo co movemento nacionalista; e a comezos dos anos 30 afiliouse ás Xuventudes Galeguistas para iniciar unha actividade política

Para isso, contamos com a presença de especialistas na obra de Otto Maria Carpeaux, entre eles, Mauro Souza Ventura (Unesp), que além do seu próprio ensaio nos franqueou

Requisitos: Curso de graduação em Medicina, fornecido por instituição de ensino oficial e reconhecida pelo Ministério de Educação e registro no Órgão da Classe.

[r]