440 likes | 600 Views
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.
E N D
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. • 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
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
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
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
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.
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
Paginação de memória Questõ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
Paginação de memória Proteçã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.
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.
Paginação de memória Exemplo de proteção
Paginação de memória Compartilhamento 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
Paginação de memória Exemplo de compartilhamento:
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.
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 variados • permite uma relação entre a lógica do programa e sua divisão na memória.
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.
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.
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.
Paginação de memória Implementaçã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
Paginação de memória Implementaçã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
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
Paginação de memória Cada acesso necessita, no mínimo, dois acessos a memória
Paginação de memória Translation 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
Paginação de memória Implementação da tabela de páginas via TBL
Paginação de memória Aspectos 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
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
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
Paginação de memória Tabelas multi-nível : exemplo
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
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
Paginação de memória Algoritmos 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
Paginação de memória Algoritmos 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...
Paginação de memória Algoritmos 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.
Paginação de memória Algoritmos 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
Paginação de memória Algoritmos 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
Paginação de memória Algoritmos 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
Paginação de memória Algoritmos 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
Paginação de memória Thrashing 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
Paginação de memória Working 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
Paginação de memória Polí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