Unidade 8: Gerenciamento de Memória • • • • • • • Introdução Espaço de endereçamento lógico e físico Swapping Alocação contínua Paginação Segmentação Segmentação usando Paginação (gambiarra) Operating System Concepts 8.1 Silberschatz and Galvin1999 Introdução • • • O programa precisa ser colocado em memória e asociado a um processo para que possa ser executado. File de entrada – coleção de processos em disco qua estão esperando para ser colocados em memória para execução. Programas passam por várias etapas antes de serem executadas. Operating System Concepts 8.2 Silberschatz and Galvin1999 Link-edição de instruções e Dados na Memória Link-edição de endereços de instruções e dados pode ser feito em três situações diferentes: • • • Em tempo de compilação: Se a alocação da memória é conhecida antecipadamente é possível gerar código absoluto; o código deve ser recompilado se o endereço de início muda. Em tempo de carregamento: código relocalizável (relocatable) tem que ser gerado se a localidade no momento da execução não é conhecida no momento da compilação. Em tempo de execução: Link-edição é adiada para o momento de execução. Suporte de hardware é preciso para o mapeamento (por exemplo GDT do Pentium). Operating System Concepts 8.3 Silberschatz and Galvin1999 Carregamento dinâmico • • • • Uma rotina é carregada somente quando chamada Melhor aproveitamento do espaço de memória física; uma rotina inútil nunca é carregada. Carregamento dinâmico é útil quando grandes quantidades de código são necessárias para tratar casos que raramente ocorrem. Suporte do sistema operacional é desejável mas não indispensável (pode ser implementado até a nível do usuário). Operating System Concepts 8.4 Silberschatz and Galvin1999 Carregamento dinâmico • • • • Link-edição é adiada para o momento da execução. Pequenos pedaços de código (stub) é usado para localizar a rotina da biblioteca apropriada. Quando chamado o stub carrega a rotina e substitui o endereço na instrução a qual o chamou pelo endereço da rotina carregada e executa a rotina. O sistema operacional é necessário para verificar se a rotina já tinha sido carregada por outro processo. Operating System Concepts 8.5 Silberschatz and Galvin1999 Overlays • • • Mantém em memória somente aquelas instruções que são necessários naquele momento. Necessário quando o processo é maior que a quantidade de memória alocada para ele. Pode ser implementado a nível de usuário. Não precisa de suporte específico do sistema operacional, mas o projeto da estrutura de overlay é complicado. Operating System Concepts 8.6 Silberschatz and Galvin1999 Espaço de endereçamento lógico e físico • O conceito de um espaço de endereçamento lógico que é mapeado para um espaço de endereçamento físico é fundamental para um gerenciamento de memória decente. – Endereço lógico – usado nas instruções de máquina; também chamado endereço virtual ou endereço linear. – Endereço físico – endereço que aparece no barramento entre CPU e memória principal. Operating System Concepts 8.7 Silberschatz and Galvin1999 Unidade de Gerenciamento de memória (MMU) • • Um circuito em hardware que mapeia endereços virtuais para endereços físicos. O programa do usuário trabalha com endereços lógicos - ele nunca enxerga endereços físicos. Operating System Concepts 8.8 Silberschatz and Galvin1999 Swapping • Um processo pode ser tirado temporariamente da memória para ser colocado num armazenamento auxiliar, para mais tarde ser recolocado para a memória. • Arazenamento auxiliar – disco rápido com capacidade suficiente para manter cópias de todas as imagens de memória para todos os usuários e possibilitar acesso direto a essas imagens. • Roll out, roll in – variante de swapping usada para algoritmos de scheduling baseadas em prioridade – processo de baixa prioridade é tirado para que um processo de alta prioridade possa ser executado. • • A maior parte do tempo de swap é tempo de transferência, proporcional a quantidade de memória tirada e colocada. Versões modificadas de swapping podem ser enontadas em vários sistemas, por exemplo UNIX e Microsoft Windows. Operating System Concepts 8.9 Silberschatz and Galvin1999 Schematic View of Swapping Operating System Concepts 8.10 Silberschatz and Galvin1999 Allocação • A memória principal é muitas vezes dividida em dois partes: – A parte residente (permanente) do sistema operacional, normalmente nos endereços baixos de memória física, junto com tabelas de interrupções e segmentos (IDT, GDT, etc.) – Processos de usuários em endereços de memória física mais altas. Operating System Concepts 8.11 Silberschatz and Galvin1999 Allocação (Cont.) • Alocação em partes múltiplas – Buraco – bloco de memória disponível; buracos de tamanhos variados são espalhadas as memória. – Quando chega um processo ele recebe memória de um buraco suficientemente grande para que ele caiba. – O sistema operacional mantém informações sobre: a) partições alocadas b) buracos OS OS OS OS process 5 process 5 process 5 process 5 process 9 process 9 process 8 process 2 Operating System Concepts process 10 process 2 process 2 8.12 process 2 Silberschatz and Galvin1999 O problema da alocação dinâmica Como satisfazer uma requisição de um tamanho de n bytes a partir de uma lista de buracos? • • • First-fit: Aloque o primeiro buraco que é suficientemente grande. Best-fit: Aloque o menor buraco que é suficientemente grande. Toda a lista de buracos precisa ser pesquisada (se ela não é ordenada). Resulta no menor buraco residual possível. Worst-fit: Aloque o buraco maior; também precisa pesquisar toda a lista. Deixa o maior buraco residual. First-fit e best-fit são melhores em termos de velocidade e utilização de memória. Operating System Concepts 8.13 Silberschatz and Galvin1999 Fragmentação • Fragmentação externa – existe espaço em memória para satisfazer uma determinada requisição, mas o espaço é distribuído em vários buracos. • Fragmentação interna – memória alocada pode ser ligeiramente maior do que a memória requisitada; a memória restante não é usada. Ocorre quando partições tem tamanho fixo. • Reduzir fragmentação externa fazendo compactação – desloca conteúdos da memória de forma a juntar todos os buracos pequenos num só buraco grande. – Compactação é possível somente se a relocação é dinâmica e é feita em tempo de execução. – Problema de entrada/saída (DMA) não move processo na memória quando ele está fazendo uma operação de entrada/saída entrada/saída somente com buffers do S.O. Operating System Concepts 8.14 Silberschatz and Galvin1999 Paginação • • • • • • • O espaço de endereçamento físico é particionado. Um processo recebe partições de memória física na medida que eles se tornam disponíveis. O mapeamento entre endereços lógicos e físicos apresenta ao processo um espaço de endereçamento lógico sem particionamento (contínuo). Divide a memória física em blocos de tamanho fixo chamado frames. (tamanho é potencia de 2, entre 512 bytes e 8192 bytes). Divide memória lógica em blocos do mesmo tamanho chamadas páginas. Mantenha registro dos frames livres. Para rodar um programa de n páginas, procure n frames livres e carregue o programa. Tabela de paginação. Fragmentação interna. Operating System Concepts 8.15 Silberschatz and Galvin1999 Address Translation Scheme • Address generated by CPU is divided into: – Page number (p) – used as an index into a page table which contains base address of each page in physical memory. – Page offset (d) – combined with base address to define the physical memory address that is sent to the memory unit. Operating System Concepts 8.16 Silberschatz and Galvin1999 Address Translation Architecture Operating System Concepts 8.17 Silberschatz and Galvin1999 Paging Example Operating System Concepts 8.18 Silberschatz and Galvin1999 Implementation of Page Table • • • • • Page table is kept in main memory. Page-table base register (PTBR) points to the page table. Page-table length register (PRLR) indicates size of the page table. In this scheme every data/instruction access requires two memory accesses. One for the page table and one for the data/instruction. The two memory access problem can be solved by the use of a special fast-lookup hardware cache called associative registers or translation look-aside buffers (TLBs) Operating System Concepts 8.19 Silberschatz and Galvin1999 Memória associativa • Memórias associativas implementam busca em paralelo em hardware Page # Frame # – dado o número de página, encontra o número do frame Operating System Concepts 8.20 Silberschatz and Galvin1999 Tempo de acesso médio efetivo • • • • Busca associativa = unidades de tempo Suponha ciclo de memória principal de 1 unidade de tempo taxa de acerto – porcentagem de vezes que um numero de pagina é encontrado no registro associativo. Esta razão é relacionada a capacidade da memória associativa. Tempo de acesso médio efetivo (EAT) EAT = (1 + ) + (2 + )(1 – ) =2+– Operating System Concepts 8.21 Silberschatz and Galvin1999 Proteção de memória com paginação • Bit Presente em cada entrada da tabela de página: – ‘1’ indica que pagina está bom . – ‘0’ indica que está fora. Operating System Concepts 8.22 Silberschatz and Galvin1999 Two-Level Page-Table Scheme Operating System Concepts 8.23 Silberschatz and Galvin1999 Two-Level Paging Example • • • A logical address (on 32-bit machine with 4K page size) is divided into: – a page number consisting of 20 bits. – a page offset consisting of 12 bits. Since the page table is paged, the page number is further divided into: – a 10-bit page number. – a 10-bit page offset. Thus, a logical address is as follows: page number page offset pi p2 d 10 10 12 where pi is an index into the outer page table, and p2 is the displacement within the page of the outer page table. Operating System Concepts 8.24 Silberschatz and Galvin1999 Address-Translation Scheme • Address-translation scheme for a two-level 32-bit paging architecture Operating System Concepts 8.25 Silberschatz and Galvin1999 Multilevel Paging and Performance • • • Since each level is stored as a separate table in memory, covering a logical address to a physical one may take four memory accesses. Even though time needed for one memory access is quintupled, caching permits performance to remain reasonable. Cache hit rate of 98 percent yields: effective access time = 0.98 x 120 + 0.02 x 520 = 128 nanoseconds. which is only a 28 percent slowdown in memory access time. Operating System Concepts 8.26 Silberschatz and Galvin1999 Inverted Page Table • • • • One entry for each real page of memory. Entry consists of the virtual address of the page stored in that real memory location, with information about the process that owns that page. Decreases memory needed to store each page table, but increases time needed to search the table when a page reference occurs. Use hash table to limit the search to one — or at most a few — page-table entries. Operating System Concepts 8.27 Silberschatz and Galvin1999 Inverted Page Table Architecture Operating System Concepts 8.28 Silberschatz and Galvin1999 Shared Pages • • Shared code – One copy of read-only (reentrant) code shared among processes (i.e., text editors, compilers, window systems). – Shared code must appear in same location in the logical address space of all processes. Private code and data – Each process keeps a separate copy of the code and data. – The pages for the private code and data can appear anywhere in the logical address space. Operating System Concepts 8.29 Silberschatz and Galvin1999 Shared Pages Example Operating System Concepts 8.30 Silberschatz and Galvin1999 Segmentation • • Memory-management scheme that supports user view of memory. A program is a collection of segments. A segment is a logical unit such as: main program, procedure, function, local variables, global variables, common block, stack, symbol table, arrays Operating System Concepts 8.31 Silberschatz and Galvin1999 Logical View of Segmentation 1 4 1 2 3 2 4 3 user space Operating System Concepts physical memory space 8.32 Silberschatz and Galvin1999 Segmentation Architecture • Logical address consists of a two tuple: <segment-number, offset>, • Segment table – maps two-dimensional physical addresses; each table entry has: – base – contains the starting physical address where the segments reside in memory. – limit – specifies the length of the segment. • Segment-table base register (STBR) points to the segment table’s location in memory. • Segment-table length register (STLR) indicates number of segments used by a program; segment number s is legal if s < STLR. Operating System Concepts 8.33 Silberschatz and Galvin1999 Segmentation Architecture (Cont.) • • • Relocation. – dynamic – by segment table Sharing. – shared segments – same segment number Allocation. – first fit/best fit – external fragmentation Operating System Concepts 8.34 Silberschatz and Galvin1999 Segmentation Architecture (Cont.) • • • • Protection. With each entry in segment table associate: – validation bit = 0 illegal segment – read/write/execute privileges Protection bits associated with segments; code sharing occurs at segment level. Since segments vary in length, memory allocation is a dynamic storage-allocation problem. A segmentation example is shown in the following diagram Operating System Concepts 8.35 Silberschatz and Galvin1999 Sharing of segments Operating System Concepts 8.36 Silberschatz and Galvin1999 Segmentation with Paging – MULTICS • • The MULTICS system solved problems of external fragmentation and lengthy search times by paging the segments. Solution differs from pure segmentation in that the segment-table entry contains not the base address of the segment, but rather the base address of a page table for this segment. Operating System Concepts 8.37 Silberschatz and Galvin1999 MULTICS Address Translation Scheme Operating System Concepts 8.38 Silberschatz and Galvin1999 Segmentation with Paging – Intel 386 • As shown in the following diagram, the Intel 386 uses segmentation with paging for memory management with a twolevel paging scheme. Operating System Concepts 8.39 Silberschatz and Galvin1999 Intel 30386 address translation Operating System Concepts 8.40 Silberschatz and Galvin1999 Comparing Memory-Management Strategies • • • • • • • Hardware support Performance Fragmentation Relocation Swapping Sharing Protection Operating System Concepts 8.41 Silberschatz and Galvin1999