Sistemas Operacionais Gerência de Memória Thiago Leite [email protected] 1 Gerência de Memória • Hierarquia de memórias • Memórias pequenas e rápidas • Memórias grandes e lentas 2 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • Como seria realizado o processo de gerenciamento de memória sem um gestor de memória? • acesso sem abstração 6 Gerência de Memória • Sem abstração de memória • Endereços absolutos em memória • MOV REGISTER1, 1000 7 Gerência de Memória • Sem abstração de memória • Processos podem alterar qualquer região da memória • Apenas um programa por vez em memória 8 Gerência de Memória • 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 Gerência de Memória • Como executar múltiplas aplicações sem abstração? • Troca de processos em memória (swapping) 11 Gerência de Memória • Problemas ainda persistem • Proteção de acesso • Realocação de memória 12 Gerência de Memória • Proteção de acesso • dois processos tentando atuar na mesma região de memória 13 Problema de realocação 14 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • Swapping • Alocar os processos mais necessários • Liberar espaço dos processos menos necessários • Otimizar o uso da memória 20 Swapping 21 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • Gerenciando a memória livre • mapa de bits • listas livres 25 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • Algoritmos de alocação de processos em memória • first-fit • next-fit • best-fit • worst-fit • quick-fit 31 Gerência de Memória • 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 Gerência de Memória • Algoritmo next-fit (próximo encaixe) • semelhante ao first-fit • não inicia no início da lista a cada nova procura 35 Gerência de Memória • 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 Gerência de Memória • Algoritmo worst-fit (pior encaixe) • escolhe segmentos que sobrarão mais espaço depois de alojados • simulações não apresentam bons resultados 38 Gerência de Memória • 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 Gerência de Memória • Solicitação de mais espaço em memória • Processos podem solicitar mais memória • Alocação dinâmica de memória Gerência 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • 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 Gerência de Memória • Exemplo de uso da MMU apresentada • 16 bits de entrada na tabela de páginas • 15 bits de memória física • endereço 37413 (1001 0010 0010 0101) • endereço físico 21029 (101 0010 0010 0101) • endereço 57348 (1110 0000 0000 0100) • Page fault 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 Gerência de Memória • 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 Gerência de Memória • Bibliotecas compartilhadas • Evitar ligar estaticamente todas as bibliotecas a cada programa • Windows • DLL (Dynamic-Link Library) • Linux • SO (Shared Object) 62 Gerência de Memória • 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 Gerência de Memória • 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 • Proteção da memória em sistemas sem abstração • Problema de realocação de memória memória de baixo nível • Realocação estática de • Sistemas sem abstração de memória • Realocação dinâmica • Organização da memória • Espaço de • Executando múltiplas aplicações sem abstração memória de memória endereçamento • Registrador-base e registrador-limite • Swapping 65 • 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 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