SOP - TADS Gerência de Memória Cap 3 Tanenmbaum

Documentos relacionados
SSC0640 Sistemas Operacionais I

GERENCIAMENTO DE MEMÓRIA

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

MEMÓRIA LÓGICA E FÍSICA (1)

Infra-Estrutura de Software IF677

Capítulo 4 Gerenciamento de Memória

AULA Nº 11 SISTEMAS OPERACIONAIS. Técnicas de Memória Virtual

Sistemas Opera r cionais Gerência de Memória

Fundamentos de Sistemas Operacionais

Memória virtual. Pedro Cruz. EEL770 Sistemas Operacionais

GERÊNCIA DE MEMÓRIA. INF009 Laboratório de Sistemas Operacionais

Capítulo 8: Memória Principal. Operating System Concepts 8 th Edition

Sistemas Operacionais. - Gerência de Memória -

Sistemas de Computação. Gerenciamento de memória

Gerenciamento de Memória

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III Memória Primária. 29/04/2014 Prof. Valeria M. Bastos

CURSO TÉCNICO EM INFORMÁTICA SISTEMAS OPERACIONAIS II MEMÓRIA VIRTUAL

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I

Substituição de Páginas

Capítulo 6 Nível do Sistema Operacional

Gerência de Memória. Paginação

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

Gerência de Memória. Endereçamento Virtual (1) Paginação. Endereçamento Virtual (2) Endereçamento Virtual (3)

Segmentação de Memória

Segmentação com paginação Intel 386. Esquema de tradução de endereço Intel 386

Sistemas Operacionais Memória Virtual

Gerência de Memória. Execução de um Programa (1) Introdução. Introdução


Introdução. Considerações:

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Organização e Arquitetura de Computadores

Gerência de Memória. Gerência de Memória Introdução e Particionamento. Novo capítulo. Aulas anteriores. Plano da aula. Memória lógica & física

AULA 14 - Memória Virtual

SSC0640 Sistemas Operacionais I

Gerência da Memória. Adão de Melo Neto

Sistemas Operacionais

Sistemas Operacionais I Memória Virtual

Gerenciamento de memória

Fundamentos de Sistemas Operacionais

Durante a evolução das arquiteturas de computadores e principalmente dos Sistemas Operacionais, muitas tecnologias tiveram que ser aprimoradas para

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios Parte 2

Infra-Estrutura de Software

Algoritmos de Substituição de Páginas. Igor Gustavo Hoelscher Renan Arend Rogério Corrêa Medeiros

Gerência de memória III

Infra-Estrutura de Software

Sistemas Operacionais

SSC0640 Sistemas Operacionais I

Gerência de memória II

Sistemas de Informação. Sistemas Operacionais

Gerenciamento de Memória

Gerenciamento de Memória

Sistemas Operacionais

Gerenciamento de Memória

Gerenciamento de Memória

Infra-Estrutura de Software

Sistemas Operacionais

Sistemas operacionais P A G I N A Ç Ã O D E M E M Ó R I A

Gerência de Memória. Algoritmos de Substituição de Páginas. (Aula 20)

Gerenciamento de Memória

ARQUITETURA DE COMPUTADORES

Sistemas Operacionais

Arquitetura e Organização de Computadores

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

SISTEMAS OPERACIONAIS

Gestão de Memória. Espaço de Endereçamento

Arquitetura de Sistemas Operacionais

Sistemas Operacionais Aula 12: Gerência de Memória. Ezequiel R. Zorzal

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Instituto de Ciência e Tecnologia - ICT

Sistemas Operacionais. Rômulo Silva de Oliveira Alexandre da Silva Carissimi Simão Sirineo Toscani

Memória Virtual. Ciclo 4 AT2. Prof. Hermes Senger

Sistemas Operacionais

Sistemas Operacionais. - Gerência de Memória -

Organização de um Sistema Operativo

Sistemas Operacionais. Gerenciamento de Memória

Gerenciamento de Memória

Sistemas Operacionais. Prof. André Y. Kusumoto

Arquitetura e Organização de Computadores

SISTEMAS OPERACIONAIS. Gerência de Memória Apostila 7

Divisão da lacuna em espaços na base 2: Eficiente quanto à velocidade e Ineficiente quanto à fragmentação.

Sistemas Operacionais

Gestão de Memória. Espaço de Endereçamento

LISTA DE EXERCICIOS 2

Fundamentos de Sistemas Operacionais. Gerência de Memória. Prof. Edwar Saliba Júnior Março de Unidade Gerência de Memória

Gerência de Memória. Gerência de Memória Virtual. Gerência de Memória. Gerência de Memória. Gerência de Memória. Gerência de Memória 17/04/2017

Administração de Memória

SOP - TADS Fundamentos de Sistemas Operacionais

Prof. Kleber R. Rovai

Gerenciamento de Memória

Gerência de Memória. Aspectos de Projeto

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III Memória Virtual. 26/05/2014 Prof. Valeria M. Bastos

EA075 Memória virtual

Sistemas Operacionais

Memória virtual. Sistemas de Computação

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

Aula 10 Gerenciamento de Memória

Capítulo 7 Gerência de Memória

Sistemas Operacionais

Transcrição:

SOP - TADS Gerência de Memória Cap 3 Tanenmbaum Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Cronograma Conceitos básicos Alocação contígua de memória 2/48 1

Conceitos Básicos 3 Introdução Alguns tópicos vistos de SO: Comunicação interprocessos Gerenciamento das tarefas Impasses Se são tratados ou não Como são tratados Escalonamento dos processos Qual processo executa em qual instante Quanto tempo o processo vai executar Gerência de E/S Como as operações de E/S são tratadas pelo SO 4 2

Introdução Outro tópico importante dos SO é a gerência de memória Como os processos são organizados na memória? Como um processo acessa um espaço de memória? O que é um espaço de endereçamento? 5 Introdução A maioria dos sistemas atuais são multiprogramados Processos concorrendo pelo processador Eles devem aguardar em algum lugar para poderem executar Ficam residentes na memória Para que se tenha eficiência com a multiprogramação é preciso gerenciar a memória de forma adequada A importância do gerenciamento é maior quando as aplicações aumentam de tamanho A gerência basicamente define: Quais partes da memória estão em uso e quais não estão Alocar mais memória aos processos quando eles precisarem e liberar quando não utilizarem 6 3

Hierarquia de memória O sonho dos programadores: Ter memória infinitamente grande Acesso rápido Não volátil Não apagar quando a máquina desligada Baixo custo Isto não é possível Define-se uma hierarquia de memórias O SO deve abstrair a hierarquia em um modelo útil e gerenciar esta abstração 7 Hierarquia de memória A gerência de memória envolve basicamente memória principal e disco Quando não se tem auxilio de disco: Tratar partições fixas e variáveis de memória Com o auxilio do disco Técnicas de swapping e memória virtual 8 4

Os programas e a memória Programador Ao escrever um programa em C (por exemplo) Usa referências a entidades abstratas Não precisa manipular endereços de memória explicitamente Processador acessa endereços de memória Para buscar instruções e operandos Escrever resultados de operações Cada processo tem o seu espaço de endereçamento Conjunto de endereços que um processo pode usar para endereçar a memória 9 Os programas e a memória Os endereços das variáveis e trechos de códigos usados em um programa devem ser definidos em algum momento entre a escrita e a execução: Durante a edição O programador escolhe a posição de cada variável e do código Durante a compilação O compilador escolhe as posições das variáveis na memória Durante a ligação O compilador gera símbolos que representem as variáveis, mas não define o endereço final Durante a carga Um carregador (loader) é responsável por carregar os códigos do processo e definir os endereços de memória utilizados Durante a execução Os endereços emitidos pelo processador durante a execução, são traduzidos e convertidos em endereços efetivos acessados na memória real 10 5

Memória lógica vs Memória física Ao executar uma sequência de instruções o processador escreve endereços no barramento de endereços do computador Seja para buscar instruções e operandos Ou para ler e escrever valores e posições de memória 11 Memória lógica vs Memória física Memória lógica Visão que um processo tem da memória Os endereços gerados por um processo são endereços lógicos Está relacionada a lógica do programa Memória física Implementados pelos chips de memória Os endereços físicos correspondem aos endereços reais de memória Os endereços físicos e lógicos não são necessariamente iguais Quando forem diferentes, o mapeamento é feito em hardware com ajuda do SO 12 6

Memória lógica vs Memória física Mapeamento entre endereços lógicos e físicos é realizado pela MMU (Memory Management Unit) Unidade de Gerenciamento de Memória Pode fazer parte do processador ou ser um dispositivo separado O SO carrega tabelas de tradução na MMU 13 Memória lógica vs Memória física Funcionamento básico da MMU Interrupção: Se uma tentativa for feita a um endereço inválido, a MMU gera uma interrupção 14 7

Alocação de memória física Existem estratégias diferentes para alocar a memória física Como os processos vão utilizar os endereços Pode-se caracterizar duas formas básicas: De forma contígua De forma não contígua 15 Alocação contígua de memória 16 8

Estratégia de alocação de memória simples Método mais simples Reserva um espaço de memória para o SO O restante é designado ao processo Utilizado em sistemas monoprogramados Mecanismo sem troca de processos ou paginação O acesso é feito diretamente a memória A memória pode ser organizada de três formas simples: 17 Alocação contígua particionada A estratégia simples não serve para a multiprogramação O espaço de memória é designado a um processo Solução: Definir partições na memória e alocar uma partição para cada processo Uma partição é um espaço contíguo de memória O grau de multiprogramação de um sistema é dado pelo número de partições de memória disponíveis O partições podem ser: Estáticas Tamanhos fixos Dinâmicas Tamanhos variáveis 18 9

Alocação contígua particionada Partições estáticas A memória é dividida em partições de tamanho fixo As partições podem ter tamanhos diferentes entre si Os processos devem ser alocados em uma partição que tenha tamanho suficiente para alocá-los Se um programa for maior que todas as partições disponíveis Não executa Podem existir filas separadas para cada partição Cada processo entra em uma fila para a partição que melhor se ajustar Podem haver partições vazias e outras com concorrência Pode ser uma fila única para todas as partições Havendo espaço suficiente o processo é colocado em uma partição Partições grandes podem ser desperdiçadas com processos pequenos Usar partições fixas promove fragmentação interna 19 Desperdício de espaço ao final da partição Alocação contígua particionada Partições estáticas 20 10

Alocação contígua particionada Relocação e proteção Se os processos são carregados em diferentes partições a cada execução como ficam os endereços que eles geram? Código absoluto: Executam sempre na mesma partição, gera sempre os mesmos endereços Código relocável: Os endereços gerados pelo programa são ajustados para a partição em que ele é carregado Durante a carga: Endereços recalculados e substituídos Em tempo de execução: Registradores fazem a relocação Em termos de proteção: Como evitar que um processo acesse o espaço de outro Uso de registradores base e limite base = inicio da partição limite = final da partição 21 Alocação contígua particionada Partições dinâmicas As partições são criadas com um tamanho necessário para acomodar os processos Como objetivo de eliminar a fragmentação interna A memória é divida entre partições (alocadas a processos) e lacunas (espaços livres) Uma nova partição é criada em uma lacuna Gera outra lacuna Problema: gera fragmentação externa Pequenas lacunas que não serão alocadas Solução é fazer a compactação de memória (desfragmentação): Deslocar os processos e combinar as lacunas Gera overhead em tempo de execução 22 11

Alocação contígua particionada Partições dinâmicas Dimensionamento: Alocar as partições com alguma folga, permitindo a alocação dinâmica de memória 23 Alocação contígua particionada Partições dinâmicas Como escolher a lacuna onde vai ser criada a partição do processo? Existem alguns algoritmos: First fit Utiliza a primeira lacuna disponível Best fit A lacuna que melhor se ajusta é utilizada Tende a deixar lacunas muito pequenas Worst fit A maior lacuna é utilizada Gera lacunas maiores, mas prejudica os processos grandes Next fit (circular) Como o first fit, mas guarda a ultima posição na lista de lacunas Quick fit (encaixe mais rápido) Mantém listas de tamanhos comuns de partições É dispendioso descobrir quais são os segmentos de memória disponíveis para poder concatená-los 24 12

Alocação contígua particionada Algoritmos para alocação de partição 25 Alocação contígua particionada Gerência de espaço livre Ao usar partições dinâmicas, o SO precisa controlar as áreas de memória livres e as ocupadas Duas maneiras básicas: Usando mapa de bits Problema: busca de 0s consecutivos no mapa para encontrar uma partição disponível Usando listas encadeadas Ordenada por endereços de memória (uso rápido e simples) 26 13

Alocação contígua particionada Gerência de espaço livre Uso de memória por processos e lacunas Mapa de bits Lista encadeada 27 Alocação contígua particionada Gerência com listas encadeadas Quando um processo termina, as lacunas vizinhas devem ser combinadas Como ficariam as listas antes e depois? 28 14

Swapping Nem sempre há memória física para acomodar todos os processos ativos Solução: Manter parte desses processos em disco Existem duas formas de se fazer isso: Swapping (troca de processos): Processos inteiros são trazidos da memória para o disco e vice-versa Memória virtual: processos ativos estão parte na memória principal e parte no disco Útil se existem trechos de memória que não são efetivamente usados 29 Swapping Swapping vs memória virtual 30 15

Swapping Exemplo de swapping Quatro processos A,B,C,D 31 Problemas da alocação contígua Um dos problemas é a fragmentação Fragmentação interna: o processo não usa todo espaço da partição Partição fixa Fragmentação externa: Lacunas não utilizáveis Partição dinâmica Memória livre indisponível para processos Programas usados extrapolam a memória física disponível Programas enormes com muitas funcionalidades quase não utilizadas Pode afetar processos individuais ou o todo Problema pode ser agravado pela fragmentação Solução: Usar alocação não contígua 32 16

Alocação não contígua de Memória 33 Alocação não contígua de Memória Como podemos lidar com o problema de programas serem maiores que a memória física? A primeira solução foi o uso de overlays O programador dividia o programa em módulos que eram carregados e descarregados da memória semimanualmente Nem todo mundo era bom o suficiente para poder fazer isso 34 17

Alocação não contígua de Memória A solução mais definitiva veio com o uso de memória virtual O espaço de endereçamento lógico (dos processos) é mapeado em um espaço de endereçamento físico Este mapeamento permite usar regiões não contíguas na memória física Nem todo o espaço de endereçamento lógico precisa estar mapeado na memória física Apenas as partes efetivamente usadas são mantidas na memória, as demais aguardam em disco e são carregadas quando necessário 35 Alocação não contígua de Memória Variações de Memória Virtual Paginação Segmentação Segmentação Paginada 36 18

Alocação não contígua de Memória Memória virtual com paginação A memória é dividida em blocos de tamanho fixo Memória lógica: páginas [virtuais] Memória física: molduras de páginas (page frames) ou página física Os tamanhos das páginas (física e virtual) são idênticas O que difere são o número de páginas 37 Alocação não contígua de Memória Memória virtual com paginação O mapeamento entre a memória lógica e a memória física é dada pela tabela de páginas Quem faz a tradução de endereços lógicos em físicos é a MMU Utiliza a tabela de páginas O uso de paginação elimina a fragmentação externa e reduz a fragmentação interna 38 19

Alocação não contígua de Memória Localização e função da MMU 39 Alocação não contígua de Memória Endereçamento virtual vs endereçamento físico Imagine um sistema com as seguintes características: Espaço de endereçamento virtual: 64KB Espaço de endereçamento físico: 32KB Tamanho das páginas: 4KB Tipicamente esse valor varia entre 512 bytes e 64KB Quantas páginas virtuais e físicas serão necessárias? Virtuais: 64/4 = 16 páginas Físicas: 32/4= 8 páginas Obviamente algumas páginas virtuais não estarão associadas a páginas físicas 40 20

Alocação não contígua de Memória Endereçamento virtual vs endereçamento físico 41 Alocação não contígua de Memória Falta de página Na tabela de páginas um bit presente/ausente indica quais páginas estão mapeadas na memória Quando for referenciado um endereço que não está mapeado na memória física, ocorre um falta de página (page fault) A MMU gera uma interrupção SO carrega a página para memória física Se a memória está cheia, escolhe uma para remoção» Existem algoritmos para substituição de páginas SO atualiza a tabela de páginas e retorna ao processo Instrução interrompida é reiniciada 42 21

Alocação não contígua de Memória Operação interna da MMU Dado um endereço de entrada, em qual entrada na tabela ele se encontra? Qual o deslocamento neste endereço? Qual a posição real na memória? 43 Alocação não contígua de Memória Tabela de Páginas Endereços virtuais: Número de página + deslocamento Endereços físicos: Número da moldura + deslocamento A tabela de páginas mapeia páginas em molduras No exemplo anterior: 12 bits para deslocamento (páginas de 2 12 bytes= 4KB) 4 bits para o número da página (2 4 = 16 páginas) 3 bits para o número da moldura (2 3 = 8 páginas) Endereços lógicos têm 12+4 bits = 16 bits (64KB) Endereços físicos têm 12+3 bits = 15 bits (32KB) 44 22

Alocação não contígua de Memória Tabela de Páginas Um dos desafios para sistemas de paginação é definir o tamanho da tabela de páginas Quantas entradas são requeridas para sistemas com endereços de 32 bits e páginas de 4 KB Qual o espaço ocupado por essa tabela? Outro desafio: o acesso à tabela deve ser rápido Porque a tabela é usada em todo o acesso a memória Duas soluções simplistas: A tabela de páginas ser armazenada na memória Problema: desempenho de acesso Tabela de páginas em registradores: Problema: custo 45 Alocação não contígua de Memória Entradas nas tabelas de páginas Tamanho comum de uma entrada: 32 bits Campos de uma entrada (típica) Número da moldura de página bit presente(1)/ausente(0) Acesso a página com este bit em 0 causa falta de página bit de proteção: leitura-escrita (0)/leitura (1) Existem esquemas mais sofisticados Modificada (sujo): (1) indica que a página foi escrita Referenciada: (1) indica que a página foi referenciada Cache desabilitado: (1) indica que a página não pode ser mantida em cache 46 23

Alocação não contígua de Memória Tabela de páginas multiníveis Uma solução para tratar o tamanho das tabelas de páginas é o uso de tabelas de páginas multiníveis O número de página é subdividido em dois ou mais índices de tabelas de páginas distintas Ex. sistema de 32 bits com páginas de 4 KB 20 bits disponíveis para o número de páginas Esses bits podem ser divididos em 10+10 bits» Tabela de páginas principal com 2 10 = 1024 entradas» Cada entrada aponta para uma tabela com 2 10 = 1024 entradas» As entradas da 2ª tabela apontam para as molduras de páginas Apenas as tabelas de páginas em uso precisam ficar na memória As demais aguardam no disco para quando forem necessárias 47 Alocação não contígua de Memória 48 24

Alocação não contígua de Memória Memória Associativa (TLB) As tabelas de páginas invariavelmente são mantidas na memória devido ao seu tamanho Isso gera impacto no desempenho A cada referência a memória dois acessos são necessários Um para verificar a posição real (moldura) e um para buscar o dados na moldura Afeta a própria busca de uma instrução Felizmente, na prática os programas tendem a referenciar um número reduzido de páginas em um dado período Isso permite armazenar as entradas mais usadas em um conjunto de registradores na MMU TLB (translation lookside buffer) 49 Alocação não contígua de Memória Funcionamento da TLB Uma página primeiro é buscada na TLB Se ocorre um acerto (hit), só é feito um acesso a memória Se ocorre um erro (miss), dois acessos são efetuados Nesse caso, a TLB é atualizada com os dados obtidos na tabela de páginas em memória (buscada) Taxas de acerto típicas ultrapassam 99% 50 25

Alocação não contígua de Memória Exemplo de TLB Válida Página Virtual Modificada Proteção Moldura da página 1 140 1 RW 31 1 20 0 R X 38 1 130 1 RW 29 1 129 1 RW 62 1 19 0 R X 50 1 21 0 R X 45 1 860 1 RW 14 1 861 1 RW 75 51 Alocação não contígua de Memória Impacto da TLB no desempenho Seja t tlb o tempo de acesso à TLB, e t mem o tempo de acesso à memória Para uma taxa de acerto h o tempo médio de acesso a memória é: 52 26

Alocação não contígua de Memória Impacto da TLB no desempenho Seja t tlb = 20ns, e t mem = 100 ns 20 100 120 20 100.2 220 Se a taxa de acerto for 85% (h = 0,85) 0,85 120 0,15 220 135 Se a taxa de acerto for 99% (h = 0,99) 0,99 120 0,01 220 121 53 4, 5, 8,10,11,14,19 Exercícios 54 27

Alocação não contígua de Memória Algoritmos de substituição de páginas Quando ocorre a falta de página é necessário fazer uma escolha Qual página deve ser removida para que a faltante seja mapeada? Alocação de espaço para a página ser trazida para a memória A página modificada deve primeiro ser salva Se não tiver sido modificada é apenas sobreposta Para que não se tenha retrabalho é melhor escolher uma página que não seja muito usada Se for escolhido uma muito usada, provavelmente deve-se trazer ela de volta 55 Alocação não contígua de Memória Algoritmo ótimo Seria a forma ideal Vai substituir a página mais a frente possível, ou seja, aquela que será usada mais tarde É ótimo, mas não realizável Como saber qual a próxima instrução a ser executada, qual a ordem das instruções? Pode-se fazer estimativas Para cada processo registrar o uso de páginas em suas execuções anteriores, assim é possível prever qual página deve ser retirada Isso é custoso, portanto, impraticável 56 28

Alocação não contígua de Memória Algoritmo Não Usada Recentemente (NUR) Cada página tem dois bits Referenciada (R) 1 indica que foi feita uma referência à página Modificada (M) 1 indica que os dados da página foram modificados As páginas são classificadas: Classe 0: não referenciada, não modificada Classe 1: não referenciada, modificada Classe 2: referenciada, não modificada Classe 3: referenciada, modificada NUR remove página aleatoriamente Da classe de ordem mais baixa 57 Alocação não contígua de Memória Algoritmo FIFO Mantém uma lista encadeada de todas as páginas na memória A página mais antiga está na cabeça da lista A ultima página a chegar na memória vai ao final da lista Ao ocorrer a falta de página: Remove a página na cabeça da lista A nova página é inserida ao final da lista Principal desvantagem: A página que está a mais tempo na memória pode ser a mais utilizada (usada com frequência) 58 29

Alocação não contígua de Memória Algoritmo da Segunda Chance (SC) Modificação do algoritmo FIFO Avalia o bit R para ver se a página foi utilizada (referenciada) Se não foi referenciada (está em 0) a página é retirada, se o bit está em 1, a página é colocada no final da fila 59 Alocação não contígua de Memória Algoritmo do relógio Lista circular, um ponteiro é direcionado para as posições Também avalia o bit R, se for 0 a nova página é inserida no local, se for 1, transforma em 0 e move o ponteiro para a próxima posição 60 30

Alocação não contígua de Memória Algoritmo Menos Recentemente Usada (MRU) Uma aproximação do algoritmo ótimo Imagina-se que as páginas referenciadas nas ultimas instruções serão as próximas referenciadas As páginas que não foram referenciadas nas ultimas instruções provavelmente não serão as próximas 61 Alocação não contígua de Memória Menos Recentemente Usada (MRU) Assume-se que as páginas que foram utilizadas recentemente logo serão usadas novamente Na falta de página, retira da memória a página que há mais tempo não é usada Mantém uma lista encadeada de páginas Páginas mais recentemente usadas no inicio da lista, as menos usadas ficam no final A cada referência a memória a lista é atualizada, a página referenciada é inserida no começo da lista Uma forma alternativa é manter um contador em cada entrada na tabela de página A cada referência o contador é incrementado Escolhe a página com contador de menor valor O contador é zerado periodicamente 62 31

Alocação não contígua de Memória Implementação de MRU em hardware Utiliza uma matriz nxn onde n é número de páginas Ao acessar a página i coloca a linha i em 1, e a coluna i em 0 A página correspondente a linha com menor valor binário é a mais antiga Imagine um sistema com 4 páginas e referências as páginas: 0,1,2,3,2,1,0,3,2,3 63 Alocação não contígua de Memória Simulação de MRU em software (1/2) Uma primeira aproximação de MRU seria o algoritmo NFU (não frequentemente usado) Associa um contador a cada página, inicialmente 0 A cada interrupção de relógio, percorre a lista de páginas e adiciona o bit R ao contador da página A página que tem o menor contador é a mais antiga Problema: Longa memória Páginas que foram intensamente referenciadas no passado têm contadores de valores elevados, mesmo que não sejam mais usadas Páginas recém carregadas, mesmo que estejam sendo muito usadas, têm contadores mais baixos e acabam sendo escolhidas 64 32

Alocação não contígua de Memória Simulação de MRU em software (2/2) Outra alternativa é o algoritmo do envelhecimento (aging) O contador é deslocado um bit para direita O bit R é copiado para o bit mais a esquerda Quem é mais antigo a cada interrupção? 65 Alocação não contígua de Memória Revisão dos Algoritmos 66 33

Alocação não contígua de memória SEGMENTAÇÃO 67 Segmentação Para determinados problemas ter dois ou mais espaços de endereçamento é melhor do que um Ex.: Em um compilador o crescimento da tabela de símbolos é diferente do texto fonte (código fonte) Para resolver esse problema, tem-se a ideia de fornecer espaços de endereçamento independentes Segmentos 68 34

Segmentação Exemplo: Espaço de endereçamento unidimensional com tabelas crescentes Não segmentado Algumas tabelas acabam invadindo as outras 69 Segmentação O uso de segmentação permite que cada tabela cresça ou encolha de forma independente 70 35

Segmentação Implementação de segmentação O espaço de endereçamento do processo é composto por um conjunto de segmentos, que podem ser de tamanhos diferentes Cada segmento pode ser descrito como um par de endereço base e limite Semelhante ao esquema de partições A descrição dos segmentos é feita em uma tabela de segmentos Um endereço lógico é um par (segmento, deslocamento) 71 Segmentação Tabela de Segmentos EL: (0,1400) EF: 3400+1400=4800 EL: (1,1400) EF: 7000+1400=11476 EL: (2,1400) EF:?? EL: (3,1400) EF:?? 72 36

Segmentação Com o uso de segmentação ainda é possível se ter fragmentação externa (a-d) Uma solução é realizar a compactação (e) 73 Segmentação Segmentação paginada Alternativa para eliminar a fragmentação externa Combina a segmentação com a paginação Um segmento não é alocado contiguamente, mas é paginado Cada segmento possui uma tabela de páginas Um endereço lógico é dividido em três partes Número do segmento Número da página (referente ao segmento) Deslocamento dentro da página 74 37

Exercícios 9,15,16,17 75 Bibliografia Andrew S. Tanenbaum. Sistemas Operacionais Modernos, 3a Edição. Capítulo 3.Pearson Prentice-Hall, 2009. Carlos A. Maziero: http://dainf.ct.utfpr.edu.br/~maziero/doku.p hp/so:livro_de_sistemas_operacionais 38