Escolar Documentos
Profissional Documentos
Cultura Documentos
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
mainframes
palmtops
MS-DOS
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
.9 .9
.8 .8 .8
.3 .3 .3 .3
Job 1 finishes .9 .9 .9 .1 .7 .1
10
27.6 28.2
31.7
Swapping
CPU
Admission scheduler
Memory scheduler
Disk
Swapping
Time C C C C C
B A
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
Bits de proteo ca
1010 1010 1010 0011 0011 O PSW de cada processo deve conter os bits de proteo ca
Limit
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
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
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
Overlays
dados d1, d2, d3, d4, d5; f1(); f2(); f3(); g1(); g2(); g3(); h1(); h2(); h3();
/* 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
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
Page table
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
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