Você está na página 1de 36

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

Hierarquia de Memria o
Registradores
Internos ` CPU a Extremamente rpidos a Otimizaoes de cdigo podem mover temporariamente c 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
Internos ou muito prximos ` CPU o a 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
Utilizadas para cpias de segurana (backups) o c 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 conguraoes o c

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 partioes xas ca c


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

Modelagem de multiprogramao ca
Quantos processos colocar na memria? o Estimativa de uso da CPU
20% I/O Wait 50% I/O Wait 80% I/O Wait

Modelagem de multiprogramao ca
Quantos processos colocar na memria? o Aposta otimista: 5 processos 80

Modelagem de multiprogramao ca
Viso probabil a stica Taxa de utilizao da CPU = 1 - (0.8)n ca
... ... ... ... ...

Modelagem de multiprogramao ca
CPU utilization (in percent) 20% I/O wait 100 80 60 40 20 50% I/O wait 80% I/O wait

Utilizao da CPU = 1 - p ca

4 5 6 7 8 Degree of multiprogramming n

10

Anlise de Desempenho a
Job 1 2 3 4 Arrival time 10:00 10:10 10:15 10:20 (a) CPU minutes needed 4 3 2 2 # Processes 1 2 3 4 CPU idle CPU busy CPU/process .80 .20 .20 .64 .36 .18 (b) .51 .49 .16 .41 .59 .15

1 2 3 4 0 0

2.0 Job 2 starts

.9 .9

.8 .8 .8

.3 .3 .3 .3

Job 1 finishes .9 .9 .9 .1 .7 .1

10

15 20 22 Time (relative to job 1's arrival) (c)

27.6 28.2

31.7

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


Todos os endereos precisam ser identicados e alterados c 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

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

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

Algoritmos para alocao de memria ca o


First t Next t Best t Worst t

Problema relacionado
Malloc, free e realloc
void *malloc(size_t size); void free(void *ptr); void *realloc(void *ptr, size_t size); A alocao de registros dentro de um processo tem ca problemas semelhantes: administrao de uma lista de livres ca fragmentao ca

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

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)

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

Memria compartilhada o
Processo A Pilha Processo B Pilha

Shmem Shmem Data Texto Data Texto

Memria compartilhada o
int shmget(key_t key, size_t size, int shmflg); void *shmat(int shmid, const void *shmaddr, int shmflg); Veja os exemplos: sh1.c sh2,c sh fork.c

Você também pode gostar