Prévia do material em texto
TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL DISCIPLINA: SISTEMAS OPERACIONAIS MODERNOS PROFESSOR: MARIO A MONTEIRO APRESENTAÇÃO: Memória Virtual é uma técnica elaborada para gerencia de memória, onde parte da memória secundária é utilizada para expandir o espaço de endereçamento dos processos. Ou seja, combina-se as memórias principal e secundária, passando ao usuário a impressão de uma memória principal muito maior que ela efetivamente é. O princípio básico de funcionamento da memória virtual (MV) é baseado no fato de que os processos não utilizam os endereços reais de memória principal e sim endereços virtuais na memória secundária. Com isso, pode-se ter uma quantidade maior de processos em execução. Neste texto, serão apresentadas algumas características que definem a memória virtual, bem como seu funcionamento nos sistemas de computação. Bons estudos! Ao final deste Conteúdo, você deve apresentar os seguintes aprendizados: Reconhecer o conceito de memória virtual e sua relação coma memória principal real; Identificar os elementos básicos da estrutura da memória virtual; Compreender o funcionamento do acesso aos processos em execução com o uso de memória virtual. DESCRIÇÃO DE ASPECTOS RELEVANTES DO ASSUNTO. Parte A: Todos aqueles que trabalham com computação sabem que a memória de um computador tem uma enorme importância para o desempenho do sistema de computação. Sabem também, que a MP é a única acessada diretamente pelo processador (exceto, naturalmente, os registradores que são manipulados diretamente durante a execução do ciclo de cada instrução); em todo acesso a uma instrução ou dado, o processador gera o endereço da MP. Por essa razão, a capacidade desta memória (tamanho ou quantidade de endereços) tem sido um fator crucial para o desempenho dos sistemas, principalmente com o desenvolvimento da multiprogramação, por acarretar necessidade de mais espaço de endereçamento principal ou real. Em alguns dos textos anteriores, especialmente o imediatamente anterior (Tema 9), tratou-se justamente desse problema de alocação de espaço da MP para acomodar os programas em execução e foram apresentadas algumas iniciativas técnicas para tentar TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL melhorar o uso da escassa MP em face de múltiplos programas requerendo espaço para seu armazenamento. Sem repetir o que já foi mostrado antes, mas apenas um lembrete sobre as referidas técnicas, pode-se observar que: 1. A primeira tentativa de usar mais espaço do que a da MP ocorreu ainda com sistemas monoprogramados, por meio da técnica de Overlay (texto 9). 2. Mais tarde, com alocação particionada, para atender múltiplos programas sendo executados de forma concorrente, surgiram diversas inovações, como relocação e particionamento dinâmico, mas expansão de espaço de endereçamento além da MP, como overlay, surgiu com a técnica de swapping, ao se usar a MS para estender o uso da MP além de seu limite. De qualquer forma, todas essas tentativas ainda visavam o uso das MP para armazenar o programa inteiro, sempre usando seu espaço contíguo de endereçamento. Mas foi o desenvolvimento de uma técnica conhecida como Memória Virtual que se realmente inovou em termos de ampliar o espaço de endereçamento para programas em execução, além dos limites da MP. O conceito de Memória Virtual (MV) emprega a MS (usualmente um espaço no HD do usuário, alocado e gerenciado pelo SO, como MV) para ampliar o espaço de endereçamento a ser disponibilizado aos programas. Desse modo, quando o processador gera um endereço de acesso a uma instrução ou dado (conforme já observamos diversas vezes), este endereço deve ser o da MP 9endereço real e físico). No entanto, com o uso de MV, o endereço inicialmente gerado pelo processador passa a ser um endereço virtual, que pode ser bem maior do que os endereços disponíveis no espaço da MP e sem ter relação direta com a MP. Então, com o uso da MV, o espaço de endereço disponível aos processos é superior ao espaço da MP, pois se usa um espaço no HD (MS) para ampliar a disponibilidade de endereçamento aos processos, conforme se pode observar, de forma simples na figura 1. Figura 1- Exemplo de uso de MV (espaço no HD mais espaço da MP TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Com este conceito, não há vínculo do endereçamento nos programas com o endereçamento real (físico) das memórias. Isto é, um endereço virtual (EV) xxxx não corresponde diretamente a um endereço real (ER-MP). A correspondência entre eles ocorre por meio de um método chamado Mapeamento, conforme será descrito adiante. Para evitar perda de tempo em cada acesso, a interpretação do EV e o mapeamento ao endereço real é realizada diretamente por hardware, por uma unidade localizada no chip do processador é denominada MMU-memory Managment Unit ou Unidade de Gerenciamento de Memória. O que efetivamente acontece durante o referido acesso do processador a um endereço físico, real da MP. a) O processador gera um endereço de acesso VIRTUAL (e não mais real como acontece sem uso da MV). b) O MMU, então, identifica se o bloco que contém o endereço desejado encontra- se também na MP. Se tiver, um Acerto ou HIT, o MMU “traduz” o endereço virtual para endereço real (mapeamento). c) Em seguida, o endereço real (agora o efetivo endereço da MP) é colocado no BE (barramento de endereço) e o processo segue o de uma operação de leitura normal. d) Se, o MMU não encontrar o bloco desejado na MP (isso pode acontecer, pois o espaço virtual é sempre maior que o espaço real (há mais blocos na MV que blocos na MP), acontece um “page fault” ou Falta de página (está sendo considerado que o método usado é do tipo Paginação, o que será descrito adiante). E, nesse caso, ocorre uma Exceção (exception ou Exceção-ver Texto do Tema 3) e, é necessário trazer o bloco da MV para MP, mapear o endereço virtual para real e prosseguir no ciclo de leitura. Este método é bastante vantajoso (mapeamento) porque, assim, NÃO É PRECISO que: O programa esteja inteiro na MP (pode estar parte dele o resto na MV-no HD; Mesmo a parte do programa que está na MP Não precisa estar em endereços contíguos (só os endereços de um bloco, mas os blocos do programa que estão residentes na MP podem estar em locais diferentes Dependendo do SO usado, a técnica de MV poder implementada das seguintes formas: PAGINAÇÃO SEGMENTAÇÃO HÍBRIDA (Paginação e Segmentação) Memória Virtual por Paginação Este é o método usado pela maioria dos SO, como Windows, Linux, MAC-OS e os de telefonia móvel. TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Por este método, tanto a MV quanto a MP (real) são organizadas em blocos de tamanho fixo, chamados páginas (MV e MP, embora nesta também se use o termo Frame ou quadro, para o bloco da MP). O tamanho do bloco varia de 4K até 64KB, podendo ser maior em versões de maior capacidade dos SOs. Um bloco com 4 KB (4096) de largura, indica que há dados (ou instruções) com endereços de byte de 0 até 4095, o que se chama de deslocamento. Cada processo possui seu próprio espaço de endereçamento virtual, mas só há UM espaço de endereçamento real (na MP). Os blocos da MV (páginas) são mapeados para páginas/frames da MP pelo MMU. A figura 2 mostra um dos aspectos mais importantes e interessantes da técnica de MV. Não há relação de endereçamento entre MV e MP (a não ser na ocasião de acesso com o mapeamento. E, especialmente, as páginas de um processo na MP n ficam contíguas, conforme mostrado na figura. Figura 2- mapeamento de endereços MV e MP As figuras 3 e 4 mostram um outro exemplo do mapeamento, onde, na figura 3, se observa dois processos, cada um com seu espaço de armazenamento virtual e sua tabela de páginas, ambos compartilhando o espaço único da MP (algumas páginas virtuais do processo A emframes da MP e outras páginas, do processo B, em outros frames da MP. E na figura 4 observa-se algo semelhante. A identificação e localização entre eles é da competência do MMU. TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Figura 4- Exemplo de mapeamento em MV por paginação Para compreender ainda melhor o modo de mapeamento, observe que, cada processo, tem seu espaço de endereçamento virtual (lembre-se do contexto de processos (Texto 6), com contexto de HW, de SW e espaço de endereçamento – neste caso, o espaço é de endereçamento virtual). E possui uma tabela para realização do mapeamento, chamada tabela de páginas, a qual possui uma linha para cada página/bloco virtual, com indicações: se tem cópia dele na MP e qual frame (se tem cópia) da MP ele está (há outras indicações, que ajudam substituição de páginas, etc.). Estas tabelas são manipuladas pelo MMU, conforme já mencionado anteriormente. Conforme já mencionado anteriormente, o MMU funciona no interior do processador, isto é, diretamente por hardware, para ser mais rápido. A figura 5 mostra a identificação básica de um byte na MV, onde o endereço contém duas partes, o número da página virtual (NPV) e o valor do deslocamento (o endereço do byte dentro da página). No caso do endereço real (na MP) o formato é semelhante, com os bits mais à esquerda indicando endereço do frame e o restante o mesmo deslocamento, já que as páginas virtual e real têm mesmo tamanho. Figura 5 – Formato do endereço virtual TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Assim, por exemplo, um processo que tenha uma tabela de páginas com 256 entradas (possui 256 páginas virtuais) tem NPV de 8 bits (256 = 28) e se a MV for constituída de blocos com 4K de tamanho, os endereços dos bytes (deslocamento) têm 12 bits (4K = 212). Ou seja, o espaço virtual do processo é de 1 MB (256 x 4K) e cada endereço de byte virtual tem 20 bits (8 do NPV + 12 do deslocamento) e 1M = 220. Vamos observar um exemplo mais detalhado do método de mapeamento e funcionalidade do MMU, mostrado nas figuras 6 e 7 a seguir (este exemplo foi extraído do livro de SO-A Tanembaum). Figura 6 - Exemplo do mapeamento endereço virtual para endereço real pelo MMU. Na figura 6 observa-se os dois espaços de endereçamento, Virtual (MV) e Real (MP). Considera-se neste exemplo a existência de apenas um processo para facilitar a explicação. O espaço virtual (à esquerda) compreende 64KB divididos em 16 páginas de 4 K cada uma (endereços internos de cada página-deslocamento- de 0 a 4095). Como são 16 páginas, cada endereço de página é um número com 4 bits (16 = 24) e cada deslocamento – endereço interno do byte na página tem 12 bits). Endereço virtual total de cada byte tem 16 bits (4 + 12) e, realmente tem-se que, 216 =64K (total do espaço virtual como já mostrado). E a memória principal (MP) ou RAM possui 32KB (metade do espaço virtual), sendo organizada em 8 frames também de 4 KB, sendo os endereços com 2 partes: 3 bits para endereço de cada um dos 8 frames (* = 23) mais 12 bits (deslocamento) com um total de 15 bits (3 + 12). A figura mostra uma distribuição de páginas (MV) para frames (MP) já realizada em acesso anteriores. Observa-se, na figura, 8 páginas da MV que foram mapeadas e armazenadas nos 8 frames da MP, todos fora de qualquer ordem, conforme já mencionado anteriormente. TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Pode acontecer de ocorrer um acesso a um dado (ou instrução) e que se deseja, neste acesso, o conteúdo do endereço 0 virtual para um registrador do processador (operação de leitura). Isso ocorre, por exemplo, em Assembly, pela instrução: MOV REG, 0, que significa: mover o conteúdo do endereço 0 para o registrador x qualquer. O endereço virtual 0 está contido na página virtual 0 (de 0 até 4095 ou 0K a 4K). A página 0 está mapeada para a página 2 (010) da MP (8K a 12K ou 8192 a 12287), conforme se observa na figura em cor vermelha. Então, ao final do mapeamento, o endereço virtual 0 se converte em endereço real 8192 e este é, então, colocado no BE e o ciclo de leitura prossegue daí. Observe a seguir outro exemplo semelhante, extraído da mesma fonte e usando os mesmos espaços mostrados na figura 6. Trata-se do acesso dado pela instrução Assembly: MOV REG, 8192, isto é: mover o conteúdo do endereço virtual 8192 para o REG x. De forma semelhante ao exemplo anterior (com outros dados naturalmente), tem-se: O endereço virtual 8192 está contido na página virtual 2 (de 8192 até 12287 ou 8K a 12K). Esta página 2 está mapeada para a página 6 (110) da MP (24K a 28K ou 24576 a 28671), conforme se observa na figura em cor verde. Então, ao final do mapeamento, o endereço virtual 8192 foi traduzido para o endereço real 24576 e este é, então, colocado no BE e o ciclo de leitura prossegue daí. E, por último, outro acesso: MOV REG, 32780 (mover o conteúdo do endereço virtual 32780 para o REG x. Neste caso, o processo é idêntico aos anteriores, exceto que a página virtual referenciada NÃO TEM CÓPIA armazenada na MP, ou seja, ocorreu uma falta de página ou “page fault”. Na figura se observa que 32780 é o byte 12 da página virtual 8 (32K até 36K ou 32768 até 38911) e 32768 + 12 = 32780 (por isso é o byte 12). Observando-se a página 8 na figura 6, há um X no seu interior e não o endereço de uma página real como nos casos anteriores. Em um sistema verdadeiro, não apareceria X mas haveria uma coluna com um bit indicador se a página estaria ou não também armazenada na MP (bit 0, sim e bit 1 não). Havendo “page fault”, o sistema gera um sinal de Exceção (exception), o processo em execução e que realizou este acesso é suspenso e colocado em estado de Espera até que a página desejada seja movida da MV para a MP, alterados os conteúdos da tabela de página e o bit de validade e, em seguida, o processo seria movido de Espera para a fila de Pronto. Compreendidos os exemplos anteriores do funcionamento da tabela de páginas de um processo, em seguida, observe o funcionamento no interior do MMU, mostrado na figura 7. Na própria figura se inclui o passo a passo das operações internas do MMU que traduzem um endereço virtual (com 16 bits) em um endereço real (da MP), com 15 bits. Na verdade, ele apenas substituiu os 4 bits mais à esquerda TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL (endereço da página virtual) pelos 3 bits do endereço do frame na MP, já que o deslocamento (12 bits) é idêntico em uma ou outra página. Figura 7 – Operação do MMU para traduzir endereço virtual em endereço real Deve ser observado também, que a entrada (a linha) da tabela de página de cada página/frame, possui mais campos, além dos dois já usados até o momento, o NPV e Deslocamento. Dependendo do SO há mais ou menos informações, todas, de uma forma geral, caracterizadas por bits que tem significa no processo. Por exemplo, um dos bits adicionais pode ser o de validade de página, que indica se a página virtual referenciada tem cópia na MP (bit 1) ou não (bit 0), acarretando (ou não) a tradução EV para ER ou uma Exceção (page fault). Antes de se passar para outro item deve ser lembrado que cada processo tem sua Tabela de Páginas e os movimentados mostrados nos exemplos ocorrem em cada acesso realizado pelo processo em execução no momento (em processamento como parece ser mais correto). Sempre que um processo sai deste estado e outro processo “ganha” o processador, altera-se a tabela de páginas a ser manipulada (passa a ser a Tabela do novo processo). A atividade de troca de páginas decorrente de um “page fault” é conhecida como paginação e a quantidade de “page faults” ocorrida em cada processo é denominada taxa de paginação do processo. Esta taxa deve ter valores normais, que fazem parte da atividade de paginação de qualquer SO; porém, se os valores em desta taxa sobem além do normal, provavelmenteo desempenho do sistema vai cair. TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Política de Busca de Página Um dos itens que o desenvolvedor de SO deve se preocupar (entre tantos) refere-se ao modo a ser escolhido de mover páginas da MS para a MP durante a execução de um processo. Pode-se citar aqui dois dos mais conhecidos modos: POR DEMANDA ANTECIPADA No primeiro caso, o SO move a página desejada apenas quando ela é referenciada em um acesso e o bit de validade indica que ela não está na MP (na ocorrência de um “page fault”). É um método simples e rápido e, graças ao princípio da localidade, um próximo “page fault” não deve ocorrer logo. Devido a aquele princípio, em grande parte do tempo o processador usa acessos a endereços contíguos e, face o tamanho de uma página a tendência é demora de realizar outro movimento de página. Já o segundo método, o SO move uma página de forma antecipada, isto é, antes que o processador venha precisar de um item armazenado na referida página. Isto é uma opção que parece de acordo com o Princípio da localidade, mas nem sempre funciona bem em face do tamanho das páginas. O método se assemelha ao uso de localidade em supermercados, onde o usuário busca a “página” (prateleira) de um produto e antecipadamente localiza uma outra prateleira, contígua, que ele imagina deverá querer buscar algo. Na prática, não é um método usado com frequência, e os SO tem se fixado mais no método de paginação por demanda, como, em média, um modo mais eficaz. Naturalmente, o leitor desejando se aprofundar mais na análise comparativa entre os métodos encontrará diversas considerações e resultados estatísticos de um e outro modo, desenvolvidos por pesquisadores sobre o assunto. O livro texto contém considerações a respeito, especialmente o livro do Silberschatz (cap 9). Política de Alocação de Página Da mesma forma que o item anterior, também foram desenvolvidos modos diferentes de alocação das páginas de um processo (movimento de swapping IN) durante sua execução. Como já se sabe, em face da grande quantidade de processos em execução durante um período (elevada taxa de multiprogramação) e do tamanho crescente de cada código executável (programa), não se usa mais mover o código inteiro de um processo paar a MP e sim apenas alguns blocos (conhecidos coimo páginas/frames) em cada momento. Com isso, muitos processos podem conviver na MP, colocados em partes. TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL O problema aqui trata de se saber quantas páginas de cada processo devem estar na MP em um dado momento, escolhidas de forma a não prejudicar o desempenho global do sistema. ALOCAÇÃO FIXA ALOCAÇÃO VARIÁVEL No primeiro modo (Fixa) o SO define uma quantidade fixa de frames que devem estar armazenados na MP durante a execução do processo. Esta quantidade, que pode ser estabelecida na criação do processo (considerando o tipo de aplicação e, usualmente baseada no histórico de execução do processo), pode ser fixa para todos os processos (independentemente do tamanho de cada um) ou diferente para cada processo. É sempre difícil e pouco prático ou pouco correto essas “adivinhações”. Além disso, tem sido repetido tanto nesses textos ou em sala, que, para se administrar essas variáveis de forma que pareça eficiente, faz com que o SO tenha que executar código seguidamente para interpretar uma determinada opção e isso consome tempo do processador, para resultados nem sempre muito satisfatórios, mas que reduzem desempenho global (menos tempo para os processos dos usuários). A alocação variável procura se adaptar ás diferentes características de cada processo, alocando mais ou menos páginas em função da taxa de paginação crescer ou diminuir. Esses limites, como deve ser imaginado constam dos itens definidos no contexto de software de cada processo. Política de Substituição de Páginas Outro dos problemas existentes em um SO que emprega memória virtual, seja com paginação ou não, pode ocorrer quando um processo faz acesso a um dado/instrução em uma página não existente na MP (“page fault”) e esta página precisa ser movida para a MP (swapp in). E, mais ainda, quando, neste caso, o SO verifica que não há espaço livre (todos os frames estão em uso). Nessa situação, há necessidade de se retirar uma página e substitui-la pela página ora desejada. Trata- se de um problema de Substituição de Página. Este problema não é novo, pois ele pode ocorrer em movimento de blocos da MP para a Cache ou mesmo para páginas da Web sendo constantemente referenciadas pelo usuário. Escolher uma página e ela logo depois ser novamente referenciada, é uma péssima escolha, com todos os prejuízos de tempo/desempenho decorrentes, ou mesmo, escolher uma página antiga na MP, mas frequentemente usada (acesso a dados em um looping, p. ex) é outra má escolha. E assim por diante. Pesquisadores em Universidades, Centros de Pesquisa que se especializam (entre outros assuntos) em desenvolvimento de SO e fabricantes/desenvolvedores de software para SO, tem consumido algum tempo em encontrar algoritmos que escolham a melhor página para ser retirada e substituída. TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Por esta razão, a literatura tem mostrado diversos algoritmos de substituição de páginas, assim como SO diferentes tendem a usar um ou outro. Não há unanimidade de uma ótima escolha. Alguns dos algoritmos de substituição de páginas mais usados ou referenciados na literatura especializada são: Ótimo Aleatório FIFO (fila simples) NRU-not recently used) – não é referenciada há mais tempo Outros algoritmos podem ser consultados e analisados na bibliografia do curso, tais como: LRU- least recently used – há mais tempo na MP e sem ser referenciada. LFU-least frequently used- página que não é usada há mais tempo. As diferenças, algumas sutis entre esses algoritmos, precisam de análise, pois alguns tem pouca diferença entre eles. Tratam de estar há mais tempo (mais podem estar há mais tempo e ser frequentemente referenciados em acessos) ou ser pouco referenciada ou entrar uma vez e nunca mais ser usada, por exemplo. Algoritmo de escolha ótima de página para substituição Trata-se de escolher a página que não será mais referenciada ou demorará muito para isso. Ele é usado apenas como elemento teórico de comparação pois o SO nunca poderá saber antecipadamente qual página será a melhor para ser substituída. Algoritmo de escolha aleatória Este algoritmo, o mais simples e rápido de implementar e usar não possui qualquer critério a ser analisado pelo SO (por isso é simples e rápido). Ele seleciona qualquer usa das páginas disponíveis na MP, inclusive pode ser uma frequentemente referenciada. Pouco usado devido sua baixa eficiência. Algoritmo do tipo Fila simples (FIFO-first in first out) A página que entrou primeiro (no momento da verificação, é claro) é a candidata escolhida para ser substituída. Nem sempre é uma boa escolha, pois o algoritmo não se preocupa com a quantidade de referências que esta página pode estar tendo (especialmente se é uma página de dados). Não me lembro de nenhum SO da atualidade que utilize este algoritmo. NRU (not recently used) - não tem sido referenciado recentemente. TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Trata-se de escolher a página que não foi referenciada (não houve acesso a dados dela) há mais tempo e, se possível, não foi modificada por uma operação de escrita em algum de seus bytes. Neste caso, o SO usa DOIS bits auxiliares para cada quadro/página (ficam em cada linha da tabela de página, juntamente com o bit de validade): BR - bit que indica se a página foi referenciada – inicia com 1 e periodicamente é passado para 0 até haver referência quando volta a 1 e assim por diante. BM - bit que indica se foi modificada.Como são dois bits, há 4 possíveis combinações entre eles, mostradas na tabela a seguir: BITS DE REFER E MODIF DESCRIÇÃO 1 – BR=0 e BM = 0 Página não referenciada e não modificada 1 – BR=0 e BM = 1 Página não referenciada e modificada 1 – BR=1 e BM = 0 Página referenciada e não modificada 1 – BR=1 e BM = 1 Página referenciada e modificada Para fixar o entendimento deste último algoritmo resolva o seguinte exercício: 1. Considere um processo com limite de páginas reais igual a 4 e um sistema que implemente a política de substituição de páginas NRU (não usada recentemente). Quantos page faults ocorrerão considerando que as páginas virtuais são referenciadas na seguinte ordem, da direita para a esquerda: 07172372103 (nenhuma foi modificada). Considerações sobre o Tamanho da Página Assim como o tamanho de uma linha nas memorias cache influencia o desempenho dos sistemas e o espaço ocupado nas referidas memórias, também o tamanho de uma página tem suas implicações no funcionamento dos SO que empregam memória virtual (MV). Por exemplo, uma das implicações é a quantidade de entradas na tabela de página. Páginas pequenas implicam em: Tabelas de mapeamento maiores. Maior taxa de paginação. Maior quantidade de acessos à memória secundária. Operações de E/S mais lentas. TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Páginas grandes implicam em: Tabelas de mapeamento menores. Maior fragmentação interna. Antes de concluir este texto, resumo das principais considerações sobre memória virtual, podem ser efetuadas algumas observações a respeito do assunto: 1. Embora não tenha sido analisado neste texto, há um outro modo de emprego de MV, conhecido como Segmentação. Nesse caso, em vez de se organizar a MV e MP em blocos de tamanho fixo (páginas e frames), usa-se blocos de tamanho variável, ou Segmentos. O SO administra a alocação e o tamanho dos segmentos em função do tamanho e quantidade de processos em execução em dado momento. 2. Working set - Conjunto de trabalho Consiste na definição de um conjunto de páginas que devem estar na MP enquanto um processo está em execução. Isso ocorre para evitar um aumento de paginação (maior quantidade de page faults) se houver poucas páginas de um processo na MP ou causar uma redução da taxa de multiprogramação (menos processos em execução ao mesmo tempo, compartilhando a memória) se houver uma grande quantidade de páginas de um processo, e nem todas sendo usadas. Devido ao princípio da localidade, pode-se definir um conjunto de páginas que será referenciado por um processo durante um certo intervalo de tempo, o qual é chamado de “working set” ou conjunto de páginas de trabalho. 3. Translation lookaside buffer Este mecanismo, usado por alguns SO que empregam MV (usa-se nos textos em português o termo inglês), tem por propósito economizar tempo de acesso às tabelas de páginas dos processos. Como é comum ter-se tabelas longas, mas que se usa apenas algumas entradas (muitas outras nem são referenciadas durante toda a execução de um processo), o SO cria uma pequena área de memória, como se fosse uma cache, contendo o mapeamento do endereço virtual em endereço físico já pronto. Na ocasião de um acesso, o SO vai direto nesta pequena memória e já realiza o acesso se haver necessidade daquele processo mostrado de tradução dos endereços virtuais para físicos feita no MMU. TEMA 9: GERÊNCIA DE MEMÓRIA (Parte 2) - MEMÓRIA VIRTUAL Parte B- Arquivos com Slides que complementam o assunto abordado: SO- TEMA 9-Ger Mem-Memoria Virtal.pptx REFERÊNCIAS: Básica: Disponíveis na Biblioteca Digital MACHADO, F. B.; MAIA, L. P. M. Arquitetura de sistemas operacionais. 5. ed. Rio de Janeiro: LTC, 2013. SILBERSCHATZ, A. Fundamentos de Sistemas operacionais – Princípios básicos. 1. ed. Rio de Janeiro: LTC, 2013. TANEMBAUM, A. S.; WOODHULL, A.S.. Sistemas Operacionais -Projeto e Implementação. 3. ed. São Paulo: Pearson, 2008 Complementar: TANEMBAUM, A. S.; WOODHULL, A.S.. Sistemas Operacionais Modernos. 4. ed. São Paulo: Pearson, 2016 FLYNN, I. M.; MCHOES, A. M. Introdução aos Sistemas Operacionais. 1. ed. São Paulo: Pioneira Thomson Learning, 2002. MACHADO, F. B.; MAIA, L. P. M. Fundamentos de sistemas operacionais. 1. ed. Rio de Janeiro: LTC, 2011. MARQUES, J. A.; FERREIRA, P.; RIBEIRO, C.; VEIGA, L.; RODRIGUES, R. Sistemas Operacionais. 1. ed. Rio de Janeiro: LTC, 2011. OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas operacionais. 4. ed. Porto Alegre: Bookman, 2010. (Livros Didáticos Informática UFRGS, v. 11).