A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Gerenciamento de Memória (Paginação e Memória Virtual) Prof. Alexandre Monteiro Recife.

Apresentações semelhantes


Apresentação em tema: "1 Gerenciamento de Memória (Paginação e Memória Virtual) Prof. Alexandre Monteiro Recife."— Transcrição da apresentação:

1 1 Gerenciamento de Memória (Paginação e Memória Virtual) Prof. Alexandre Monteiro Recife

2 Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n /gtalk: n Site: n Celular: (81)

3 DO QUE FALAMOS NA AULA PASSADA?

4 Memória n A memória pode ser vista como um array (vetor) de células de armazenamento (palavras ou bytes), cada célula com seu endereço

5 Memórias física, lógica e virtual n Memória física É a memória implementada pelo hardware, normalmente associada a memória principal - RAM. n Memória lógica de um processo É a memória endereçada pelas instruções de máquina do processo. n Memória Virtual É uma memória implementada pelo SO, com o auxílio da memória secundária (disco rígido). Comumente, é implementada através de paginação ou segmentação. Normalmente, é maior que a memória física do computador.

6 Gerência de Memória n Rotinas do SO que controlam o uso da memória. Controle de quais partes da memória encontram-se livres e quais estão em uso Alocação da memória de acordo com as necessidades dos processos Liberação da memória alocada após o término de um processo Transferência do processo, ou parte dele, entre a memória principal e a memória secundária

7 Multiprogramação através de Swapping n O programa que perde a CPU é copiado p/ disco, enquanto o programa que ganha a CPU é transferido do disco p/ a memória principal Monitor Espaço do Usuário reg. limite U1 U2 Swap-in Swap-out

8 Efeito da Multiprogramação n Utilização da CPU como função do grau de multiprogramação (= número de processos na memória)

9 Realocação e Proteção n São dois problemas introduzidos pela Multiprogramação: Realocação: não se sabe de antemão em qual região de memória o processo vai ser executado Proteção: evitar que um processo acesse uma região usada por outro processo

10 Partições Múltiplas n Com multiprogramação, é conveniente ter vários programas na memória ao mesmo tempo para que a CPU seja rapidamente alternada entre eles. n Solução: dividir a memória em partições (cada partição irá conter um programa) partições fixas (normalmente o hw usa registradores limite inferior e limite superior) partições variáveis (normalmente o hw usa registradores base e limite)

11 Memória com Partições Fixas (a) Filas de entrada separadas: (Por tamanho de Processo x Partição) (b) Fila única para todas as partições: (Simples de Implementar)

12 Partições Fixas n Exemplo: memória de 256K espaço do SO: 64K espaço para processos pequenos: 16K espaço para processos médios: 48K espaço para processos grandes: 128K

13 Memória sem Partições

14 Memória com Partições Fixas, mas de tamanho variável Pilha de B Dados de B Código de B Pilha de A Dados de A Código de A SO Espaço para Expansão

15 Partições Variáveis n Os tamanhos das partições variam de acordo com a necessidade n Tamanho e número de partições variam dinamicamente n Elimina a fragmentação interna e introduz a fragmentação externa n Mais difícil de implementar n O SO mantém uma lista indicando quais partes da memória estão disponíveis e quais estão ocupadas. n As áreas disponíveis são denominadas lacunas (holes) n Quando um processo chega para ser executado, a lista de lacunas é consultada e é escolhida uma lacuna de tamanho suficiente

16 Partições Variáveis JOB Memória60K100K30K70K50K Tempo

17 Partições Variáveis: Algoritmos de Alocação de área livre n First Fit – percorre a lista e aloca o primeiro espaço encontrado n Next Fit – como first Fit, só que a partir da posição na lista onde foi feita a alocação anterior n Best Fit – percorre toda a lista e aloca o menor possível espaço e pode deixar fragmentos muito pequenos para alocação para outros processos n Worst Fit – percorre toda a lista e aloca o maior possível espaço. OBS. Em muitos sistemas, o overhead adicional exigido pelos Best/Worst Fit não valem a pena para obter uma alocação mais efetiva.

18 Partições Variáveis: Algoritmos de Alocação de área livre n Qualquer um dos algoritmo anteriores é mais eficiente se: Houverem 2 listas: lista de partições usadas + lista de espaços livres Listas são mantidas ordenadas por tamanho (nr. de unidades de alocação) Problema: há uma complexidade extra quando ocorre uma liberação de memória (precisa-se verificar se há espaços adjacentes livres e inserir o novo espaço na posição correta da lista). n Alternativa: Quick Fit: mantém listas separadas por tamanho do espaço livre (2K, 4K, 8K, etc.) Problema: ao liberar memória, o novo espaço criado precisa ser inserido na fila correspondente (possivelmente, após combinação com áreas vizinhas)

19 Atividade Valendo NOTA n Estude e siga as orientações descritas no material de aula. n Utilizando Listas ou Vetores, implemente os 5 algoritmos citados anteriormente, de modo que resolvam os problemas de alocação de espaços livres de memória. n Deve-se selecionar o algoritmo e este deve alocar corretamente o espaço de memória mais conveniente de acordo com as regras de funcionamento de cada uma dos algoritmos. n Apresentação ao final do semestre.

20 SWAPPING

21 Swapping n Em sistemas com compartilhamento de tempo (timesharing) memória principal pode não ser suficiente para todos os processos (ex. muitos processos interativos de muitos usuários) n Ideia básica: usar espaço em disco como extensão da memória RAM, e colocar lá os processos enquanto estão bloqueados, carregando-os de volta para a memória assim que são desbloqueados n Duas Situações: Copiar a imagem inteira (Swapping) Permitir que processo fique parcialmente em memória, e parcialmente em disco (paginação) -> Memória Virtual

22 Swapping n Quando um processo é bloqueado (espera por E/S) ele pode ser swapped out, e depois swapped in para memória principal. n Maior número de processos ativos, aumentando a utilização da CPU n OBS 1: Buracos de memória não utilizada de tamanho qualquer (Fragmentação de Memória) n OBS 2: Um mesmo processo pode ocupar diferentes partições ao longo de sua execução

23 Fragmentação de Memória n São perdas (desperdício) de memória: fragmentação interna: memória é perdida dentro da partição alocada (é um desperdício de espaço dentro da partição usada pelo processo) fragmentação externa: ocorre quando existe espaço disponível mas este é pequeno demais para os processos que estão à espera (perda de espaço fora das partições alocadas)

24 Swapping n Principal problema do swapping com partições de tamanho variável: Manter a informação sobre espaços não utilizados (livres) Evitar uma fragmentação externa da memória (= muitos espaços pequenos não utilizados) Compactação de memória é muito cara – da ordem de segundos para alguns MBs de RAM.

25 Swapping n Como lidar com processos que crescem (em demanda de memória)? Tentar alocar uma partição vizinha do processo de uma partição não usada (nem sempre é possível) Alocar uma partição conjunta para a pilha e o heap, e fazê-los crescer em sentidos opostos. Se processo usa todo espaço de memória disponível, fazer um swap out, e um swap in em uma partição maior (mas, se disco de swap está cheio, processo precisa ser terminado)

26 Gerenciamento de Espaço Livre n Divide a memória em unidades de alocação de n bytes e representa a ocupação (livre/ocupado) de lotes de unidades usando um bit map (b) ou uma lista encadeada (c). n Cada nó contém o endereço inicial e o tamanho de uma partição ocupada ou livre.

27 Gerenciamento de Espaço Livre n Quando o processo é swapped out, a lacuna correspondente precisa ser combinada com espaços vizinhos livres. n Quando processo é swapped in, percorre-se a lista buscando um espaço livre suficientemente grande (lista geralmente ordenada por endereços de memória) n Quando X é swapped out: quatro combinações de nós na lista

28 MEMÓRIA VIRTUAL

29 Memória Virtual n É necessária, quando o total de memória necessária para um conjunto de processos excede o tamanho da memória física. Também aqui, usa-se parte do disco como extensão da memória RAM. n A grande maioria dos SO’s (exceto alguns para tempo real), implementam Memória Virtual. n MV usa a técnica de paginação: Memória física e espaço de endereçamento lógico de cada processo são divididos em partições de mesmo tamanho: -Espaço do processo é dividido em páginas -Memória é dividida em molduras de página Em vez de fazer o swap in/out de uma imagem inteira de processo, cada página pode ser movida do disco para a memória e vice-versa.

30 Paginação n Requer da existência de suporte por hardware (Memory Management Unit - MMU) MMU intercepta qualquer acesso à memória (p/ instruções e dados) Mapeia endereços lógicos para endereços físicos (através de uma Tabela de Página) Quando a página acessada não está em memória, gera uma interrupção de falta de página (Page Fault), que causa a interrupção do processo em execução e o seu bloqueio, até que a página tenha sido transferida para a memória.

31 Paginação n A memória física é dividida em um número de partições de mesmo tamanho, denominadas páginas físicas, quadros ou frames ou molduras. n A memória lógica é dividida em partições do mesmo tamanho, denominadas páginas lógicas (ou, simplesmente, páginas) n Cada página lógica é carregada em uma moldura de página quando o processo é carregado na memória principal. n Nessa ocasião, uma Tabela de Páginas é criada. n Permite que o espaço físico ocupado por um processo seja não contíguo.

32 Paginação Exemplo: número de páginas/processo 5D 4C 3B 4A Processos A, B, C estão prontos C4 C3 C2 C1 B3 B2 B1 A4 A3 A2 A1

33 Paginação C4 C3 C2 C1 A4 A3 A2 A1 B terminaD é submetido D4 D5 C1 C2 C3 C4 A1 A2 A3 A4 D3 D2 D1

34 Paginação n Problemas tanto em particionamento fixo quanto dinâmico: fixo – fragmentação interna dinâmico – fragmentação externa e realocação dinâmica n Solução: Processo é dividido em páginas (blocos de processos) ‏ MP é dividida em quadros de mesmo tamanho n Páginas/quadros/molduras são de pequeno tamanho (ex., 1K): fragmentação interna pequena. n Paginação elimina fragmentação externa. n SO mantém uma Tabela de Páginas por processo.

35 Paginação n Processo não precisa estar completamente na MP (veremos adiante em Memória Virtual) ‏ n Processo não precisa ocupar área contígua em memória n Endereços são gerados dinamicamente em tempo de execução n Somente um registrador então, não é suficiente Tabela de Páginas

36 Exemplo em Memória Virtual Espaço de Endereçamento Virtual Espaço de Endereçamento Físico Página Virtual Moldura de Página

37 Tabela de Páginas

38 n MMU com 16 páginas de tamanho 4 KB cada. n Endereço lógico: n Bits mais significativos = número da página n Bits menos significativos = deslocamento do endereço dentro de uma página

39 Paginação n Se um processo tem tamanho K, os seus endereços lógicos (endereços especificados nas suas instruções) vão desde 0 até K-1. Este é o espaço de endereçamento do processo. n Cada endereço lógico é quebrado em duas partes: -número da página p -deslocamento d (offset) n Endereço lógico: composto do par (número-da-página, deslocamento), onde número-página é usado como índice para uma entrada na Tabela de Páginas n Acontece relocação dinâmica, pois cada endereço lógico é traduzido em endereço físico em tempo de execução Página ( p ) deslocamento ( d )

40 IC - UFF Realocação n Mapeamento de endereços virtuais em reais n necessário, pois processos são alocados em espaço de MP dinamicamente Ex.: processo P1 P1: novoprontobloqueadoexecutando P1 em end. de MP 500 P1 passa para suspenso Ao voltar para MP  P1 vai para end. 1024

41 IC - UFF Realocação n Mapeamento eficiente endereço físico só calculado quando acesso a MP endereços definidos: lógico, relativo, físico n Registradores: base – armazena o endereço inicial de MP do processo (quando o processo passa para executando) ‏ limite – armazena endereço final do processo n Acesso ao endereço Z no programa if (Z + base <= limite) acesse Z+base senão “trap”

42 Relocação PCB programa dados pilha registrador de base somador imagem do processo na memória endereço relativo registrador limite comparador int endereço absoluto

43 Paginação

44 n Processo pode ser executado contanto que haja um número mínimo de páginas na memória (as páginas sendo acessadas) n O espaço de endereçamento lógico é contiguo, o espaço físico equivalente é distribuído/separado. n A tradução é feita de forma transparente pela MMU, que além da TP, mantém um cache das páginas recentemente consultadas.

45 Em suma Paginação n Cada processo P possui a sua Tabela de Páginas, que precisa ser carregada na MMU a cada troca de contexto. n Para tal, cada entrada Tabela Processos(P) contém um ponteiro para a Tabela de Páginas de P. n O dispatcher é o encarregado de "carregar" a nova tabela de páginas na MMU. n Como qualquer acesso à memória ocorre através do mapeamento pela TP. Isso fornece também automaticamente um mecanismo de proteção...contanto que o preenchimento da tabela de página seja feita em modo privilegiado (supervisor)!! n => à medida que as páginas vão sendo alocadas, o núcleo preenche as entradas na tabela de página. n Além disto, kernel precisa manter informações sobre o conjunto de molduras livres na memória principal: n Para isso, usa-se uma tabela de molduras (tabela de moldura de páginas), com uma entrada por moldura, informando se o mesmo está alocado, e para qual processo.

46 Tabela de Páginas – bits de controle n Cada entrada da tabela possui alguns bits adicionais para implementar proteção um bit para indicar se a página é de apenas leitura (read only) um bit para indicar se a página é válida ou inválida n Vejamos:

47 Controle de Acesso n A paginação pode ser facilmente estendida para incorporar controle de acesso para cada página: além do endereço do quadro da memória, cada entrada da TP contém bits para o tipo de acesso permitido, podendo ser: somente-leitura, leitura-e- escrita ou somente-execução se uma instrução viola o acesso permitido, a MMU gera outra interrupção (violação de acesso de memória) a validade de uma operação sob um endereço lógico pode ser testada em paralelo com a obtenção do endereço físico correspondente. n Além disto, pode-se usar bits valido/inválido para marcar as páginas lógicas que efetivamente compõem o espaço de endereçamento lógico do processo é útil para espaços de endereçamentos grandes e utilizados de forma descontínua note-se que devido ao problema do não alinhamento de dados com os limites das páginas, esse tipo de controle de acesso não é muito preciso.

48 Entrada da Tabela de Páginas Cache desabilitado Modificada Presente/Ausente Referenciada Proteção Número da moldura de página

49 Implementação da Tabela de Páginas n Conjunto de registradores dedicados n Memória Principal n TLB ou Memória Associativa

50 Tabela de Páginas em Conjunto de Registradores Dedicados n Na mudança de processo em execução estes registradores são carregados com os valores correspondentes ao novo processo. n TP é mantida em um conjunto de registradores dedicados, que são carregados através de instruções privilegiadas (ex. DEC PDP-11) n Pró: não necessita de MMU e tradução é veloz. n Contra: número de entradas é pequeno (tipicamente, de 16 a 64)

51 Tabela de Páginas na Memória Principal n Cada descritor de processo contém o endereço de sua respectiva tabela de páginas. n A UCP possui um registrador que aponta para a tabela de páginas atual n Para acessar um dado na memória são necessários dois acessos: um de mapeamento (acesso à tabela) e outro para acessar o dado n TP é mantida em memória principal mantém-se um registrador com o endereço base da tabela (Process Table Base Register, PTBR) e entrada na tabela = PTBR + #página_virtual n Prós: possibilita tabelas de páginas arbitrariamente grandes a troca de contexto envolve somente PTBR n Contras: tempo de acesso à memória duplica, devido ao acesso à tabela

52 Tabela de Páginas em TLB ou Memória Associativa n Memória de alta velocidade (mas hardware caro), onde cada posição possui dois campos (chave = número de página lógica, valor = página física correspondente) n Usa um Translation Look-aside Buffer (TLB, buffer para tradução de endereços) na MMU: TLB = vetor associativo que permite comparação paralela com suas entradas (de entradas; Intel tem 32 entradas) mantém-se apenas as entradas da TabPaginas das páginas recentemente acessadas ( princípio de localidade) quando uma página lógica é acessada e seu mapeamento não está no TLB (TLB miss) então: -acessa-se a TabPaginas na memória e substitui-se a entrada no TLB -dependendo se a página está em memória ou não, continua-se a execução, ou gera-se uma interrupção Page-fault a cada troca de contexto, o TLB precisa ser limpo n Vantagem: tradução rápida n Desvantagem: requer gerenciamento do conteúdo do TLB (substituição de entradas)

53 TLB - Translation Look-aside Buffer

54 Funcionamento da MMU com TLB n Ao receber um novo nº. de página (np) todas as entradas do TLB são comparadas em paralelo: Se np é encontrado e tipo de acesso é válido, então usa-se a entrada do TLB (endereço do quadro) Se tipo de acesso é inválido, gera-se uma falha de proteção (e processo é abortado) Se np não é encontrado na TLB, (TLB miss), MMU consulta a TP em memória, obtém o end. do quadro, e copia a entrada completa da TP para o TLB (para agilizar acessos futuros) Quando houver acesso p/escrita, copia-se o flag de escrita (Modify bit) de TLB para TP. Obs: Pode-se aumentar a eficiência da paginação, aumentando-se o tamanho do TLB.

55 TLB - Translation Look-aside Buffer n Possível configuração do TLB para um programa com: Um loop cujas instruções internas estão armazenadas nas páginas 19-21, acessando um vetor nas páginas O índice do vetor está na pagina 140 e a pilha em

56 TLB - Translation Look-aside Buffer n Em arquiteturas RISC(*), TLB misses são tratados pelo Sistema Operacional e não pelo hardware (MMU). n Quando a MMU gera um TLB-miss, o núcleo faz o troca da entrada da TLB. n Desvantagem: gerenciamento do TLB é muito mais lento do que se for por hardware n Vantagem: Torna o circuito da MMU bem mais simples, e permite a implementação em muitas arquiteturas;

57 Problema com Tabela de Páginas n Principal problema é que a própria TP precisa estar em memória. -Arquitetura de 32 bits. -Tamanho da página= 4K -Offset = 12 bits -Tabela de página = 2 20 entradas! n E pior, precisa-se manter uma TP por processo em execução. n Então, dependendo do número de entradas de cada TP (que depende do tamanho da página e do número de bits da arquitetura), pode ser inviável manter todas elas na memória do núcleo. n O que fazer?

58 Tabela de Páginas Multinível Resolve o problema de manter grandes tabelas de página na memória (para todos os processos). Com TP de 2 níveis, pode-se particionar a TP principal em páginas e manter apenas as páginas da TP cujo mapeamento esteja sendo usado. Uma tabela de 1o. nível contém os ponteiros para essas partes da TP. TP de nível 2

59 Tabela de Páginas Invertidas n Para arquiteturas de 64 bits, o espaço de endereçamento lógico é 2 64 bytes! n Exemplo: se o seu tamanho de página for 4KB, isso leva a TPs muito grandes, ex ≈ alguns Tera Bytes!). n Por isso, em alguns sistemas usa-se uma TP invertida: n Uma entrada para cada moldura de página n Cada entrada contém uma lista de pares: (processID, nº da página) n Desvantagem: a tradução de endereços lógicos para reais fica bem mais lenta. Ex: para cada página p, precisa-se fazer uma varredura pela TP invertida para encontrar a moldura correspondente. n Só é viável, se o TLB for usado para guardar as associações correntes. Somente quando ocorre um TLB miss, a TP invertida precisa ser consultada. n Na maioria dos sistemas, usa-se uma função de hash para indexar as entradas da TP invertida.

60 Comparação de TP tradicional e TP invertida.

61 A questão do tamanho das páginas n Tamanho de página pequenos: n Vantagens Melhor aproveitamento da memória física: menos fragmentação interna Mais programas usando a memória Melhor alinhamento de segmentos de código e de estruturas de dado às páginas n Desvantagens Programas precisam de mais páginas, tabelas de página maiores, mais tempo para carregar entradas de tabela nos registradores da MMU. Transferência de página menor ou maior de/para disco demanda aproximadamente o mesmo tempo (mas é feito de forma mais frequente)

62 Referências n Sistemas Operacionais Modernos – 3ª Edição. A. Tanenbaum, n Modern Operating Systems 3 e. Prentice-Hall, 2008.


Carregar ppt "1 Gerenciamento de Memória (Paginação e Memória Virtual) Prof. Alexandre Monteiro Recife."

Apresentações semelhantes


Anúncios Google