Sistemas Operacionais Gerência de Memória Thiago Leite thiago.leite@udf.edu.br 1
Hierarquia de memórias Memórias pequenas e rápidas Memórias grandes e lentas 2
Como é o acesso a cada uma delas? Sistema operacional abstrai o acesso Uma parte do sistema operacional se encarrega da gestão da memória 3
Gerenciador de Memória Parte do sistema operacional que gerencia as memórias principais e secundárias Alocar e liberar memória quando necessário Identificar espaço livre e espaço utilizado 4
Vários esquemas diferentes de gerenciamento de memória níveis inferiores utilizam mecanismos rústicos por hardware níveis mais sofisticados utilizam softwares complexos 5
Como seria realizado o processo de gerenciamento de memória sem um gestor de memória? acesso sem abstração 6
Sem abstração de memória Endereços absolutos em memória MOV REGISTER1, 1000 7
Sem abstração de memória Processos podem alterar qualquer região da memória Apenas um programa por vez em memória 8
Como permitir que o sistema operacional co-exista com outro processo em memória? Os dados podem ser organizados em três variações possíveis de alocação da memória 9
Organização da Memória 10
Como executar múltiplas aplicações sem abstração? Troca de processos em memória (swapping) 11
Problemas ainda persistem Proteção de acesso Realocação de memória 12
Proteção de acesso dois processos tentando atuar na mesma região de memória 13
Problema de realocação 14
Realocação estática sistema define tamanhos de memória que os processos podem ocupar processos quando criados são divididos em módulos cada módulo possui uma variável para o endereço de acesso ex: JMP endx (endereço X) os processos não preenchiam totalmente as partições onde eram carregados 15
Realocação dinâmica Partições sem tamanho fixo, onde cada programa utiliza o espaço que necessita Registradores-base e registradores-limite Registrador-base possui endereço de onde o programa começa Registrador-limite identifica o limite máximo de leitura Em tempo de execução 16
Realocação dinâmica Instruções de leitura e escrita são modificadas Processo executa a instrução JMP 28 Hardware trata JMP 16412 17
Registrador-base e registrador-limite 18
E quando a memória física não comporta todos os processos? Dois métodos distintos para lidar com a sobrecarga de memória swapping memória virtual 19
Swapping Alocar os processos mais necessários Liberar espaço dos processos menos necessários Otimizar o uso da memória 20
Swapping 21
Swapping Processos devem ser alocados em espaços contínuos Espaços desalocados podem surgir Compactação de memória Registradores base e limite funcionam bem 22
Swapping Processos podem crescer Alocação dinâmica de memória Uso de área temporária de memória (heap) Se acabar o espaço em memória e em disco (memória swap) o processo é suspenso até que se libere mais memória 23
Alocação de espaço para expansão 24
Gerenciando a memória livre mapa de bits listas livres 25
Mapa de bits memória dividida em unidades de igual tamanho cada unidade correspondente à um bit no mapa (1 ocupado e 0 livre) quanto menor a unidade maior o mapa de bits e do uso eficiente da memória quanto maior a unidade menor o mapa de bits e maior o desperdício da memória 26
Listas Encadeadas segmentos são porções livres ou ocupadas de unidades sequenciais atualização simples quando um espaço contínuo é transformado de livre para ocupado ou o contrário ineficiente para acessos não sequenciais 27
Listas duplamente encadeadas as sequências de espaço livres são colocadas no início da lista sequências de espaços ocupados são colocadas no final da lista as sequências mais ao final da fila são as sequências menos solicitadas 28
Mapa de Bits e Listas Encadeadas 29
Lista Encadeada e suas Atualizações 30
Algoritmos de alocação de processos em memória first-fit next-fit best-fit worst-fit quick-fit 31
Algoritmo first-fit (primeiro encaixe) ocupa a primeira porção de memória disponível com o tamanho necessário ao processo 32
P3 P1 P4 P2 Exemplo de Algoritmo First-Fit 33
Processos a serem alocados em ordem 212k 417k 112k 426k Exemplo de Algoritmo First-Fit 34
Algoritmo next-fit (próximo encaixe) semelhante ao first-fit não inicia no início da lista a cada nova procura 35
Algoritmo best-fit (melhor encaixe) escolha na lista inteira o local mais apropriado para alocar nova área mais lento que os demais algoritmos curiosamente é o menos eficiente dos algoritmos apresentados muitos pequenos espaços não alocados e inúteis 36
Processos a serem alocados em ordem 212k 417k 112k 426k Exemplo de Algoritmo Best-Fit 37
Algoritmo worst-fit (pior encaixe) escolhe segmentos que sobrarão mais espaço depois de alojados simulações não apresentam bons resultados 38
Algoritmo quick-fit (rápido encaixe) mantém várias listas com os tamanhos de segmentos de memória mais solicitados percorre cada uma das listas como o algoritmo first-fit com a eficiência de uso do best-fit 39
Solicitação de mais espaço em memória Processos podem solicitar mais memória Alocação dinâmica de memória
Problema a resolver: bloatwares programas crescem mais rapidamente que a memória 1980: 4 MB para dezenas de usuários Atualmente: mínimo de 1 GB para rodar Windows 8 41
Problema a resolver: necessidade de execução simultânea de vários processos não individualmente comportados Coletivamente excedem a memória Exemplo: memória de 1 GB e dois processos de 1 GB cada precisam estar em execução simultaneamente 42
Primeira solução: Sobreposições (Overlays) Inicializado apenas o gerenciador de sobreposições Programador dividia o código em blocos (sobreposição) Gerenciador decide quais sobreposições deveriam ficar em memória 43
Sobreposição (Overlays) 44
Problemas de Sobreposições (Overlays) Divisão do programa em módulos pelo programador Propenso a erros (programadores erram) Que critérios seriam utilizados para gerir as sobreposições? 45
Memória virtual Cada programa possui espaço de endereçamento próprio Espaço de endereçamento dividido em blocos (páginas ou frames) O SO é responsável pela gestão das páginas 46
Gestor de Memória mapeia memória principal e secundária em memória virtual Programa pode referenciar parte que está ou não em memória física (principal) SO é responsável em carregar página de referência quando ela não está na memória física 47
Multiprogramação com memória virtual CPU poderá ser dada a outro processo enquanto um processo espera sua página ser carregada Melhor aproveitamento da CPU 48
Memória virtual Sistemas utilizam técnica de paginação Conjunto de endereços virtuais Constitui o espaço de endereçamento virtual Lista de ponteiros para os endereços físicos Em computadores sem memória secundária o endereço virtual é idêntico ao endereço físico 49
Dispositivo responsável em traduzir as instruções de acesso à memória virtual MMU (Memory Management Unit) 50
Localização e função da MMU 51
Tabela de páginas Mapeia endereços virtuais em endereços físicos Exemplo tabela de endereços virtuais de 16 bits de páginas de 64KB memória física de 32 KB de memória física programas de 64 KB 52
Tabela de páginas 53
Paginação Páginas (pages) Molduras de página (page frames) Páginas em memória física Apenas as molduras de páginas podem acessadas simultaneamente E se tentarmos acessar uma instrução não presente? 54
Interrupção por falta de moldura de página (page fault) Escolhe moldura pouca usada e salva em disco Carrega nova moldura Atualiza tabela de páginas Reinicia instrução causadora 55
Freqüência de faltas de páginas de acordo com o número de molduras alocadas 56
Tradução de Endereços pela MMU 57
Exemplo de uso da MMU apresentada 15 bits de memória física Page fault 16 bits de entrada na tabela de páginas endereço 37413 (1001 0010 0010 0101) endereço físico 21029 (101 0010 0010 0101) endereço 57348 (1110 0000 0000 0100) 58
Tabela de Páginas 15 00 0 14 00 0 13 00 0 12 10 1 11 00 0 10 00 0 9 00 0 8 11 1 7 00 0 6 01 1 5 00 0 4 00 0 3 00 0 2 00 0 1 00 1 0 00 0 Saída: {11} 1110 1110 0000 Conversão de memória virtual de 16 bits para memória física de 14 bits Entrada: {1000} 1110 1110 0000 Exemplo de Tabela de Páginas 59
Possível solução para alocar mais molduras de página Páginas compartilhadas 60
Dois processos que compartilham o mesmo programa compartilhando sua tabela de página 61
Bibliotecas compartilhadas Evitar ligar estaticamente todas as bibliotecas a cada programa Windows DLL (Dynamic-Link Library) Linux SO (Shared Object) 62
No Linux $ ldd /bin/ls linux- gate.so.1 => (0xffffe000) libselinux.so.1 => /lib/libselinux.so.1 (0xb76e7000) librt.so.1 => /lib/librt.so.1 (0xb76dd000) libcap.so.2 => /lib/libcap.so.2 (0xb76d7000) libacl.so.1 => /lib/libacl.so.1 (0xb76cd000) libc.so.6 => /lib/libc.so.6 (0xb755f000) libdl.so.2 => /lib/libdl.so.2 (0xb755a000) /lib/ld- linux.so.2 (0xb7723000) libpthread.so.0 => /lib/libpthread.so.0 (0xb753f000) libattr.so.1 => /lib/libattr.so.1 (0xb7539000) 63
No Mac OS X $ otool - L /bin/ls /bin/ls: /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0) /usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libsystem.b.dylib (compatibility version 1.0.0, current version 159.1.0) 64
Revisão Hierarquia de memórias Gerenciador de memória Gerenciamento de memória de baixo nível Sistemas sem abstração de memória Organização da memória Executando múltiplas aplicações sem abstração Proteção da memória em sistemas sem abstração Problema de realocação de memória Realocação estática de memória Realocação dinâmica de memória Espaço de endereçamento Registrador-base e registrador-limite Swapping Memória virtual MMU Memória heap Sobreposições Multiprogramação com memória virtual Tabela de páginas Páginas e molduras de páginas Paginação Páginas compartilhadas Bibliotecas compartilhadas 65
Universidade Federal de Alagoas As páginas no armazenamento virtual são o mesmo que: a)page Frames. b)programas. c)partes de Programas. d)setores do disco. e)espaço de memória. 66
Correios (CESPE) Um programa carregado na memória e em execução é denominado processo. Nos sistemas operacionais de tempo compartilhado e nos multiprogramados, os jobs devem ser mantidos na memória ao mesmo tempo que são executados e, por isso, o sistema deve prover recursos de gerência de memória e proteção. a) Certo b) Errado 67
Tribunal Regional do Trabalho A Memory Management Unit (MMU) tem como função: a)mapear os endereços virtuais para endereços físicos de memória. b)dividir a memória em partições de tamanhos variados. c)pesquisar e selecionar o job que melhor se ajuste ao tamanho da partição. d)gerenciar os registradores de base e registradores de limite. 68
FUB (CESPE) Em sistemas multiprogramados, uma forma de resolver o problema da realocação consiste em alterar as instruções do programa de acordo com a partição de memória em que ele será carregado. a) Certo b) Errado 69
FUB (CESPE) Swaping é a troca de processos entre a memória e o disco, quando a memória principal não é suficiente para conter todos os processos. a) Certo b) Errado 70
FUB (CESPE) Para que um programa possa ser executado, o seu tamanho, incluindo os dados e a pilha, não pode ser maior que a quantidade de memória física disponível no computador para a sua execução. a) Certo b) Errado 71
DETRAN-ES (CESPE) No gerenciamento de memória virtual, um sistema operacional pode ter uma parte dos espaços de endereçamento atribuída à memória principal e outra ao disco rígido, sendo possível alternar o uso desses espaços de acordo com a necessidade de gerenciamento e uso. a) Certo b) Errado 72
Universidade Federal de Pernambuco Um dos tipos de gerenciamento de memória utilizados por sistemas operacionais é a memória virtual. Este tipo de memória pode ser gerenciada por segmentação. Assinale a alternativa que descreve o funcionamento do gerenciamento de memória virtual por segmentação: a)divide o espaço de endereçamento virtual e espaço de endereçamento real em blocos do mesmo tamanho chamados de segmentos. b)divide o espaço de endereçamento virtual e espaço de endereçamento real em blocos do mesmo tamanho chamados de buffer. c)divide o espaço do endereçamento virtual em blocos de tamanhos diferentes chamados segmentos. d)divide o espaço de endereçamento virtual e espaço de endereçamento real em blocos do mesmo tamanho chamados de páginas. e)divide o endereçamento memória virtual em partes semelhantes chamadas de blocos. 73