41
Sistemas operacionais Paginação de memória Prof. Diovani Milhorim

Sistemas operacionais

  • Upload
    natan

  • View
    27

  • Download
    0

Embed Size (px)

DESCRIPTION

Sistemas operacionais. Paginação de memória Prof. Diovani Milhorim. Paginação de memória. •O Espaço de Endereçamento lógico de um processo pode ser não contínuo; aloca-se memória física ao processo sempre que esta é disponível. - PowerPoint PPT Presentation

Citation preview

Page 1: Sistemas operacionais

Sistemas operacionais

Paginação de memória

Prof. Diovani Milhorim

Page 2: Sistemas operacionais

Paginação de memória

• O Espaço de Endereçamento lógico de um processo pode ser não contínuo; aloca-se memória física ao processo sempre que esta é disponível.

• A memória física (sistema) e a memória lógica (processo) são divididos em blocos de tamanho fixo e idênticos:

o Memória física dividida em blocos de tamanho fixo denominados de frames

o Memória lógica divide em blocos de tamanho fixo denominados de páginas

Page 3: Sistemas operacionais

Paginação de memória

• Sistema mantém o registro de todos os frames livres.

• Para executar um processo do tamanho de n páginas, basta encontrar n frames livres na memória

o Páginas são carregadas em qualquer frame livre

• Necessidade de traduzir endereços lógicos (páginas) em endereços físicos (frames)

o Define-se uma tabela de página (page table) para traduzir o endereço lógico em físico.

• Elimina a fragmentação externa e reduz a fragmentação interna

Page 4: Sistemas operacionais

Paginação de memória

Page 5: Sistemas operacionais

Paginação de memória

Características da paginação

• Paginação é um tipo de relocação (via hardware)

• Não gera fragmentação externa

• Fragmentação interna é restrita apenas a última página

Page 6: Sistemas operacionais

Paginação de memória

• Importante:

o Visão do usuário: espaço de endereçamento contíguo

o Visão do sistema: processo é “esparramado” na memória física

• n páginas são alocadas a n frames implicando na criação de uma tabela de correspondência

o Tabela de páginas

Facilita implementação de proteção e compartilhamento

Page 7: Sistemas operacionais

Paginação de memória

Tamanho da página

Páginas grandes significam:

o Processos compostos por menos páginas (tabela de páginas menores)

o Aumento da fragmentação interna na última página

Páginas pequenas significam:

o Processos compostos por mais páginas (tabela de página maiores)

o Diminuição da fragmentação interna na última página.

Page 8: Sistemas operacionais

Paginação de memória

• Objetivos conflitantes

Tamanho da página é imposto pelo hardware (MMU)

Valores típicos variam entre 1 kbyte e 8 kbytes

Page 9: Sistemas operacionais

Paginação de memóriaQuestões relacionadas com a gerência de páginas

• A gerência de memória deve manter controle de áreas livres e ocupadas

Inclusão de mecanismos de proteção

Evitar que um processo acesse área (páginas) de outros processos

Garantir que um processo acesse apenas endereços válidos Garantir acessos autorizados a uma posição de memória

e.g.: páginasread-only, read-write, etc. Inclusão de mecanismos de compartilhamento Permitir que dois ou mais processos dividam uma área comum

e.g.: páginas de código de um aplicativo do tipo editor de texto

Page 10: Sistemas operacionais

Paginação de memóriaProteção

• Proteção de acesso é garantida por definição:

Processos acessam somente suas páginas (end. válidos)

Endereço inválido apenas na última página (Se houver fragmentação interna)

Inclusão de bits de controle na tabela de página (por entrada).

Indicação se a página é de leitura, escrita ou executável

Proteção de memória é implementada associando-se um bit de proteção a cada frame.

Page 11: Sistemas operacionais

Paginação de memória

Bit Válido - Inválido anexado a cada entrada na tabela de página:

• “válido” indica que a página associada está no espaço de endereçamento lógico do processo, assim, é a uma página legal.

• “inválido” indica que a página não está no espaço de endereçamento lógico do processo.

Page 12: Sistemas operacionais

Paginação de memóriaExemplo de proteção

Page 13: Sistemas operacionais

Paginação de memóriaCompartilhamento de páginas

Código compartilhado

o Uma cópia do código (read-only, re-entrante) pode ser compartilhada entre vários processos (e.g.; editores de texto, compiladores, etc...)

o O código compartilhado pertence ao espaço lógico de todos os processos

Dados e código próprios

o Cada processo possui sua própria área de código e seus dados

Page 14: Sistemas operacionais

Paginação de memóriaExemplo de compartilhamento:

Page 15: Sistemas operacionais

Segmentação de memória Segmentação

Técnica de gerência de memória, onde os programas são divididos logicamente e em sub-rotinas e estruturas de dados e colocados em blocos de informações na memória

Segmentos – blocos de tamanhos diferentes com seu próprio espaço de endereçamento.

Respeita a visão do programador.

Page 16: Sistemas operacionais

Segmentação de memória Segmentação

Segmentação X Paginação Paginação com partes de tamanho fixo e

segmentos com blocos de tamanhos variadospermite uma relação entre a lógica do

programa e sua divisão na memória.

Page 17: Sistemas operacionais

Segmentação de memória Segmentação

Cada entrada na tabela de segmentos possuí o endereço do segmento na memória física, informações sobre o tamanho do segmento, sua proteção e se ele está na memória ou não.

O Sistema Operacional mantém uma tabela com as áreas livres e ocupadas da memória.

Page 18: Sistemas operacionais

Segmentação de memória Segmentação

A escolha da área livre a ser ocupada por um processo a ser carregado na memória pode ser a mesma utilizada no item Alocação Particionada Dinâmica (best-fit, worst-fit ou first-fit).

Apenas os segmentos referenciados são transferidos para a memória real.

Os programas devem ser bem modularizados para uma maior eficiência.

Page 19: Sistemas operacionais

Segmentação de memória  Segmentação com Paginação

Permite a divisão lógica dos programas e segmentos e, cada segmento é dividido fisicamente em páginas.

Um endereço é formado pelo número do segmento, pelo número de página, contida nesse segmento, e pelo deslocamento dentro dessa página.

O endereço físico é obtido somando-se a posição inicial do frame e o deslocamento.

Page 20: Sistemas operacionais

Paginação de memóriaImplementação da tabela de páginas

• Sistema operacional deve manter:

o Frames livres/alocados

o Número de frames e de páginas de um processo o Uma entrada para cada frame e para cada processo

• Como implementar a tabela de páginas?

o Registradores e Memória

Page 21: Sistemas operacionais

Paginação de memóriaImplementação da tabela de páginas via registradores

Tabela de páginas é mantida por um conjunto de registradores

o Cada página um registrador

o No descritor de processo devem ser mantidas cópias dos registradores

Troca de contexto: atualização dos registradores

Desvantagem é o número de registradores

Page 22: Sistemas operacionais

Paginação de memória

Implementação da tabela de páginas em memória

Tabela de páginas é mantida em memória

o Page-table Base Register (PTBR): início da tabela de páginas o Page-table Length Register (PTLR): tamanho em número de

entradas.

Cada acesso necessita, no mínimo, dois acessos a memória

Page 23: Sistemas operacionais

Paginação de memóriaCada acesso necessita, no mínimo, dois acessos a memória

Page 24: Sistemas operacionais

Paginação de memóriaTranslation look-aside buffers (TLBs)

• Uma espécie de meio termo entre implementação via registradores e via memória

• Baseada em uma memória cache especial (TLB) composta por um banco de registradores (memória associativa)

• Idéia é manter a tabela de páginas em memória com uma cópia parcial da tabela em um banco de registradores (TLB)

o Página acessada está na TLB (hit): similar a solução de registradores

o Página acessada não está na TLB (miss): similar a solução via memória

Page 25: Sistemas operacionais

Paginação de memóriaImplementação da tabela de páginas via TBL

Page 26: Sistemas operacionais

Paginação de memóriaAspectos relacionados com o uso de TLB

• Melhora o desempenho no acesso a tabela de páginas o Tempo de acesso 10 vezes menor que uma memória RAM

• Desvantagem é o seu custo

o Tamanho limitado (de 8 a 2048 entradas)

o Uma única TLB (pertence a MMU) que é compartilhada entre todos processos

Page 27: Sistemas operacionais

Paginação de memória

TBL - Um acesso é feito em duas partes:

o Se página está presente na TLB (hit) a tradução é feita

o Se página não está presente na TLB (miss), consulta a tabela em memória e atualiza entrada na TLB

Page 28: Sistemas operacionais

Paginação de memória

Tabelas multinível

Cada processo tem associado ao seu espaço de endereçamento uma tabela de páginas

A tabela de páginas de cada processo tem que estar carregada em memória

Para minimizar o espaço em memória ocupado pelas tabelas de páginas, utilizam-se habitualmente tabelas multí-nivel

Guardam-se na memória uma tabela principal, e as tabelas dos restantes níveis, que contém os descritores das páginas que estão a ser utilizadas pelo processo

Estas tabelas têm uma dimensão muito mais pequena do que se fosse utilizado um esquema com um só nível

Page 29: Sistemas operacionais

Paginação de memória

Tabelas multi-nível : exemplo

Page 30: Sistemas operacionais

Paginação de memória

Page-faults:

Quando é pedida uma página que não se encontra na memória principal, ocorre uma page fault

Uma page fault é uma exceção que causa bloqueio ao processo em questão

Inicia-se o de carregamento da página em falta, da memória secundária para a memória principal

Efetuam-se as alterações necessárias na page table, de modo a esta continuar consistente

Pode ser necessário transferir uma outra página para a memória secundária, de modo a libertar-se uma page frame – nesse caso corre-se o algoritmo de substituição de páginas

Page 31: Sistemas operacionais

Paginação de memória

Algoritmos de substituição de páginas

O algoritmo ideal:

Sempre que for necessária uma substituição de páginas, a que deveria sair será aquela que só será utilizada daqui a mais tempo

Este algoritmo não é realizável, pois os S.O.s não conseguem prever o futuro...

A aproximação é tentar descartar as páginas que são pouco utilizadas, ou que já não são utilizadas há muito tempo, na esperança de que não venham a ser utilizadas brevemente

Page 32: Sistemas operacionais

Paginação de memóriaAlgoritmos de substituição de páginas

Not recently used – NRU

Quando ocorre uma page fault, este algoritmo classifica as páginas carregadas em memória. Para tal utiliza dois bits:

R (Referenced) – indica que a página foi acedida desde a última interrupção do relógio

M (Modified) – indica que a página foi modificada desde que foi carregada na memória principal

Estabelecem-se 4 classes diferentes, de acordo com R e M Classe 0: R=0 e M=0 Classe 1: R=0 e M=1 Classe 2: R=1 e M=0 Classe 3: R=1 e M=1 A página a substituir será uma pertencente à classe mais baixa encontrada

Page 33: Sistemas operacionais

Paginação de memóriaAlgoritmos de substituição de páginas

FIFO (First-in, first-out)

A página a substituir é a que se encontra carregada há mais tempo na memória principal

Algoritmo de fácil implementação, bastando ter uma lista com índices de páginas, com a mais antiga no topo e a mais recente no fim

À medida que as páginas vão sendo carregadas na memória, os seus índices vão também sendo acrescentados ao fim da lista mantida pelo algoritmo

Problema: a página que foi carregada há mais tempo pode estar a ser utilizada...

Page 34: Sistemas operacionais

Paginação de memóriaAlgoritmos de substituição de páginas

Bit de referência

A cada frame e associado um bit “R” com valor inicial 0. Quando uma página é referenciada o Bit “R” é alterado para 1. Ao fim de algum tempo todas as páginas tem bit “R” igual a 1. Neste

momento deve entrar em ação um algoritmo de “esquecimento” que torna todos os bits 1 em 0.

O frame escolhido para a substituição é aquele primeiro que ao ser verificado tiver o bit “R” igual a 0.

Page 35: Sistemas operacionais

Paginação de memóriaAlgoritmos de substituição de páginas

Segunda chance

Algoritmo baseado no FIFO, mas que utiliza o bit de referência (R) Antes de uma página ser descartada, analisa-se o bit R e, caso este

se encontre a “1”, então é posto a “0”, mas a página não é descartada, analisando-se a próxima.

A página a descartar será a primeira que for encontrada com R=0

Page 36: Sistemas operacionais

Paginação de memóriaAlgoritmos de substituição de páginas

LRU (Least recently used)

A página a substituir será a que não é acedida à mais tempo Para tal, guarda-se para cada página uma marca temporal com o

tempo do último acesso Teoricamente este algoritmo é o que efetua a melhor escolha na

página a substituir Bom desempenho a um custo elevado: Na prática, este algoritmo obriga à existência de um temporizador

extra (pois as interrupções do relógio são demasiado “lentas”) Para além disso, exige bastante espaço para guardar as marcas

temporais (e.g. 64 bits) sempre que uma página é acedida

Page 37: Sistemas operacionais

Paginação de memóriaAlgoritmos de substituição de páginas

NFU (Not frequently used)

Algoritmo que tenta efectuar uma aproximação ao algoritmo LRU Associado um contador a cada página carregada em memória,

inicializado a zero quando a página é carregada Sempre que ocorre uma interrupção do relógio, e para cada página,

soma-se o valor do bit R ao contador

Problema: uma página muito acedida no início, mas que depois deixe de ser acedida fica com um valor elevado no contador, pelo que poderá persistir na memória

Page 38: Sistemas operacionais

Paginação de memóriaAlgoritmos de substituição de páginas

Aging

Variante do algoritmo NFU, que tenta resolver o problema descrito anteriormente

Em vez de somar o bit R ao valor do contador, desloca-se o seu conteúdo para a direita com entrada série do bit R

Deste modo consegue-se que uma página muito acedida no passado, mas que já não está a ser utilizada, fique com o valor do contador a zero após algumas interrupções do relógio

Algoritmo com melhor relação custo/desempenho

Page 39: Sistemas operacionais

Paginação de memóriaThrashing

Um CPU atual executa cada instrução em menos de 1 nano-segundo

Quando ocorre uma page fault, o carregamento de uma página para a memória principal poderá demorar um tempo na ordem mili-segundos

O carregamento de uma página é cerca de 1.000.000 de vezes mais lento que a execução de uma instrução...

Quando um grupo de processos começa a gerar page faults a um ritmo muito elevado diz-se que se entrou numa fase de thrashing – esta situação deve ser evitada a todo o custo

Page 40: Sistemas operacionais

Paginação de memóriaWorking Set

O Working Set é o conjunto de páginas que estão a ser utilizadas por um processo

Se todo o Working Set de um processo está carregado em memória, então não ocorrem page faults

Tirando partido deste facto, existem algoritmos de substituição de páginas que funcionam tendo em conta o working set de um processo

A ideia será substituir páginas que não se encontrem dentro do working set de um processo

Page 41: Sistemas operacionais

Paginação de memóriaPolítica de carregamento de páginas

Paginação a pedido (Demand paging)

As páginas de um processo vão sendo carregadas à medida que ocorrem page faults – esta abordagem faz com que ocorram page faults inicialmente, até ser estabelecido o working set do processo

Paginação por antecipação (Prepaging)

Antes do processo correr, o SO carrega para a memória um conjunto de páginas – a sua previsão do working Set