gerenciamento de memória(2)

36
Gerenciamento de Mem´ oria

Upload: elliando-dias

Post on 07-Jul-2015

723 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Gerenciamento de Memória(2)

Gerenciamento de Memoria

Page 2: Gerenciamento de Memória(2)

Sonho dos usuarios

Idealmente, a memoria deveria ser

• rapida,

• de custo baixo,

• imensa e

• nao volatil.

Page 3: Gerenciamento de Memória(2)

Realidade para os usuarios

Hierarquia de Memoria

Registers

Cache

Main memory

Magnetic tape

Magnetic disk

1 nsec

2 nsec

10 nsec

10 msec

100 sec

<1 KB

1 MB

64-512 MB

5-50 GB

20-100 GB

Typical capacityTypical access time

Page 4: Gerenciamento de Memória(2)

Hierarquia de Memoria

Registradores

• Internos a CPU

• Extremamente rapidos

• Otimizacoes de codigo podem mover temporariamente

variaveis para registradores.

• Programas podem dar palpites sobre o que deve ficar

armazenado nos registradores

register int r;

Page 5: Gerenciamento de Memória(2)

Hierarquia de Memoria

Cache

• Internos ou muito proximos a CPU

• Divididos em linhas de cache

• Controlados por hardware

• Cache hit

• Cache miss

Page 6: Gerenciamento de Memória(2)

Hierarquia de Memoria

Memoria Principal

• Random Access Memory (RAM)

• Compromisso entre preco e desempenho

• Armazenamento volatil

Page 7: Gerenciamento de Memória(2)

Hierarquia de Memoria

Disco

Surface 2Surface 1

Surface 0

Read/write head (1 per surface)

Direction of arm motion Surface 3

Surface 5

Surface 4

Surface 7

Surface 6

Page 8: Gerenciamento de Memória(2)

Hierarquia de Memoria

Fitas magneticas

• Utilizadas para copias de seguranca (backups)

• Armazenamento de grandes quantidades de dados

• Acesso sequencial

Page 9: Gerenciamento de Memória(2)

Hierarquia de Memoria

Outros tipos de memoria

• ROM (Read Only Memory)

– rapida e barata

– bootstrap loader esta gravado em ROM

• EEPROM (Electrically Erasable ROM)

– podem ser apagadas (erros podem ser corrigidos)

• CMOS

– dependem de uma bateria

– armazenam relogio e configuracoes

Page 10: Gerenciamento de Memória(2)

Monoprogramacao

(a) (b) (c)

0xFFF …

0 0 0

User program

User program

User program

Operating system in

RAM

Operating system in

RAM

Operating system in

ROM

Device drivers in ROM

mainframes palmtops MS-DOS

Page 11: Gerenciamento de Memória(2)

Multiprogramacao e particoes fixas

(a)

Multiple input queues

Partition 4

Partition 3

Partition 2

Partition 1

Operating system

Partition 4

Partition 3

Partition 2

Partition 1

Operating system

700K

400K

100K

0(b)

Single input queue

200K

800K

Page 12: Gerenciamento de Memória(2)

Modelagem de multiprogramacao

• Quantos processos colocar na memoria?

• Estimativa de uso da CPU

80% I/O Wait

50% I/O Wait

20% I/O Wait

Page 13: Gerenciamento de Memória(2)

Modelagem de multiprogramacao

• Quantos processos colocar na memoria?

• Aposta otimista: 5 processos 80

Page 14: Gerenciamento de Memória(2)

Modelagem de multiprogramacao

• Visao probabilıstica

• Taxa de utilizacao da CPU = 1 - (0.8)n

...

...

...

...

...

Page 15: Gerenciamento de Memória(2)

Modelagem de multiprogramacao

50% I/O wait

80% I/O wait

20% I/O wait100

80

60

40

20

1 2 3 4 5 6 7 8 9 100

Degree of multiprogramming

CP

U u

tiliz

atio

n (in

per

cent

)

Utilizacao da CPU = 1 - pn

Page 16: Gerenciamento de Memória(2)

Analise de Desempenho

JobArrival time

CPU minutes needed

12

3

4

10:0010:10

10:15

10:20

43

2

2

CPU idle

CPU busy

CPU/process

.80

.20

.20

.64

.36

.18

.51

.49

.16

.41

.59

.15

1

2

3

4

0100 15 20 22 27.6 28.2 31.7

2.0 .9

.9

.8

.8

.8

.3

.3

.3

.3

.9

.9

.9

.1

.1 .7

Job 2 starts

1 2 3 4

# Processes

(a)

(c)

(b)

Time (relative to job 1's arrival)

Job 1 finishes

Page 17: Gerenciamento de Memória(2)

Swapping

CPU

Main Memory

Arriving job

Input queue

Admission scheduler

Memory scheduler

Disk

CPU scheduler

Page 18: Gerenciamento de Memória(2)

Swapping

(a)

Operating system

A

(b)

Operating system

A

B

(c)

Operating system

A

B

C

(d)

Time

Operating system

B

C

(e)

D

Operating system

B

C

(f)

D

Operating system

C

(g)

D

Operating system

A

C

Page 19: Gerenciamento de Memória(2)

Relocacao e Protecao

• Relocacao: um programa deve poder rodar em enderecos

fısicos distintos.

• Protecao: um programa nao pode fazer acesso a area de

memoria reservada a outro programa.

Page 20: Gerenciamento de Memória(2)

Relocacao durante a carga

• Todos os enderecos precisam ser identificados e alterados

• Nao resolve o problema da protecao

Page 21: Gerenciamento de Memória(2)

Bits de protecao

1010

1010

1010

0011

0011

O PSW de cada processo deve conter os bits de protecao

Page 22: Gerenciamento de Memória(2)

Registradores base e limite

User program and data

User program and data

Operating System

Address

0xFFFFFFFF

Limit

Base

0(a)

User-2 data

User-1 data

User program

Operating System

Base-2

Limit-2

Limit-2

Limit-1

Base-2

Base-1

(b)

Limit-1

Base-1

Registers when program 1 is running

Registers when program 2 is running

Page 23: Gerenciamento de Memória(2)

Espaco para crescimento

(a) (b)

Operating system

Room for growth

Room for growth

B-Stack

A-Stack

B-Data

A-Data

B-Program

A-Program

Operating system

Room for growth

B

A

Actually in use

Room for growth

Actually in use

Address (hex)FFFF

0000

Stack

Data

Text

Gap

Page 24: Gerenciamento de Memória(2)

Compactacao de memoria

A

B

C

A

B

C

Page 25: Gerenciamento de Memória(2)

Bitmaps e lista de livres

(a)

(b) (c)

A B C D E

8 16 24

Hole Starts at 18

Length 2

Process

P 0 5 H 5 3 P 8 6 P 14 4

H 18 2 P 20 6 P 26 3 H 29 3 X

1 1 1 1 1 0 0 0

1 1 1 1 1 1 1 1

1 1 0 0 1 1 1 1

1 1 1 1 1 0 0 0

Page 26: Gerenciamento de Memória(2)

Atualizacao da lista

becomes

becomes

becomes

becomes

(a) A X B

(b) A X

(c) X B

(d) X

Before X terminates

A B

A

B

After X terminates

Page 27: Gerenciamento de Memória(2)

Algoritmos para alocacao de memoria

• First fit

• Next fit

• Best fit

• Worst fit

Page 28: Gerenciamento de Memória(2)

Problema relacionado

Malloc, free e realloc

void *malloc(size_t size);

void free(void *ptr);

void *realloc(void *ptr, size_t size);

A alocacao de registros dentro de um processo tem

problemas semelhantes:

• administracao de uma lista de livres

• fragmentacao

Page 29: Gerenciamento de Memória(2)

Programas muito grandes

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

memoria?

Page 30: Gerenciamento de Memória(2)

Overlays

dados d1, d2, d3, d4, d5;

f1(); g1(); h1();

f2(); g2(); h2();

f3(); g3(); h3();

main() {

fase_1(); /* funcoes f e dados d1, d2, d3 */

fase_2(); /* funcoes g e dados d1, d2, d4 */

fase_3(); /* funcoes h e dados d1, d2, d5 */

}

Page 31: Gerenciamento de Memória(2)

Memoria Virtual

CPU package

CPU

The CPU sends virtual addresses to the MMU

The MMU sends physical addresses to the memory

Memory management

unit

MemoryDisk

controller

Bus

Memory Management Unit (MMU)

Page 32: Gerenciamento de Memória(2)

PaginacaoVirtual

address space

Physical memory address

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

28K-32K

24K-28K

20K-24K

16K-20K

12K-16K

8K-12K

4K-8K

0K-4K

Virtual page

Page frame

X

X

X

X

7

X

5

X

X

X

3

4

0

6

1

2

Page 33: Gerenciamento de Memória(2)

Mapeamento dos enderecos

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 Present/

absent bit

Page table

12-bit offset copied directly from input to output

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

virtual address (8196)

Outgoing physical address (24580)

110

1 1 0 0 0 0 0 0 0 0 0 0 1 0 0

00 1 0 0 0 0 0 0 0 0 0 0 1 0 0

Page 34: Gerenciamento de Memória(2)

Espaco de enderecamento

• Apenas as paginas ocupadas precisam ser mapeadas

Address (hex)FFFF

0000

Stack

Data

Text

Gap

Page 35: Gerenciamento de Memória(2)

Memoria compartilhada

Data

Texto

Shmem

Pilha

Processo A

Data

Texto

Pilha

Processo B

Shmem

Page 36: Gerenciamento de Memória(2)

Memoria compartilhada

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