Gerenciamento de Memória

        Os componentes principais no gerenciamento de memória do VMS são: o paginador (pager) e o permutador (swapper).
        O paginador responde às falhas de página. Ele determina a posição da página no disco e inicia a leitura.
        O permutador responde às transições de estado dos processos. Ele permuta processos entre memória e armazenamento secundário para manter na memória os processos executáveis de prioridade mais alta.
        Veja mais sobre os Processos.
        Conjunto de Trabalho e Paginação. Cada processo pode ter um número limitado de páginas virtuais na memória. Elas formam seu conjunto Residente (resident set) ou conjunto de trabalho (working set). Durante a transformação de endereço, o bit de validade é verificado para saber se a página virtual está na memória. Se não estiver, ocorre uma falha de página. Então o paginador determina a posição da página no disco por meio da entrada da tabela de páginas e inicia uma leitura.
        Se o limite do conjunto de trabalho não foi alcançado, o paginador localiza uma página de memória vazia. A página é colocada nessa página de memória e o paginador atualiza a tabela de páginas. Porém, se o limite foi alcançado, deve ser substituída uma página.
        O VMS substitui páginas numa base pelo algoritmo FIFO. O sistema opercional pode fazer escolhas ruins, no entanto, o VMS mantém estruturas de dados adicionais para minimizar seus efeitos.
        Quando o VMS substitui uma página, determina se ela foi modificada. Se não foi, o VMS a coloca no fim de uma lista de páginas livres. Essa lista mantém as páginas físicas disponíveis para uso. Quando um processo precisa de uma página, o VMS a aloca a partir do início dessa lista.
        Se a página foi modificada, o VMS a coloca no fim de uma lista de páginas modificadas. Essa lista é semelhante à lista de páginas livres, exceto que as páginas têm de ser gravadas novamente no armazenamento secundário antes de serem passadas a outro processo.
        Como o VMS coloca a página substituída em uma dentre duas listas, a página ainda está na memória. Portanto, se o processo subsequentemente solicitar uma página substituída, o VMS poderá recuperá-la sem E/S física. Isso supõe, naturalmente, que a página ainda está na lista. Mas, desde que o VMS aloca as páginas livres a partir do início da lista, uma página substituída provavelmente permanecerá na memória por um tempo.
        A lista de páginas age como uma memória cache. A paginação ocorre entre o conjunto de trabalho do processo e as listas do sistema, mas não ocorre E/S. Mas o cache não mantém a página por tempo indefinido. Eventualmente, se ela não for solicitada, será movida para o começo da lista. O VMS então a alocará para outro processo requisitante como uma página livre.
        Se as páginas substituídas são modificadas, há economias adicionais. Se uma página modificada é substituída e subseqüentemente referenciada, são economizadas duas operações de E/S física. O VMS não grava a página quando ela é substituída, e não a lê quando ela é referenciada. Na verdade, uma página modificada pode ser substituída e referenciada muitas vezes sem nenhuma E/S.
        A figura a seguir demonstra esse processo de Lista de páginas livres e modificadas:
        Outra vantagem ainda é que a lista de páginas modificadas permite, que o VMS agrupe suas operações de E/S. Isto é, em vez de escrever uma página de cada vez, o VMS pode escrever muitas com uma chamada de E/S. Quando a lista de páginas modificadas torna-se longa, o VMS escreve várias de suas páginas. As páginas em memória virtual contígua de um processo podem ser escritas em posições consecutivas no disco, reduzindo o tempo total de E/S.
        As páginas não são sempre removidas do conjunto de trabalho. Os serviços do sistema permitem que as páginas sejam fixadas. Páginas fixadas são sempre válidas. Isto é, enquanto o processo for resistente, elas estarão no conjunto de trabalho, incluindo as páginas fixadas, também será retirado da memória.
        Permuta e Cabeçalho de Processo. Os conjuntos de trabalho de todos os processos executáveis podem não caber todos na memória simultaneamente. Em casos assim, o VMS pode remover alguns deles (permuta para fora) e carregar alguns outros (permuta pala dentro). Isso é necessário quando o processo executável de mais alta prioridade não está resistente na memória. Então o permutador é necessário.
        Grande parte das informações que o permutador precisa estão no cabeçalho de processo (Process Header - PHD). O VMS mantém um PHD para cada processo e armazena sua posiçao em um bloco de controle de processo (Process Control Block - PCB). O PHD contém as tabelas de páginas P0 e P1. Elas crescem uma em direção à outra à medida que o conjunto de trabalho aumenta.
        Com visto na figura a seguir:
        O PHD também contém a lista do conjunto de trabalho e a tabela de seção de processo. A tabela de seção de processo contém informações sobre a posição de arquivos, chamada arquivos de seção, que contém páginas de processo. Cada entrada contém informações usadas para localizar um arquivo. Entradas múltiplas permitem que o gerenciador de memória localize páginas de diferentes arquivos de seção.
        A lista do conjunto de trabalho descreve as entradas válidas da tabela de páginas. Suas entradas são armazenadas em três áreas consecutivas do PHD. A figura a seguir demonstra a lista do conjunto de trabalho:
        O PHD também contém ponteiros que localizam essas áreas. A primeira área contém entradas para páginas permanentemente fixadas na memória pelo VMS. Elas sempre fazem parte do conjunto de trabalho e incluem a pilha do núcleo, cabeçalho de processo e partes da tabela de páginas P1.
        A segunda área contém entradas para páginas que um processo tenha fixado na memória. Um processo pode, por exemplo, fixar páginas contendo lógica, que devem responder rapidamente a certos eventos. Isso é especialmente verdadeiro nos processos em tempo real.
        A terceira área contém entradas para paginas permutáveis. essa é a parte dinâmica da lista do conjunto de trabalho. As entradas são armazenadas em uma fila circular, para facilitar a estratégia de substituição de página FIFO. O PHD contém ponteiros para o começo e o fim da fila. Cada entrada da lista do conjunto de trabalho contém o seguinte:
Endereço virtual ela página.
Bit de fixação - igual a 1 se a página estiver fixada na memória.

Bit de validade - indica que a entrada atual está em uso isto é, contém informações válidas).

Campo de tipo - determina o tipo da página, como por exemplo, página de processo, página de sistema, página global apenas de leitura ou página da tabela de páginas.

Bit de modificação - indica se uma página foi alterada.