UFRJ IM - DCC Sistemas Operacionais I Unidade III Memória Primária 29/04/204 Prof. Valeria M. Bastos
ORGANIZAÇÃO DA UNIDADE Processador - Escalonamento Memória Primária Fundamentos Formas de Particionamento Swapping Técnicas de Overlay Memória Virtual 2
Fundamentos Gerenciar a memória consiste na tarefa de subdividir e alocar espaços para acomodar os processos em execução. Espaços são requeridos (alocados) e liberados, a medida que os processos são executados. Os espaços de memória ocupados pelos processos precisam ser preservados (protegidos). Os processos podem ter a necessidade de aumentar o espaço ocupado ou mesmo compartilhar espaço com outros. 3
Organização e Funcionalidades Compartilhamento Proteção Alocação Memória Re-alocação Organização Lógica Organização Física 4
Organização Física Endereço 0 Endereço Endereço 2 Endereço 3 M bits M bits M bits M bits Memória de Acesso Direto ~ ~ ~ ~ N células Endereço N - 2 Endereço N - Todas as células têm a mesma quantidade M de bits Bit Bit 2 Bit m- 5
Organização Física TAG Dados M bits M bits M bits M bits Memória de Acesso Associativo ~ ~ ~ ~ N células Bit Bit 2 Bit m- 6
Organização Lógica Consiste na forma como a memória é vista (particionada) logicamente pelo SO. Contíguo Simples Estático Formas de Particionamento: Estático Relocável Dinâmico Paginado Segmentado 7
Particionamento Contíguo Simples Interrupção do Processo Dispositivo de Drivers Seqüência de Job Monitor Interpretador de linguagem de Controle Limite Área de Programa do Usuário 8
Particionamento Estático Gerenciamento de Recursos I Processos em fila externa para execução X A C Y SO Partição # Partição #2 Limite Superior da partição # Limite Inferior da partição # W Z Partição #3 yendereços absolutos são gerados de forma estática - Linkeditor ou Carregador ysimples implementação ybaixo desempenho yfragmentação interna 9
Particionamento Estático Relocável Processos em fila externa para execução X A C 6Kb.5Kb 3Kb ou SO Partição # 2Kb Partição #2 8Kb Partição #3 5Kb Limite Superior da partição # Limite Inferior da partição # Partições de tamanho fixo yendereçamento relativo yendereços absolutos dinâmicos, calculados em tempo de execução ybaixo desempenho yfragmentação interna 0
Endereço Relativo x Absoluto Gerenciamento de Recursos I Loader Endereço Relativo Base Register Bloco Controle Processo Bounds Register Somador Compara Endereço Absoluto Trap para o SO (caso de erro de acesso) Programa Dados Pilha Imagem do processo em memória
Particionamento Dinâmico Processos em fila externa para execução C A X Kb 3Kb SO 3-5K Partições de tamanho variável ya quantidade e o tamanho das partições são variáveis ypara cada processo, é alocado o espaço exato que for necessário (não tem fragmentação interna) yeventualmente, são criados buracos de tamanho pequeno, sem utilidade de uso (fragmentação externa) yos processos, de tempos em tempos, precisam ser re-alocados para eliminar os buracos (compactação) 2
Particionamento Dinâmico - Exemplo SO 28K SO SO SO Processo 320K Processo 320K Processo 320K 896K Processo 2 224K Processo 2 224K 576K 352K Processo 3 288K 64K Após carregar os três processos, um espaço de 64K fica disponível. Assim, não sobra espaço suficiente para um Processo 4 de 28K. Eventualmente, todos os três processos poderão estar bloqueados. Neste caso, o SO pode retirar o Processo 2 (o mais adequado) para trazer o Processo 4 (= 28K) 3
Particionamento Dinâmico - Exemplo... SO SO SO Processo 320K Processo 320K Processo 320K Processo 2 224K 224K Processo 4 28K Processo 3 288K Processo 3 288K Processo 3 288K 64K 64K 64K (*) Colcha de retalhos quando a memória fica repleta de pequenos espaços ociosos espalhados de forma não contígua. 4
Esquemas de Alocação Algoritmo First-Fit Procura a partir da memória o primeiro bloco livre que sirva Pode criar muitos pequenos blocos livres no início da memória Considerado o algoritmo mais rápido Gerenciamento de Recursos I O S.O. deve escolher o bloco de memória livre onde será colocado o processo Algoritmo Worst-Fit Escolhe o maior bloco livre a partir início da memória. Tende deixar buracos maiores que o Best-fit Algoritmo Next-Fit Escolhe o próximo bloco livre a partir da última alocação em que caiba o processo Tende a acabar com o grande bloco livre no final da memória Algoritmo Best-Fit Escolhe o menor bloco que comporte o processo Cria muitos buracos pequenos, exigindo mais compactações Oferece o pior desempenho 5
Particionamento Dinâmico - Buddy System a memória é organizada em blocos de 2 k ; L K U 2 L menor bloco que pode ser alocado 2 U maior bloco (tamanho da memória) reduz problema da colcha de retalhos (re-agrupamento) insere fragmentação interna 6
A 00K Gerenciamento de Recursos I Particionamento Dinâmico - Buddy System A=28K MB 28K 256K 52K B 240K A=28K 28K B=256K 52K C 44K A=28K C=64K 64K B=256K 52K D 232K A=28K C=64K 64K B=256K D=256K 256K B 240k A=28K C=64K 64K 256K D=256K 256K A 00K 28K C=64K 64K 256K D=256K 256K E 75K E=28K C=64K 64K 256K D=256K 256K C 44K E=28K 28K 256K D=256K 256K E 75K 52K D=256K 256K D 232K MB 7
Particionamento Paginado Gerenciamento de Recursos I A memória é particionada em pedaços de tamanho igual, assim como os processos; Os pedaços que compõem os processos são chamados de páginas e os pedaços de memória são as molduras de página (frames); Quando um processo é carregado, suas páginas são alocadas em quaisquer molduras disponíveis, não necessariamente contíguas; O S.O. precisa manter uma tabela de páginas por processo e uma lista de molduras disponíveis. 8
0 2 3 4 5 6 7 8 9 0 2 3 4 5 frames disponíveis 0 2 3 4 5 A.0 A. A.2 A.3 A.0 A. A.2 A.3 B.0 B. Gerenciamento de Recursos I Particionamento Paginado - Exemplo 6 7 8 9 0 2 3 4 Carrega Processo A 0 2 3 4 5 6 7 8 9 0 2 3 4 B.2 Carrega Processo B 0 2 3 4 5 6 7 8 9 0 2 3 4 A.0 A. A.2 A.3 B.0 B. B.2 C.0 C. C.2 C.3 Carrega Processo C 0 2 3 4 5 6 7 8 9 0 2 3 4 A.0 A. A.2 A.3 C.0 C. C.2 C.3 0 2 3 4 5 A.0 A. A.2 A.3 D.0 D. D.2 C.0 C. C.2 C.3 D.3 D.4 4 Retira Carrega Processo B Processo D 9 6 7 8 9 0 2 3
Tabelas de Páginas Gerenciamento de Recursos I Precisa ser mantida uma para cada processo, de forma a associar a página do processo com o frame correspondente em memória utilizado. 0 0 0 --- --- 2 2 2 --- 3 3 Processo B Processo A 0 0 7 0 4 2 3 8 9 0 Processo C 2 3 4 5 6 2 Processo D 3 4 Lista de frames livres 20
Endereço Lógico Exemplo: 6-bit endereço lógico 06-bit página # 0-bit offset 0 0 0 0 0 0 0 0 Deslocamento dentro de cada página Número da página 2
Tradução Endereço Lógico Físico Tradução em Paginação 6-bit endereço lógico 06-bit página # 0-bit offset 0 0 0 0 0 0 0 0 (*) Quantos frames e tamanho da MP? Tradução 0 2 0 0 0 0 0 0 0 0 0 0 Tabela de página de processo Página está no frame 6 da memória 0 0 0 0 0 0 0 6-bit endereço físico (absoluto) 22
Particionamento Segmentado Cada programa é subdividido em blocos de diferentes tamanhos, chamados segmentos. Quando um processo é carregado para a memória principal, cada segmento diferente pode ocupar qualquer lugar. O SO mantém uma tabela de segmentos de cada processo. Cada entrada contém: o início do endereço físico daquele segmento o tamanho do segmento (por proteção) Apresenta fragmentação externa 23
Tradução Endereço Lógico Físico Tradução em Segmentação 6-bit endereço lógico 04-bit segmento# 2-bit offset 0 0 0 0 0 0 0 0 0 0 0 Tamanho Base 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Tabela de segmento de processo + 0 0 0 0 0 0 0 0 0 0 0 0 6-bit endereço físico 24
Endereço Relativo = 502 00000 000 Processo do usuário (2700 Bytes) Particionamento Tradução de Endereços Endereço Lógico Página =, Offset = 478 00000 000 Página 0 Página Página 2 478 Paginação Page Size = K Fragmentação Interna Gerenciamento de Recursos I Endereço Lógico Segmento =, Offset 752 000 0000000 Seg gmento 0 Segmento 752 Segmentação Fragmentação Externa 25
Vantagens da Paginação e Segmentação Maior flexibilidade na alocação de espaços em memória (tabelas de páginas e de segmentos livres) Paginação Segmentação Endereçamento não contíguo em memória Baixa fragmentação interna Correlação com a lógica do programa 26
Swapping Gerenciamento de Recursos I Memória Disco A B Swap out B X Z Swap in Z 27
Overlay Gerenciamento de Recursos I programa - monolítico SO 480K programa - modularizado 32K main R.A R.B R.C 200K 95K 85K 0K residente 28
Hierarquia de Memória - Flexibilidade: Mais barato Maior capacidade Mais lento - Desempenho: Maior freqüência de acesso 29
Hierarquia de Memória Memória Cache tempo de resposta desempenho mapeamento por hardware pequena capacidade custo/bit elevado Memória Principal transparência flexibilidade mapeamento por software Capacidade elevada custo/bit baixo Memória Virtual 30
Memória Cache É usada com a finalidade de aumentar o desempenho (reduzir o tempo de resposta) da memória. É transparente ao S.O. Tem capacidade de armazenamento bem menor que a Memória Principal Segue os princípios similares aos da Memória Virtual Motivação: o programa faz constantes acessos à memória os processadores são mais rápidos que as memórias convencionais os acessos são geralmente localizados (localidade de referência) 3
O Sistema Cache Gerenciamento de Recursos I A informação é sempre buscada primeiro na Cache. Quando não está na Cache é carregada para ela. É É pelo menos uma ordem de grandeza mais rápida que a memória principal. CPU Cache Memória Principal Transferência de palavra Transferência de bloco 32
Tamanho da Cache Gerenciamento de Recursos I O Sistema Cache Caches pequenas têm desempenho ruim Organização Física acesso associativo acesso direto Tamanho do bloco a quantidade de dados trocados entre a cache e memória principal blocos maiores: maior taxa de acertos devido ao princípio da localidade blocos ainda maiores: menor taxa de acertos já que a probabilidade de acesso a uma palavra não carregada por causa do bloco maior é maior 33
Função de mapeamento Gerenciamento de Recursos I O Sistema Cache indica qual slot um bloco irá ocupar na cache quanto mais flexível, maior o custo de hardware para localizar um bloco Algoritmo de substituição indica o bloco a ser substituído algoritmo preferencial: Least-Recently-Used (LRU) Política de escrita quando atualizar a memória principal a cada escrita: mais acessos à memória (write-through) na substituição: problemas de consistência (write-back) 34
Mapeamento Memória x Cache 2 bits 4 bits 6 bits Tag Índice Seqüencial Memória Principal 00 0000 000000 00 0000 Bloco (K palavras) Número slot Tag 0000 Cache Bloco Endereços de memória 000000 Bloco Tamanho Bloco (K palavras) Tamanho Palavra 35
Operação de Leitura - Exemplo Início Acessa a Recebe endereço memória principal da CPU MISS Aloca slot cache para Cache O bloco está na cache? Bloco da MP Entrega palavra MP HIT Sim para a CPU Busca palavra e entrega à CPU Transfere bloco da MP para o slot da cache Fim 36
Tempo Médio de Acesso T +T 2 T 2 Média de Tempo de Acesso T T s Tempo médio T Tempo da Cache T 2 Tempo da MP 0 Taxa de Hit T s = H T + ( - H) (T + T 2 ) = T + ( - H) T 2 37
Medidas de Eficiência a) Eficiência de Acesso: b) Eficiência de Custo: T T C S + C 2 S 2 T s = T + ( Hit) T 2 C s = S + S 2 Eficiência de acesso menor maior C x = custo / bit S x = tamanho em bits 0 38
Níveis de Memória Cache 39