Você está na página 1de 30

MC514Sistemas Operacionais: Teoria e Prtica a 1s2009

Gerenciamento de Memria o

Sonho dos usurios a


Idealmente, a memria deveria ser o rpida, a de custo baixo, imensa e no voltil. a a

Realidade para os usurios a


Hierarquia de Memria o
Typical access time 1 nsec 2 nsec 10 nsec 10 msec 100 sec Registers Cache Main memory Magnetic disk Magnetic tape Typical capacity <1 KB 1 MB 64-512 MB 5-50 GB 20-100 GB

Tanenbaum: Figura 1.7

Como esto estes valores hoje? a

Hierarquia de Memria o
Registradores
a Internos ` CPU Extremamente rpidos a Otimizaes de cdigo podem mover temporariamente co o variveis para registradores. a Programas podem dar palpites sobre o que deve car armazenado nos registradores register int r;

Hierarquia de Memria o
Cache
o a Internos ou muito prximos ` CPU Divididos em linhas de cache Controlados por hardware Cache hit Cache miss

Hierarquia de Memria o
Memria Principal o
Random Access Memory (RAM) Compromisso entre preo e desempenho c Armazenamento voltil a

Hierarquia de Memria o
Disco
Read/write head (1 per surface) Surface 7 Surface 6 Surface 5 Surface 4 Surface 3 Direction of arm motion Surface 2 Surface 1 Surface 0

Hierarquia de Memria o
Fitas magnticas e
o c Utilizadas para cpias de segurana (backups) Armazenamento de grandes quantidades de dados Acesso seqencial u

Hierarquia de Memria o
Outros tipos de memria o
ROM (Read Only Memory) rpida e barata a bootstrap loader est gravado em ROM a EEPROM (Electrically Erasable ROM) podem ser apagadas (erros podem ser corrigidos) CMOS dependem de uma bateria armazenam relgio e conguraes o co

Monoprogramao ca
0xFFF Operating system in ROM Device drivers in ROM User program

User program User program

Operating system in RAM 0 (a) (b) 0

Operating system in RAM 0 (c)

mainframes

palmtops

MS-DOS

Multiprogramao e parties xas ca co


Multiple input queues Partition 4 700K Single input queue 400K Partition 2 200K Partition 1 Operating system (a) 100K 0 Partition 1 Operating system (b) Partition 2 800K Partition 4

Partition 3

Partition 3

Swapping
CPU

CPU scheduler Arriving job

Input queue Main Memory

Admission scheduler

Memory scheduler

Disk

Swapping
Time C C C C C

B A

A Operating system (a)

A Operating system (b)

A D Operating system (c) Operating system (d) Operating system (e) D Operating system (f) D Operating system (g)

Relocao e Proteo ca ca
Relocao: um programa deve poder rodar em endereos ca c f sicos distintos. Proteo: um programa no pode fazer acesso ` rea de ca a aa memria reservada a outro programa. o

Relocao durante a carga ca


c Todos os endereos precisam ser identicados e alterados No resolve o problema da proteo a ca

Bits de proteo ca
1010 1010 1010 0011 0011 O PSW de cada processo deve conter os bits de proteo ca

Registradores base e limite


Address 0xFFFFFFFF Registers when program 1 is running Limit-2 User program and data Base Base-2 Limit-1 Base-1 User-1 data User program Limit-1 Base-1 Registers when program 2 is running User program and data Limit-2 User-2 data Base-2

Limit

Operating System 0 (a)

Operating System (b)

Espao para crescimento c


B-Stack Room for growth Room for growth B-Data B Actually in use B-Program

A-Stack Room for growth Room for growth A-Data A Operating system (a) Actually in use A-Program Operating system (b)
Gap Data Text 0000 Stack Address (hex) FFFF

Compactao de memria ca o
A B C A B C

Gerncia de grandes blocos de e memria o


Problema relacionado Malloc, free e realloc
void *malloc(size_t size); void free(void *ptr); void *realloc(void *ptr, size_t size);

Bitmaps e lista de livres


A 8 B C 16 (a) 11111000 11111111 11001111 11111000 H 18 2 Hole Starts Length at 18 2 (b) P 20 6 P 26 3 Process (c) H 29 3 X P 0 5 H 5 3 P 8 6 P 14 4 D 24 E

Tanenbaum: Figura 4.7

Atualizao da lista ca
Before X terminates (a) (b) (c) (d) A A X X X X B B becomes becomes becomes becomes After X terminates A A B B

Tanenbaum: Figura 4.8

Veja o cdigo: erro free.c o

Algoritmos para alocao de memria ca o


First t Next t Best t Worst t Veja o cdigo t.c o

Programas muito grandes


O que fazer se um programa for muito grande para caber na memria? o

Overlays
dados d1, d2, d3, d4, d5; f1(); f2(); f3(); g1(); g2(); g3(); h1(); h2(); h3();

main() { fase_1(); fase_2(); fase_3(); }

/* funoes f e dados d1, d2, d3 */ c /* funoes g e dados d1, d2, d4 */ c /* funoes h e dados d1, d2, d5 */ c

Memria Virtual o
CPU package CPU Memory management unit Memory Disk controller The CPU sends virtual addresses to the MMU

Bus The MMU sends physical addresses to the memory

Tanenbaum: Figura 4.9

Memory Management Unit (MMU)

Paginao ca
Virtual address space 60K-64K 56K-60K 52K-56K 48K-52K 44K-48K 40K-44K 36K-40K 32K-36K 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K X X X X 7 X 5 X X X 3 4 0 6 1 2 Physical memory address 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K Page frame Virtual page

Mapeamento dos endereos c


1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 Outgoing physical address (24580) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 000 000 000 000 111 000 101 000 000 000 011 100 000 110 001 010 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1

Page table

12-bit offset copied directly from input to output

110 Present/ absent bit

Virtual page = 2 is used as an index into the page table 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0

Incoming virtual address (8196)

Paginao - Exemplo ca
32 bits de endereo c pginas de 4k a 20 primeiros bits indicam a pgina a 12 ultimos bits indicam o deslocamento dentro da pgina a Veja o cdigo pagesize.c o

Espao de endereamento c c
Apenas as pginas ocupadas precisam ser mapeadas a Veja o cdigo sbrk.c o
Address (hex) FFFF Stack Gap Data Text 0000

Você também pode gostar