Notas do sistema operacional - Gerenciamento de memória

Notas do sistema operacional - Gerenciamento de memória

3. Gerenciamento de memória

3.1 Noções básicas de gerenciamento de memória

3.1.1 Visão geral do gerenciamento de memória

A memória é uma parte importante do sistema informático e um recurso precioso e escasso no sistema informático.O gerenciamento de armazenamento no sistema operacional refere-se ao gerenciamento de memória (também chamada de memória principal. Por padrão, a memória neste capítulo se refere à memória), que é uma das funções importantes do sistema operacional.

Funções de gerenciamento de memória

  • Alocação e desalocação de memória. O sistema operacional completa a alocação e gerenciamento de espaço de memória, liberando os programadores do problema de alocação de espaço de armazenamento e melhorando a eficiência da programação. Para fazer isso, o sistema deve lembrar o uso do espaço de memória: implementar a alocação de memória; recuperar o espaço de memória liberado pelo sistema ou usuário.
  • Transformação de endereço. Em um ambiente de multiprogramação, o endereço lógico no programa geralmente é inconsistente com o endereço físico na memória; portanto, o gerenciamento de armazenamento deve fornecer uma função de conversão de endereço para converter o endereço lógico em um endereço físico.
  • Expanda a memória. Com a ajuda da tecnologia de armazenamento virtual ou outra tecnologia de sobreposição automática, os usuários recebem um espaço de endereço maior que o espaço de memória, atingindo assim o objetivo de expandir logicamente a capacidade de memória.
  • Proteção de armazenamento. É garantido que cada trabalho que entra na memória seja executado em seu próprio espaço de armazenamento, sem interferir uns nos outros. É necessário evitar que uma operação danifique outras operações devido a erros e evitar que danifique programas do sistema. Essa proteção geralmente é realizada por uma combinação de hardware e software.

Compilando, vinculando e carregando aplicativos

O processo de aplicação desde o arquivo de origem escrito pelo usuário até o processo executado na memória é dividido em três etapas: primeiro,O código-fonte é compilado em vários módulos de objeto através do compilador (Compiler); em segundo lugar, os módulos de objeto compilados e as funções de biblioteca necessárias são vinculados através do vinculador (Linker) para formar um módulo de carregamento completo. (LoadModule); Finalmente, carregue-os carregar módulos na memória através do carregador (Loader) e executá-los. Simplificando, o processo desde o programa fonte até a execução passa por três etapas : compilação, vinculação e carregamento .

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Existem três maneiras de vincular o programa:

  • Vinculação estática.antes do programa ser executado, primeiro vincule cada módulo de destino e bibliotecas necessárias em um programa executável completo e não o desmontará posteriormente.
  • Vinculação dinâmica no carregamento. Quando um conjunto de módulos de destino obtidos após a compilação de um programa aplicativo é carregado na memória, um método de vinculação dinâmica de carregamento e vinculação é usado.
  • Vinculação dinâmica em tempo de execução. atéEnquanto o programa está em execuçãoOs módulos são vinculados apenas quando são necessários. Este método de vinculação adiará a vinculação de alguns módulos até a execução, ou seja, durante o processo de execução, quando for constatado que um módulo chamado não foi carregado na memória, o módulo será encontrado imediatamente e carregado na memória. e, em seguida, vincule-o ao módulo chamador. Qualquer módulo de destino que não seja utilizado durante a execução não será transferido para a memória e vinculado ao módulo de carregamento, o que não apenas encurta o processo de carregamento do programa, mas também economiza uma grande quantidade de espaço de memória, facilitando a modificação e atualização ., para facilitar o compartilhamento de módulos alvo.

Existem três maneiras de carregar o programa:

  • Definitivamente carregado.Saiba em tempo de compilação o endereço físico na memória onde o programa irá residir, o compilador gera código objeto contendo endereços físicos. Esta abordagem não é adequada para multiprogramação.

  • Montagens relocáveis.De acordo com a situação atual da memória, o módulo de carregamento é carregado no local apropriado da memória. A transformação do endereço geralmente é concluída uma vez durante o carregamento e não muda depois disso., esse método também é chamado de realocação estática. A implementação da realocação estática é muito simples: quando o sistema operacional aloca uma área de memória principal contínua com um determinado endereço como endereço inicial do programa, durante a realocação, o endereço lógico da instrução ou operando no programa é adicionado ao endereço inicial endereço. Tenho o endereço físico.

    Insira a descrição da imagem aqui

  • Execute a carga dinamicamente.Permite que o programa mova locais na memória enquanto está em execução. Todos os endereços após o módulo de carregamento ser carregado na memória são endereços relativos.Durante a execução do programa, somente quando a instrução ou dados correspondentes são acessados, o endereço relativo do programa ou dados a serem acessados ​​é convertido em um endereço físico.. Como o processo de realocação é concluído passo a passo à medida que as instruções são executadas durante a execução do programa, ele também é chamado de realocação dinâmica.A implementação da relocação dinâmica depende do mecanismo de conversão de endereço de hardware. O método de implementação mais simples é usar um registro de relocação. Quando um job começa a ser executado, o sistema operacional é responsável por enviar o endereço inicial do job na memória principal para o registrador de relocação. Posteriormente, durante toda a execução do job, sempre que a memória for acessada, o sistema irá automaticamente transferir o endereço inicial do trabalho para o registro de relocação.O conteúdo do registro de localização é adicionado ao endereço lógico para obter o endereço físico correspondente ao endereço lógico.

    Insira a descrição da imagem aqui

A característica da realocação estática é que ela é fácil de implementar sem adicionar um mecanismo de conversão de endereço de hardware. Mas requer que uma área de memória contígua seja alocada para cada programa, se o espaço não for suficiente para acomodar todo o programa, ele não poderá ser alocado e não poderá ser movido durante a execução do programa, e não poderá ser solicitado mais espaço de memória, dificultando o compartilhamento de programas e dados.

A característica da realocação dinâmica é que o programa pode ser alocado em áreas de armazenamento descontínuas, parte de seu código pode ser carregado antes da execução do programa e então a memória pode ser alocada dinamicamente conforme necessário durante a execução do programa., o que facilita o compartilhamento de segmentos de programa e pode fornecer aos usuários um espaço de endereço muito maior que o espaço de armazenamento da memória principal. A realocação dinâmica requer suporte de hardware adicional e o algoritmo de software para gerenciamento de armazenamento é relativamente complexo.

Na relocação, a fórmula de conversão de endereço lógico para endereço físico é :

Endereço físico = conteúdo do registro de endereço base + endereço lógico

Endereço lógico e endereço físico

Endereço Lógico refere-se à parte do endereço offset gerada pelo programa e relacionada ao segmento (relacionada à página porque só é visível para o usuário) .Após a compilação do código-fonte, o endereço usado no programa de destino é o endereço lógico e o intervalo do endereço lógico é o espaço de endereço lógico. Quando o compilador compila o código-fonte, ele sempre inicia o endereçamento a partir da unidade 0. Os endereços no espaço de endereço começam em relação a 0, portanto, o endereço lógico também é chamado de endereço relativo.. Vários processos em execução no sistema podem ter o mesmo endereço lógico, mas quando esses endereços lógicos são mapeados para endereços físicos, eles se tornam locais diferentes.

Endereço físico (Endereço Físico) refere-se ao sinal de endereço da memória física que aparece no barramento de endereço externo da CPU. É o endereço do resultado final após a transformação do endereço lógico. O espaço de endereço físico refere-se à coleção de unidades de endereço físico na memória. Quando um processo necessita acessar instruções de acesso ou dados durante a operação, eles são obtidos da memória principal com base no endereço físico. O endereço físico é totalmente transparente para usuários comuns, e os usuários só precisam se preocupar com o endereço lógico do programa.O processo de conversão de endereço lógico em endereço físico é concluído automaticamente pelo hardware. Esse processo de conversão é chamado de realocação de endereço.

proteção de memória

A proteção de memória serve para evitar que um trabalho danifique intencionalmente ou não o sistema operacional ou outros trabalhos.. Os métodos de proteção de memória comumente usados ​​incluem o método de registro de limite e o método de chave de proteção de armazenamento .

  • método de registro de limites

    Existem duas maneiras de implementar a proteção de memória usando o método de registro vinculado : o método de registro de limite superior, o método de registro de limite inferior e o método de registro de endereço base e comprimento limitado .

    • Métodos de registro de limite superior e inferior. Os registradores de limite superior e inferior são usados ​​para armazenar o endereço final e o endereço inicial do trabalho, respectivamente.Durante a execução do trabalho, cada endereço que acessa a memória é comparado com o conteúdo desses dois registradores e, caso esteja fora da faixa, é gerada uma interrupção de proteção.
    • Métodos de endereço base e registro de comprimento limitado. O endereço base e os registros de limite são usados ​​para armazenar o endereço inicial do trabalho e o comprimento do espaço de endereço do trabalho, respectivamente.O registro de endereço base também é chamado de registro de relocação, e o registro de limite também é chamado de registro de endereço de limite.Durante a execução do trabalho, o endereço relativo de cada memória acessada e o valor no registro de relocação são adicionados para formar o endereço físico do trabalho; o registro de limite é comparado com o endereço relativo. Se o valor do registro de limite for excedido, uma mensagem de erro é emitida. Interrompa o sinal fora dos limites e pare o trabalho.
  • Método de chave de proteção de armazenamento

    Atribua uma chave de proteção separada para cada bloco de armazenamento, que funciona como uma "fechadura". Diferente dos blocos de armazenamento de partição, uma partição consiste em vários blocos de armazenamento, cada bloco de armazenamento tem o mesmo tamanho e o tamanho de uma partição deve ser um múltiplo inteiro do bloco de armazenamento. também,Cada trabalho que entra no sistema também recebe uma chave de proteção, que equivale a uma "chave"Quando o trabalho estiver em execução, verifique se a "chave" e o "bloqueio" correspondem. Se não corresponderem, o sistema emite um sinal de interrupção de proteção e interrompe o trabalho.

3.1.2 Cobertura e tecnologia de comutação

tecnologia de cobertura

A tecnologia de sobreposição foi usada principalmente nos primeiros sistemas operacionais, porque a capacidade de memória nos primeiros sistemas de usuário único era geralmente pequena e o espaço de armazenamento disponível era limitado. Alguns trabalhos grandes não podiam ser carregados na memória de uma só vez. Isso causou a contradição entre grandes surgiram empregos e pouca memória, e a tecnologia de cobertura foi introduzida para esse fim.

A chamada tecnologia de cobertura consiste em dividir um grande programa em uma série de coberturas, e cada cobertura é uma unidade de programa relativamente independente. Um grupo de sobreposições que não precisam ser carregadas na memória ao mesmo tempo em que o programa é executado é chamado de segmento de cobertura; esse segmento de sobreposição é alocado na mesma área de armazenamento, e essa área de armazenamento é chamada de área de sobreposição, que corresponde ao segmento de sobreposição um a um . Obviamente, para que uma área de cobertura seja partilhada por cada cobertura do segmento de cobertura correspondente em momentos diferentes, a sua dimensão deverá ser determinada pela cobertura máxima no segmento de cobertura.

Insira a descrição da imagem aqui

Os módulos A e B formam o segmento de cobertura 1 e os módulos C, D e E formam o segmento de cobertura 2.Para obter uma cobertura verdadeira, a área de cobertura correspondente deverá ser do tamanho da maior cobertura em cada segmento de cobertura.. Depois de usar a tecnologia de sobreposição, são necessários apenas 80 KB de memória para executar o programa do usuário.

tecnologia de comutação

Troca de meiosMova parte (ou todos) de um programa e dados que estão temporariamente não utilizados da memória para a memória externa para liberar espaço de memória necessário ou leia o programa ou dados especificados da memória externa para a memória correspondente e transfira o controle Uma tecnologia de expansão de memória que transfere direitos para ele e permite que ele seja executado no sistema. O escalonamento intermediário entre o escalonamento de três níveis do processador usa tecnologia de comutação.

A característica da tecnologia swap é que ela quebra a limitação de que, uma vez que um programa entra na memória principal, ele será executado até o fim, mas o tamanho do processo em execução ainda é limitado pela memória principal real.

  • A troca requer armazenamento de backup, geralmente usando discos rápidos. Deve ser grande o suficiente e fornecer acesso direto a essas imagens de memória.
  • Para utilizar a CPU de forma eficiente, o tempo de execução de cada processo precisa ser maior que o tempo de troca, e o fator que afeta o tempo de troca é principalmente o tempo de transferência.
  • Se você trocar um processo, deverá garantir que o processo esteja completamente ocioso.
  • O espaço de troca geralmente é tratado como um bloco inteiro de disco e é independente do sistema de arquivos.
  • A troca normalmente começa quando há muitos processos em execução e o espaço de memória é limitado e é pausada quando a carga no sistema diminui.
  • A troca comum não é muito usada, mas algumas variantes da tecnologia de troca ainda desempenham um papel em muitos sistemas (como os sistemas UNIX).

3.1.3 Método de gerenciamento de alocação contínua

O que é fragmentação interna versus fragmentação externa?

Dependendo das circunstâncias em que os fragmentos aparecem, os fragmentos podem ser divididos em fragmentos internos e fragmentos externos.A fragmentação interna refere-se ao espaço de memória que foi alocado para o trabalho, mas não pode ser utilizado. A fragmentação externa refere-se aos blocos de armazenamento no sistema que não foram alocados para o trabalho, mas não podem ser alocados para novos processos que solicitam espaço de memória porque os fragmentos são muito pequenos., conforme mencionado abaixo, há fragmentação interna na alocação de partições fixas, enquanto há fragmentação externa na alocação de partições dinâmicas. Uma compreensão simples é,Se a área de memória ocupada por um trabalho não estiver cheia, é fragmentação interna.Entre trabalhos, se houver uma área de memória que não está alocada para um trabalho, mas não pode ser alocada para nenhum trabalho, é fragmentação externa.

alocação única contígua

A alocação única contínua é o método de gerenciamento de armazenamento mais simples e geralmente só pode ser usada em sistemas operacionais de usuário único e tarefa única.Este método de gerenciamento de armazenamento divide a memória em duas áreas de armazenamento contínuas. Uma área de armazenamento é alocada fixamente para o sistema operacional e geralmente é colocada na parte de baixo endereço da memória. A outra área de armazenamento é usada pelos trabalhos do usuário. Normalmente, os trabalhos do usuário ocupam apenas uma parte de todo o espaço alocado e a parte restante é realmente desperdiçada.

Insira a descrição da imagem aqui

O método único de alocação contínua adotaalocação estática, adequado para programas de canal único, e tecnologia de cobertura pode ser usada.Depois que um trabalho entra na memória, ele deve esperar até terminar antes que a memória possa ser liberada.. Portanto, este método de alocação não suporta a implementação de memória virtual e não pode realizar o compartilhamento multiprograma da memória principal.

A vantagem de um único método de alocação contínua é que ele é simples de gerenciar, requer pouco suporte de software e hardware, é fácil de entender e usar pelos usuários e não apresenta problemas de interferência de outros usuários. Sua desvantagem é que ele só pode ser usado em um sistema operacional de usuário único e tarefa única, e apenas um trabalho é carregado na memória para execução, resultando em baixa utilização de vários recursos. Uma única alocação contígua cria fragmentação interna .

Alocação de partição fixa

O método de alocação de partição fixa (também chamado de gerenciamento de armazenamento de partição fixa) é o método de gerenciamento de armazenamento mais antigo que pode executar vários programas.Ele divide o espaço de memória em diversas partições de tamanho fixo e um programa pode ser carregado em cada partição. O tamanho da partição pode variar, mas deve ser determinado antecipadamente e não pode ser alterado em tempo de execução. Quando há uma partição livre, uma tarefa de tamanho apropriado é selecionada na fila de backup para ser carregada e executada.. Na alocação de partição fixa, os programas geralmente são carregados na memória usando relocação estática . Para obter alocação fixa de partições, o sistema precisa estabelecer uma tabela de descrição de partições para registrar os números de partições disponíveis para alocação, o tamanho da partição, o endereço inicial e o status da partição, geralmente classificados em ordem de tamanho da partição.

Insira a descrição da imagem aqui

Quando um programa do usuário deve ser carregado na memória, o programa de alocação de memória recupera a tabela de descrição da partição, encontra uma partição não alocada que atenda aos requisitos da tabela e a atribui ao programa e, em seguida, modifica a entrada correspondente da tabela de partição no tabela de descrição da partição. status; se uma partição de tamanho suficiente não puder ser encontrada, a alocação de memória para o programa será recusada. Quando a execução do programa é concluída e os recursos de memória não são mais necessários, a partição ocupada pelo programa é liberada e o programa de gerenciamento só precisa definir o status da partição correspondente como não alocado. O tamanho das partições pode ser igual ou desigual.

  • As partições são do mesmo tamanho. A falta de flexibilidade resulta em desperdício de espaço de memória. Quando um programa é muito grande, uma partição não é suficiente para carregá-lo, fazendo com que ele não seja executado.
  • As partições não são iguais em tamanho.A área de memória pode ser dividida em várias partições menores, um número apropriado de partições médias e um pequeno número de partições grandes.. Partições apropriadas podem ser alocadas com base no tamanho do programa.

A vantagem da alocação de partição fixa é que ela pode ser usada para a alocação de armazenamento mais simples em sistemas de multiprogramação. Sua desvantagem é que ela não pode compartilhar uma área de memória principal com vários processos, a taxa de utilização é baixa e ocorrerá fragmentação interna .

Alocação de partição dinâmica

A alocação de partição dinâmica, também conhecida como alocação de partição variável, é um método de particionamento que divide a memória dinamicamente.Este método de alocação não divide a memória principal em partições antecipadamente, em vez disso, quando o trabalho entra na memória principal, a partição é estabelecida dinamicamente de acordo com o tamanho do trabalho, e o tamanho da partição atende apenas às necessidades do trabalho . Portanto, o tamanho das partições no sistema é variável e o número de partições também é variável.

  • Estruturas de dados na alocação de partições

    Para obter a alocação dinâmica de partições, as estruturas de dados correspondentes também devem ser configuradas no sistema para registrar o uso da memória. As estruturas de dados comumente usadas são as seguintes.

    • Tabela de partição gratuita. Configure uma tabela de partições livres para registrar partições livres no sistema. Cada partição livre corresponde a uma entrada da tabela. Cada entrada da tabela inclui o número da partição, endereço inicial, tamanho e status.

      Insira a descrição da imagem aqui

    • Cadeia de partição gratuita. Use o ponteiro do link head para vincular as partições livres na memória para formar uma cadeia de partições livres. A Figura 3-8 mostra um exemplo de cadeia de partição livre,O método de implementação consiste em usar os primeiros bytes de cada partição livre para armazenar informações de controle, que armazenam o tamanho da partição livre e o ponteiro para a próxima partição livre.

      Insira a descrição da imagem aqui

  • Algoritmo de alocação de partição

    Para carregar um trabalho na memória, uma partição que atenda aos requisitos do trabalho deve ser selecionada na tabela de partições livres (ou cadeia de partições livres) de acordo com um determinado algoritmo de alocação e alocada para o trabalho.Se a capacidade desta partição livre for maior que a capacidade de espaço solicitada pelo trabalho, então parte da partição será alocada ao trabalho e a parte restante ainda permanecerá na tabela de partições livres (ou cadeia de partições livres). ao mesmo tempo, a tabela de partição livre (ou cadeia de partição livre) para modificar as informações relevantes

    • Primeiro algoritmo de adaptação. Use uma lista vinculada para formar uma fila em ordem crescente de endereço das partições livres.Cada vez que você precisar alocar memória para um processo,Comece a pesquisar no início da fila e siga a lista vinculada até encontrar uma partição livre grande o suficiente.e, em seguida, aloque um pedaço de espaço de memória da partição para o solicitante de acordo com o tamanho do trabalho, e as partições livres restantes ainda permanecerão na tabela de partições livres (ou cadeia de partições livres). Se não houver partição qualificada do início ao fim, a alocação falhará.
      • Vantagens: Priorizar o uso de partições livres na parte de baixo endereço da memória, preservando assim as grandes partições livres na parte de alto endereço sem fragmentação interna.
      • Desvantagens: Como a parte de endereço inferior é continuamente dividida, há muitas pequenas partições livres (fragmentos externos) sob a extremidade de endereço inferior que são difíceis de usar, e cada pesquisa começa na parte de endereço inferior, o que sem dúvida aumenta o tempo necessário para pesquisar para partições gratuitas disponíveis.
    • Adapte o algoritmo da próxima vez. Este algoritmo também é chamado de algoritmo iterativo de primeira adaptação.Ou seja, com base no primeiro algoritmo de adaptação, a fila é transformada em uma fila circular (as partições livres ainda são organizadas em ordem crescente de endereços), e as partições livres não são encontradas no topo da fila todas as vezes , mas a partir da última partição livre encontrada . Comece a procurar a próxima partição de
      • Vantagens: Isso torna a distribuição de partições livres mais uniforme e reduz o custo de localização de partições livres.
      • Desvantagens: Resultando na falta de grandes partições livres.
    • Algoritmo de melhor ajuste. É necessário que as partições livres sejam organizadas em ordem crescente de capacidade . Cada vez que o espaço de memória é alocado para um trabalho,Sempre atribua a um trabalho a menor partição livre que possa atender aos requisitos de espaço. Isso resulta na menor partição livre de memória.
      • Vantagens: Este método sempre atribui a partição mais apropriada ao trabalho e preserva partições grandes.
      • Desvantagens: Resulta em muito espaço fragmentado e difícil de usar.
    • Algoritmo de pior ajuste. As partições livres devem ser organizadas em ordem decrescente de capacidade.Cada vez que o espaço de memória é alocado para um trabalho,Sempre aloque para o trabalho o maior espaço de memória que atenda aos requisitos
      • Vantagens: Isso torna a partição livre restante após a alocação de trabalhos relativamente grande, o suficiente para carregar outros trabalhos.
      • Desvantagens: Como a maior partição livre é sempre alocada primeiro, quando chega um trabalho grande, sua solicitação de espaço de armazenamento não será atendida.
  • Reciclagem de partição

    Quando a execução do trabalho terminar, o sistema deverá recuperar as partições usadas. Com base no tamanho e no primeiro endereço da partição recuperada, o sistema verifica se existem partições livres adjacentes na tabela de partições livres (ou cadeia de partições livres).Se houver partições livres adjacentes, ele as funde em uma grande área livre e modifica as partições relevantes.informações de status. Existem as seguintes quatro situações em que uma partição recuperada é adjacente a uma partição livre existente:

    Insira a descrição da imagem aqui

    • A área de reciclagem é adjacente a uma divisória livre, conforme mostrado na Figura 3-9a.Neste momento, a área de reciclagem e a partição adjacente superior F1 devem ser fundidas em uma partição livre contínua. O primeiro endereço da partição mesclada é o primeiro endereço da partição livre F1 e seu tamanho é a soma dos dois.
    • Existe uma divisória ociosa adjacente à área de reciclagem, conforme mostrado na Figura 3-9b.Neste momento, a área de reciclagem e a próxima partição F1 devem ser fundidas em uma partição livre contínua. O primeiro endereço da partição mesclada é o primeiro endereço da área de reciclagem e seu tamanho é a soma dos dois.
    • As partes superior e inferior da área de reciclagem são adjacentes a uma divisória livre, conforme mostrado na Figura 3-9c.Neste momento, a área de reciclagem e F1 F2 devem ser fundidas em uma partição livre contínua. O primeiro endereço da partição mesclada é o primeiro endereço de F1, e seu tamanho é a soma dos três, e F2 deve ser excluído da tabela de partição livre (partição livre)
    • A área de recuperação não é adjacente a nenhuma partição livre,Neste momento, crie uma entrada de tabela separada, preencha o tamanho e endereço da partição e outras informações e adicione-as ao local apropriado da tabela de partição livre (ou cadeia de partição livre), conforme mostrado na Figura 3-9d.
  • Gerenciamento dinâmico de alocação de partições

    No método de gerenciamento de armazenamento de partição, o trabalho deve ser carregado em um espaço de memória contínuo.. Se houver várias partições pequenas no sistema, cuja capacidade total seja maior que a tarefa a ser carregada, mas por não serem contíguas, a tarefa não poderá ser carregada na memória. Por exemplo, existem 4 partições vazias na memória que não são adjacentes. Seus tamanhos são 20 KB, 30 KB, 15 KB e 25 KB, respectivamente, e o tamanho total é de 90 KB. Mas se chegar um trabalho de 40 KB, o trabalho não poderá ser carregado na memória porque a capacidade de todas as partições livres no sistema é inferior a 40 KB, portanto, é necessário o gerenciamento dinâmico da alocação de partições.

    • Tecnologia de emenda. Os chamados fragmentos (também chamados de frações) sãoRefere-se ao espaço de armazenamento na memória que não pode ser usado. No modo de gerenciamento de armazenamento de partição, após um período de funcionamento do sistema, os fragmentos na memória ocuparão uma quantidade considerável de espaço.

      Uma maneira de resolver o problema da fragmentação éMova todas as partições alocadas na memória para uma extremidade da memória principal, de modo que várias pequenas áreas livres que foram originalmente espalhadas sejam conectadas em uma grande área livre. Este método de emendar várias pequenas partições espalhadas em uma grande partição por meio do movimento é chamado de emenda ou compactação, que também pode ser chamada de compactação.

      Além do problema técnico de como realizar a emenda, a implementação da tecnologia de emenda também apresenta o problema do tempo de emenda.Existem duas soluções para esse problema.

      • A primeira opção éEmende imediatamente quando uma partição é reciclada, para que haja sempre apenas uma área livre contínua na memória principal. No entanto, a emenda é demorada e uma frequência de emenda muito alta aumentará a sobrecarga do sistema.
      • A segunda opção éEmendar quando uma partição livre grande o suficiente não puder ser encontrada e a capacidade total puder atender aos requisitos do trabalho. A frequência de emenda desta forma é muito menor do que a solução original, mas o gerenciamento de partições livres é um pouco mais complicado.
    • Tecnologia de alocação de partição de realocação dinâmica.O algoritmo de alocação de partição de realocação dinâmica é basicamente o mesmo que o algoritmo de alocação de partição dinâmica, a única diferença entre os dois é que a função de emenda é adicionada a este algoritmo de alocação , geralmente quando uma partição livre grande o suficiente não pode ser encontrada para atender aos requisitos do trabalho , e a emenda do sistema é executada quando a capacidade total das partições médias e livres é maior que os requisitos do trabalho.

  • Vantagens e desvantagens da alocação dinâmica de partições

    • vantagem
      • Ele percebe que multiprogramas compartilham a memória principal (compartilhar significa que vários processos existem em diferentes locais da memória principal ao mesmo tempo).
      • A solução de gerenciamento é relativamente simples e não requer custos adicionais.
      • Os meios para alcançar a proteção do armazenamento são relativamente simples.
    • deficiência
      • A memória principal não é totalmente utilizada e há fragmentação externa.
      • É impossível conseguir o compartilhamento de informações de memória em vários processos (compartilhamento significa que vários processos usam o mesmo segmento de memória principal).
      • A expansão da memória principal não pode ser alcançada e o espaço de endereço do processo é limitado pelo espaço de armazenamento real.

3.1.4 Método de gestão de alocação descontínua

A alocação não contígua permite que um programa seja espalhado por partições de memória não contíguas. No método de gerenciamento de alocação contínua, descobrimos que mesmo que a memória tenha mais de 1 GB de espaço livre, se não houver 1 GB de espaço contínuo, um trabalho que requer 1 GB de espaço ainda não poderá ser executado: MasSe for utilizada alocação descontínua, o espaço de memória de 1 GB exigido pelo trabalho pode ser alocado de forma dispersa em diversas áreas da memória. É claro que isso também requer espaço adicional para armazenar os índices deles (áreas dispersas), tornando a densidade de armazenamento do método de alocação descontínua baixo. em armazenamento contínuo

O método de gerenciamento de alocação não contínua é dividido em método de gerenciamento de armazenamento de paginação e método de gerenciamento de armazenamento segmentado, dependendo se o tamanho da partição é fixo. O método de gerenciamento de armazenamento de paginação é dividido em paginação básica , de acordo com se todas as páginas do trabalho precisam ser carregadas na memória antes de executar o trabalho. Método de gerenciamento de armazenamento e método de gerenciamento de armazenamento de paginação de solicitação

Método básico de gerenciamento de armazenamento de paginação

No gerenciamento de armazenamento particionado, os trabalhos devem ser colocados em uma área de armazenamento contínuo, o que causará problemas de fragmentação (fragmentação externa). Embora o problema da fragmentação possa ser resolvido através da tecnologia de emenda, o custo é mais elevado. Se você permitir que um trabalho seja distribuído por muitas partições não contíguas, a emenda poderá ser evitada, resolvendo efetivamente o problema da fragmentação externa. Com base nessa ideia, foi introduzida a tecnologia de gerenciamento de armazenamento de paginação (ou gerenciamento de armazenamento de página).

  • Princípio de paginação

    No gerenciamento de armazenamento de paginação,O espaço de endereço do trabalho de um usuário é dividido em diversas áreas de tamanhos iguais chamadas páginas ou páginas.. Correspondentemente, oO espaço de armazenamento da memória principal também é dividido em áreas iguais ao tamanho da página, chamadas de blocos ou blocos físicos.. Ao alocar espaço de armazenamento para um trabalho, ele é sempre alocado em blocos, e qualquer página do trabalho pode ser colocada em qualquer bloco da memória principal .

    Um bloco físico na memória principal igual ao tamanho de uma página também pode ser chamado de quadro de página.

    Quando o trabalho agendado estiver em execução,Todas as suas páginas devem ser carregadas na memória principal de uma só vez;A tarefa espera se não houver blocos físicos suficientes na memória principal. Esse tipo de gerenciamento de armazenamento é chamado de paginação simples ou paginação pura.

    O tamanho da página é determinado pela estrutura de endereço da máquina. Ao determinar a estrutura de endereço, se você selecionar uma página menor, poderá diminuir os fragmentos dentro da página e reduzir o espaço total dos fragmentos de memória, o que é benéfico para melhorar a utilização da memória, mas também fará com que cada processo exija mais páginas , resultando em Se a tabela de páginas for muito longa, ela ocupará mais memória e reduzirá a eficiência da troca de páginas dentro e fora. Se a página selecionada for maior, embora o comprimento da tabela de páginas possa ser reduzido e a eficiência da troca de páginas dentro e fora possa ser melhorada, isso aumentará a fragmentação dentro da página.

    Portanto, o tamanho da página deve ser selecionado moderadamente (geralmente uma potência inteira de 2) para facilitar a conversão de endereço, geralmente 512B~4KB.

    O endereço lógico no sistema de gerenciamento de armazenamento de paginação (veja a Figura 3-10) contém duas partes: a primeira parte é o número da página P e a última parte é o deslocamento intra-página W (também chamado de deslocamento intra-página).

    Insira a descrição da imagem aqui

    Na estrutura de endereço acima, o comprimento do endereço composto por duas partes é de 32 bits. emOs bits 0 a 11 são os endereços de bits dentro da página, ou seja, o tamanho de cada página é 2 12 B = 4 KB,Os bits 12 a 31 são números de página, ou seja, o número máximo de páginas que um processo pode executar é 2 20 = 1 milhão de páginas

    Suponha que o endereço lógico seja A e o tamanho da página seja L, então o número da página P= (int)(A/L) e o bit da página W=A%L. Entre eles, "(int)" é uma conversão forçada de tipo para um tipo inteiro, "/" é uma operação de quociente e "%" é uma operação de resto.

  • tabela de páginas

    Para mapear os números de página consecutivos no endereço lógico para a memória física em vários blocos físicos discretos, é necessário mapear cada página para cada bloco físico um a um. Esse relacionamento de mapeamento é refletido na tabela de páginas.. Cada entrada da tabela de páginas na tabela de páginas consiste em um número de página e um número de bloco. De acordo com a entrada da tabela de páginas, o número do bloco físico na memória física correspondente a cada número de página pode ser encontrado. As tabelas de páginas geralmente são armazenadas na memória.

    Insira a descrição da imagem aqui

    Suponha que um programa de usuário seja dividido em n páginas no modo básico de gerenciamento de armazenamento de paginação, conforme mostrado na Figura 3-11a, então a relação correspondente entre seu número de página e o número do bloco na memória é mostrada na tabela de páginas na Figura 3 -11b. De acordo com o relacionamento correspondente na tabela de páginas, cada página do programa do usuário é armazenada na área de memória da Figura 3-11c.

  • mecanismo básico de tradução de endereços

    Insira a descrição da imagem aqui

    Todo o processo de conversão de endereço é concluído automaticamente pelo hardware.

    Registro de tabela de páginas (PTR): usado para armazenar o endereço inicial da tabela de páginas na memória e o comprimento da tabela de páginas

    Suponha que o tamanho da página seja L, o comprimento da tabela de páginas seja M, o endereço seja A e o endereço seja E. As etapas para obter o endereço físico E do endereço lógico A e acessar a memória estão listadas abaixo.

    • Calcule o número da página P=(int)(A/L); o bit na página W=A%L.
    • Compare o número da página P e o comprimento da tabela de páginas M. Se P>=M, uma interrupção fora dos limites é gerada, caso contrário, vá para 3) para continuar a execução.
    • O endereço inicial F da tabela de páginas é adicionado ao produto do número de página P e o comprimento da entrada da tabela de páginas, e o valor do endereço obtido é usado para recuperar da memória o número b armazenado na unidade de memória. é o número do bloco físico.
    • O produto do número do bloco físico b e o tamanho do bloco físico e o deslocamento intra-página W sintetizam o endereço físico E.
    • Use o endereço físico E obtido para acessar a memória.
  • Mecanismo de tradução de endereços com tabela de blocos

    **Se a tabela de páginas estiver inteiramente colocada na memória principal, então é necessário acessar a memória principal pelo menos duas vezes para acessar um dado ou uma instrução. em,A primeira vez é determinar o endereço físico dos dados ou instruções acessadas acessando a tabela de páginas, e a segunda vez é acessar os dados ou instruções com base no endereço físico obtido.**Obviamente, este método é metade da lentidão da execução normal de instruções.

    Para melhorar a velocidade de tradução de endereços, uma memória cache com função de pesquisa paralela (também chamada de memória associativa ou tabela rápida) pode ser adicionada ao mecanismo de tradução de endereços, e algumas entradas da tabela de páginas podem ser colocadas nesta memória cache (TLB) Geralmente é implementado por memória semicondutora e seu ciclo de trabalho é aproximadamente o mesmo da CPU, mas o custo é maior. Para reduzir custos,Normalmente, as entradas da tabela de páginas atualmente acessadas pelo trabalho em execução são armazenadas na tabela rápida e o restante da tabela de páginas ainda é armazenado na memória.

    Insira a descrição da imagem aqui

    • De acordo com o endereço lógico, são obtidos o número da página P e o deslocamento da página W.
    • Primeiro compare o número da página com todos os números de página na tabela rápida. Se houver um número de página correspondente, o número do bloco correspondente será lido diretamente e concatenado com o deslocamento intra-página para obter o endereço físico; se não houver página correspondente número, o acesso ainda é necessário.A tabela de páginas na memória retira o número do bloco físico da tabela de páginas, concatena-o com o deslocamento intra-página para obter o endereço físico e armazena essa entrada da tabela de páginas na tabela rápida.
    • Use o endereço físico obtido para acessar a memória.Como a tabela rápida é um registro e tem espaço de armazenamento limitado, muitas vezes ela não consegue acomodar algumas unidades da tabela de páginas. Portanto, nem sempre é possível encontrar o número do bloco correspondente ao número da página necessária na tabela rápida. Antes de cada pesquisa na tabela de páginas, a tabela rápida é pesquisada primeiro. Se o número de página necessário for encontrado, o número do bloco será lido diretamente e, em seguida, a memória só precisará ser acessada uma vez; se o número de página necessário não for encontrado, então o número do bloco só pode ser lido na tabela de páginas.Para encontrar o número do bloco é necessário acessar a memória duas vezes, e o tempo necessário para acessar a tabela rápida é maior do que quando não há tabela rápida. Portanto, devemos tentar o nosso melhor para garantir que os números de página comumente usados ​​e os números de bloco correspondentes sejam colocados na tabela rápida, de modo a reduzir verdadeiramente o tempo de acesso.
  • Tabela de páginas de dois níveis e tabela de páginas de vários níveis

    • Cálculo do tamanho da tabela de páginas. Em sistemas básicos de paginação, o comprimento da tabela de páginas M páginas é determinado pelo número de dígitos no número da página. O tamanho da tabela de páginas pode ser entendido como a área de um retângulo. O comprimento desse retângulo é o comprimento M da tabela de páginas e a largura é o tamanho de cada entrada da tabela de páginas, ou seja, o número de dígitos em o número do bloco.

    • Tabela de páginas de dois níveis. Pode-se observar pela fórmula de cálculo do tamanho da tabela de páginas que o tamanho da tabela de páginas é proporcional ao comprimento da tabela de páginas, e o comprimento da tabela de páginas aumenta exponencialmente com o aumento no número de números de páginas. Portanto, se o endereço lógico do sistema tiver um grande número de dígitos, a tabela de páginas será muito grande e toda a tabela de páginas precisará ser armazenada continuamente na memória. Isso é uma coisa muito difícil, então há um nível de dois tabela de páginas.

      Insira a descrição da imagem aqui

      Um sistema de tabela de páginas de dois níveis divide os endereços lógicos em números de páginas externas, endereços internos de páginas externas e endereços de páginas internas .Primeiro, use o número da página externa P1 para pesquisar na tabela de páginas externa. O conteúdo da unidade encontrada é o primeiro endereço da tabela de páginas secundária. O primeiro endereço da tabela de páginas mais o endereço da página interna P2 da página externa é o endereço de a entrada da tabela de páginas. Retire o valor de dentro (ou seja, o número do bloco físico). O endereço físico é obtido combinando o número do bloco físico com o endereço da página d.. No mecanismo da tabela de páginas de dois níveis, tanto o número de dígitos no número da página externa quanto o número de dígitos no endereço na página externa são muito menores do que no mecanismo da tabela de páginas de um nível. da tabela de páginas pode ser bastante reduzida, e a página correspondente O tamanho da tabela também é bastante reduzido.

    • tabela de páginas multinível

      Para uma máquina de 32 bits (o número de endereços lógicos é de 32 bits), é apropriado usar um mecanismo de tabela de páginas de dois níveis, mas para um sistema de 64 bits, o mecanismo de tabela de páginas de dois níveis fará com que o tamanho de a tabela de páginas é inaceitável, portanto, você pode reduzir o tamanho da tabela de páginas continuando a aumentar o número de níveis da tabela de páginas, mas isso aumentará muito o número de tabelas de páginas. A principal desvantagem das tabelas de páginas multinível é que elas exigem múltiplos acessos à memória e cada alteração de endereço é uma perda de tempo.

  • Compartilhamento e proteção de páginas

    Em sistemas de multiprogramação, o compartilhamento de dados é muito importante.Em um sistema de gerenciamento de armazenamento paginado, o compartilhamento é obtido fazendo com que as páginas no espaço de endereço do usuário compartilhado apontem para o mesmo bloco físico.

    O compartilhamento é mais difícil em um sistema de gerenciamento de armazenamento paginado do que em um sistema segmentado. Porque no sistema de gerenciamento de armazenamento de paginação, a divisão do espaço de endereço do trabalho em páginas é transparente para o usuário, e o espaço de endereço do trabalho é linearmente contínuo.Quando o sistema divide o espaço de endereçamento do trabalho em páginas do mesmo tamanho, as partes compartilhadas não são necessariamente incluídas em uma página completa, desta forma, os dados que não deveriam ser compartilhados também são compartilhados, o que não conduz à confidencialidade.. Além disso, durante o processo de divisão do espaço de endereçamento de cada trabalho em páginas, o endereço inicial da parte compartilhada pode ter diferentes deslocamentos intra-página em cada página, o que também dificulta o compartilhamento.

    O sistema de gerenciamento de armazenamento de paginação pode fornecer dois métodos de proteção para memória:

    • Uma delas é a proteção de endereço fora dos limites, que é realizada comparando o comprimento da tabela de páginas no mecanismo de tradução de endereços com o número da página no endereço lógico a ser acessado.
    • A outra é proteger as informações da memória por meio de informações de controle de acesso na tabela de páginas. Por exemplo, definir um campo de controle de acesso na tabela de páginas e definir o campo como leitura, gravação, execução e outras permissões de acordo com o uso da página. Quando o endereço é convertido, não apenas o número do bloco correspondente à página deve ser obtido da entrada correspondente na tabela de páginas, mas também se a operação é consistente com as operações permitidas pelo campo de controle de acesso. Caso contrário, o hardware irá capturá-lo e emitir uma proteção Perturbação sexual.
  • Vantagens e desvantagens do gerenciamento básico de armazenamento paginado

    • vantagem
      • Alta utilização de memória
      • Alocação discreta implementada
      • Facilita o controle de acesso ao armazenamento
      • Sem detritos externos.
    • deficiência
      • Requer suporte de hardware (é uma mesa rápida)
      • A eficiência de acesso à memória diminui
      • Dificuldade em compartilhar
      • Existem fragmentos internos

Métodos básicos de gerenciamento de armazenamento segmentado

O gerenciamento de armazenamento segmentado tem as seguintes vantagens em comparação ao gerenciamento de armazenamento de paginação:

  1. Programação conveniente: os usuários dividem seus trabalhos em vários segmentos de acordo com relações lógicas.Cada segmento é endereçado a partir de 0 e possui nome e comprimento próprios.
  2. Para o compartilhamento de informações, uma página é uma unidade física de armazenamento de informações e não tem significado completo; enquanto um segmento é uma unidade lógica de informações. Os usuários podem colocar parte do código e dos dados que precisam ser compartilhados no mesmo segmento para facilitar a informação compartilhamento.
  3. Proteção da informação: Como cada segmento contém informações relativamente independentes, a proteção da informação pode ser feita por meio da proteção do segmento. A proteção da informação é muito mais conveniente do que a paginação.

  • Princípio de armazenamento segmentado

    Em um sistema de gerenciamento de armazenamento segmentado,O espaço de endereço de um trabalho é composto de vários segmentos lógicos. Cada segmento é um conjunto relativamente completo de informações no sentido lógico. Cada segmento tem seu próprio nome. Cada segmento é endereçado a partir de 0 e usa um espaço de endereço contíguo. Portanto, o espaço de endereço de todo o trabalho é bidimensional (a classificação dos segmentos é uma dimensão e o deslocamento dentro do segmento é outra dimensão). No gerenciamento de armazenamento segmentado, a memória é alocada em unidades de segmentos e cada segmento recebe uma área de memória contínua, mas os segmentos não precisam ser contínuos . A alocação e reciclagem de memória são semelhantes à alocação dinâmica de partições.

    A estrutura de endereço lógico do sistema de gerenciamento de armazenamento segmentado consiste no número do segmento S e no bit interno W (também chamado de deslocamento intra-segmento).

    Insira a descrição da imagem aqui

    O número do segmento S é geralmente um número inteiro positivo consecutivo começando em 0. Quando o número de bits ocupados pelo número do segmento e pelo deslocamento intra-segmento na estrutura de endereço lógico é determinado, o número máximo de segmentos permitidos em um espaço de endereço de trabalho e o comprimento máximo de cada segmento também são determinados.

    Por exemplo, na Figura 3-15, o número do segmento ocupa 16 bits e o deslocamento intra-segmento ocupa 16 bits, portanto, uma operação pode ter até 2 16 = 65536 segmentos e o comprimento do segmento grande é de 64 KB .

    O espaço de endereço do sistema de gerenciamento de armazenamento de paginação é unidimensional, enquanto o sistema de gerenciamento de armazenamento segmentado é bidimensional.

  • Tabela de segmentos e processo de conversão de endereço

    Semelhante ao gerenciamento de armazenamento de paginação, para realizar a transformação do endereço lógico em endereço físico, o sistema estabelece uma tabela de segmentos para cada processo, na qual cada entrada da tabela descreve as informações de um segmento. A entrada da tabela contém o número do segmento, segmento comprimento e o endereço inicial da memória do segmento.

    Insira a descrição da imagem aqui

    Após configurar a tabela de segmentos, o processo em execução pode encontrar a área de memória correspondente a cada segmento pesquisando a tabela de segmentos para obter o mapeamento de segmentos lógicos para áreas de memória física.

    Insira a descrição da imagem aqui

    O processo de tradução de endereços é concluído automaticamente pelo hardware.

    Insira a descrição da imagem aqui

    Obtenha o endereço físico E do endereço lógico A e acesse a memória da seguinte forma:

    • Tome os primeiros dígitos do endereço lógico A como o número do segmento S e os últimos dígitos como o deslocamento intra-segmento W.
  • Compare o número do segmento S e o comprimento da tabela de segmentos M. Se S>=M, uma interrupção fora dos limites será gerada, caso contrário, vá para 3) para continuar a execução.

    • Retire o endereço inicial F da tabela de segmentos e o número do segmento S, some-os e use o valor do endereço obtido para recuperar da memória o número armazenado na unidade de memória. Os primeiros dígitos do número retirados são o comprimento do segmento C e os últimos dígitos são o endereço inicial (endereço base) b do segmento. Se o deslocamento dentro do segmento for W>=C, uma interrupção fora dos limites será gerada; caso contrário, vá para 4) para continuar a execução.
    • O endereço base b do segmento e o deslocamento intra-segmento W são somados para obter o endereço físico E.
    • O endereço físico E usado para acessar a memória.
  • Compartilhando e protegendo segmentos

    Em um sistema de gerenciamento de armazenamento segmentado, o compartilhamento de segmentos é obtido fazendo com que as entradas correspondentes nas tabelas de segmentos de vários trabalhos apontem para a mesma cópia física do segmento compartilhado.

    Semelhante ao gerenciamento de paginação,Existem dois tipos principais de proteção para gerenciamento de segmentação: proteção transfronteiriça e proteção de controle de acesso.

  • Vantagens e desvantagens do gerenciamento básico de armazenamento segmentado

    • vantagem
      • Estruturas de dados que facilitam a modularização do programa e o processamento de transformações
      • Facilita a vinculação e o compartilhamento dinâmicos
      • Sem detritos internos.
    • deficiência
      • Semelhante à paginação, requer suporte de hardware
      • Para atender ao crescimento dinâmico dos segmentos e reduzir a fragmentação externa, é utilizada tecnologia de emenda
      • O tamanho máximo de um segmento é limitado pelo espaço disponível na memória principal, com fragmentação externa.
  • A diferença entre segmentação e paginação

    O gerenciamento de armazenamento de paginação e o gerenciamento de armazenamento segmentado têm muitas semelhanças: por exemplo, ambos usam métodos de alocação discretos e implementam a conversão de endereços por meio de um mecanismo de conversão de endereços. Mas também existem muitas diferenças conceituais entre os dois

    Insira a descrição da imagem aqui

Método básico de gerenciamento de armazenamento de páginas de segmento

Como pode ser visto na introdução acima, o sistema de paginação pode efetivamente melhorar a utilização da memória e resolver o problema de fragmentação, enquanto o sistema de segmentação pode refletir a estrutura lógica do programa e facilitar o compartilhamento de segmentos. Se esses dois métodos de gerenciamento de armazenamento forem combinados, um método de gerenciamento de armazenamento de páginas segmentado será formado.

Em um sistema de gerenciamento de armazenamento de páginas segmentado, o espaço de endereço de um trabalho é primeiro dividido em vários segmentos lógicos, cada segmento tem seu próprio número de segmento e, em seguida, cada segmento é dividido em várias páginas de tamanho fixo. O gerenciamento do espaço da memória principal ainda é igual ao gerenciamento da paginação, dividindo-o em vários blocos físicos do mesmo tamanho da página, e a alocação da memória principal é baseada em blocos físicos.

A estrutura de endereço lógico do sistema de gerenciamento de armazenamento de páginas de segmento inclui três partes: número do segmento S, número da página dentro do segmento P e deslocamento da página D

Insira a descrição da imagem aqui

Para implementar a conversão de endereços, as tabelas de segmentos e as tabelas de páginas precisam ser estabelecidas simultaneamente no sistema de gerenciamento de armazenamento de páginas de segmentos. O sistema cria uma tabela de segmentos para cada processo e cada segmento possui uma tabela de páginas. A entrada na tabela de segmentos deve incluir pelo menos o número do segmento, o endereço inicial da tabela de páginas e o comprimento da tabela de páginas, onde o endereço inicial da tabela de páginas indica a posição inicial da tabela de páginas do segmento no memória principal; a entrada na tabela de páginas deve incluir pelo menos o número da página e o número do bloco. Além disso, para facilitar a conversão de endereços, o sistema também precisa configurar um registrador de tabela de segmentos para armazenar o endereço inicial e o comprimento da tabela de segmentos.

Insira a descrição da imagem aqui

As etapas para o endereço lógico A obter o endereço físico E e então acessar a memória :

  • Os primeiros dígitos retirados do endereço de edição são o número do segmento S, os dígitos do meio são o número da página P e os últimos dígitos são o deslocamento da página W.
  • Compare o número do segmento S e o comprimento da tabela de segmentos M. Se S>M, uma interrupção fora dos limites é gerada, caso contrário, vá para 3) para continuar a execução.
  • Retire o endereço inicial F da tabela de segmentos e adicione-o ao número do segmento S, e use o valor do endereço obtido para armazenar o número na memória. Os primeiros dígitos do número retirado são o comprimento da tabela de páginas C, e os últimos dígitos são o endereço inicial da tabela de páginas D. Se o número da página P> C, uma interrupção fora dos limites é gerada, caso contrário, vá para 4) para continuar a execução.
  • O endereço inicial da tabela de páginas d é adicionado ao produto do número de página P e o comprimento da entrada da tabela de páginas para obter o endereço físico da entrada da tabela de páginas na memória. O valor armazenado neste endereço é considerado o número do bloco físico b.
  • Use o número do bloco físico b e o bit de página W para formar o endereço físico E
  • Use o endereço físico E obtido para acessar a memória.

Pode-se observar pelas etapas acima que a transformação de endereço do sistema de gerenciamento de armazenamento de páginas segmentadas requer três acessos à memória, portanto o registrador de cache (tabela rápida) também pode ser utilizado para reduzir o número de acessos à memória.

O estilo de página de segmento realmente combina as vantagens do estilo de segmento e do estilo de página e supera o problema de fragmentação externa do estilo de segmento, masA fragmentação interna do tipo de página de segmento não é tão pequena quanto a do tipo de página. No método de gerenciamento de armazenamento de página, um programa médio tem fragmentação de meia página, enquanto no método de gerenciamento de armazenamento de página de segmento, um segmento médio tem fragmentação de meia página, e um programa geralmente tem muitos segmentos, então, em média, a fragmentação interna de o tipo de página do segmento é superior ao tipo de página. preciso de mais

3.2 Gerenciamento de memória virtual

3.2.1 Conceitos básicos de memória virtual

Razões para a introdução da memória virtual

Vários métodos de gerenciamento de armazenamento introduzidos anteriormente analisam como carregar vários programas na memória em paralelo. Todos esses métodos têm as duas características a seguir: único (o trabalho só pode ser executado depois que todos os trabalhos forem carregados na memória) e residente (o trabalho reside na memória até o final da execução). Eles são difíceis de satisfazer trabalhos maiores ou mais trabalhos entrando na memória para execução.

Durante a execução do programa, alguns códigos raramente são usados ​​(como tratamento de erros) e alguns programas requerem muito tempo para processamento de E/S, resultando em muito desperdício de espaço de memória. Introduzido para este fimUma tecnologia de gerenciamento de armazenamento que permite que os trabalhos sejam executados mesmo depois de parcialmente carregados, ou seja, tecnologia de gerenciamento de memória virtual

princípio da localidade

Quando a maioria dos programas são executados, apenas uma parte do código do programa é usada em um curto período de tempo. Da mesma forma, o espaço de armazenamento acessado pelo programa também é limitado a uma determinada área. Este é o princípio da localidade de execução do programa.

  • Localidade temporal. Uma execução e a próxima execução de uma instrução, um acesso e o próximo acesso de um dado são todos concentrados em um curto período de tempo.
  • localidade espacial. A instrução atual e várias instruções adjacentes, os dados atualmente acessados ​​e os dados adjacentes estão todos concentrados em uma área menor.

A definição e características da memória virtual

Com base no princípio da localidade, quando o programa é carregado, por um lado, parte do programa pode ser colocada na memória, e o restante pode ser colocado na memória externa, e então o programa pode ser iniciado (carregamento parcial) .Durante a execução do programa, quando a informação acessada não estiver na memória, o sistema operacional transferirá a parte necessária para a memória (solicitação de transferência). Por outro lado, o sistema operacional substitui o conteúdo temporariamente não utilizado da memória para a memória externa, liberando assim espaço para armazenar as informações a serem transferidas para a memória (função de substituição). Do ponto de vista do efeito, o sistema de computador parece fornecer aos usuários duas memórias com capacidade de armazenamento muito maior que a memória real.Esse sistema de memória que expande logicamente a capacidade de memória é chamado de memória virtual (denominada memória virtual).

É chamada de memória virtual porque essa memória não existe de fato, o sistema fornece apenas carregamento parcial, carregamento de solicitações e funções de substituição, dando ao usuário a sensação de que existe uma memória que pode atender aos requisitos do espaço de endereço do trabalho.

O significado da memória virtual é separar o espaço de endereço onde o programa existe do espaço de armazenamento durante a execução.Os programadores podem escrever programas no espaço de endereço sem considerar o tamanho da memória real.A capacidade da memória virtual é determinada pela estrutura de endereços do computador e não é infinita.

Características da memória virtual

  • discrição. Os programas são armazenados discretamente na memória (a discrição não é um recurso exclusivo da memória virtual, a paginação básica e a segmentação também são discretas).
  • várias vezes. Um trabalho pode ser dividido em vários momentos e carregado na memória.
  • Comutabilidade (permutabilidade). Os trabalhos podem ser ativados e desativados enquanto estão em execução.
  • virtualidade. Ao expandir logicamente a capacidade de memória, o espaço disponível para os usuários pode ser muito maior do que a capacidade real de memória.

Implementando suporte de hardware e software para memória virtual

  • Deve haver uma quantidade considerável de memória externa, suficiente para armazenar programas para múltiplos usuários.
  • Para ter uma certa quantidade de memória, o programa em execução no processador deve ter algumas informações armazenadas na memória.
  • O mecanismo de interrupção interrompe a execução do programa quando a parte acessada pelo usuário não está na memória.
  • Mecanismo de conversão de endereço para implementar dinamicamente a conversão de endereço virtual em endereço real.
  • Estruturas de dados relacionadas, tabelas de segmentos ou tabelas de páginas.

As tecnologias de armazenamento virtual comumente usadas incluem gerenciamento de armazenamento de paginação de solicitação, gerenciamento de armazenamento de segmento de solicitação e gerenciamento de armazenamento de paginação de segmento de solicitação.

3.2.2 Método de gerenciamento de armazenamento de paginação de solicitação

Embora o método de gerenciamento de armazenamento de paginação resolva o problema da fragmentação externa da memória, ele exige que todas as páginas do trabalho sejam transferidas para a memória principal de uma só vez. Quando o espaço disponível na memória principal for insuficiente ou os trabalhos forem muito grandes, alguns trabalhos terão sua execução restrita na memória principal. Para este fim, é introduzido o método de gerenciamento de armazenamento de paginação de solicitação (também chamado de paginação de solicitação).Primeiro carregue parte do programa na memória para execução e depois carregue-o na memória quando outras partes forem necessárias.. Obviamente, este método baseia-se no princípio da localidade do programa.

Princípio de paginação de solicitação

O método de gerenciamento de armazenamento de paginação de solicitação é exatamente igual ao gerenciamento de armazenamento de paginação em termos de conceitos como paginação do espaço de endereço de trabalho e particionamento do espaço de armazenamento.É um sistema de armazenamento virtual formado com base no sistema de gerenciamento de armazenamento de paginação, adicionando funções de paginação de solicitação e funções de substituição de página.. No gerenciamento de armazenamento de paginação de solicitação, antes da execução do trabalho, desde que parte das páginas atualmente necessárias sejam carregadas na memória principal, o trabalho pode ser iniciado.Durante a execução do trabalho, se a página a ser acessada não estiver na memória principal, ela poderá ser trazida através da função de paginação.Ao mesmo tempo, as páginas temporariamente não utilizadas podem ser substituídas na memória externa através da função de substituição para liberar espaço na memória.

Paginação de solicitação = paginação básica + função de paginação de solicitação + função de substituição de página

Estrutura da página

A principal estrutura de dados utilizada no sistema de paginação de solicitações ainda é a tabela de páginas, cuja função básica é converter endereços lógicos no espaço de endereçamento do programa em endereços físicos no espaço de memória.Como o sistema de paginação de solicitações transfere apenas parte do trabalho para a memória e armazena a outra parte no disco, é necessário adicionar vários itens à tabela de páginas para referência do sistema operacional ao implementar as funções de carregamento e troca de páginas.

Insira a descrição da imagem aqui

  • Número da página e número do bloco físico. Esses dois campos foram definidos no gerenciamento de armazenamento de paginação e são necessários para a tradução de endereços.
  • Bit de status (bit de presença). Usado para determinar se a página está na memória principal. Sempre que é realizado um acesso à memória principal, este bit é utilizado para determinar se a página a ser acessada está na memória principal, caso contrário, é gerada uma interrupção de falha de página.
  • Campos de acesso. Usado para registrar o número de vezes que uma página foi acessada em um período de tempo ou há quanto tempo ela não foi acessada recentemente para referência pelo algoritmo de substituição ao optar por trocar a página.
  • Modifique o bit. Usado para indicar se a página foi modificada após ser carregada na memória. Quando o processador acessa uma página no modo de gravação, o sistema define o bit de modificação da página.Como as páginas na memória possuem cópias na memória externa, se a página não tiver sido modificada, não há necessidade de gravar a página na memória externa quando a página for substituída para reduzir o número de gravações em disco; se a página for modificado, deve ser A página foi reescrita no armazenamento externo
  • Endereço de armazenamento externo. Utilizado para indicar o endereço de armazenamento da página na memória externa para uso ao carregar a página.

Interrupção de falha de página e tradução de endereço

No sistema de gerenciamento de armazenamento de paginação de solicitação, se a página acessada estiver na memória, o processo de transformação de endereço é o mesmo que o gerenciamento de armazenamento de paginação; se a página acessada não estiver na memória, a página deve ser transferida primeiro para a memória, e então o processo de transformação de endereço é o mesmo do armazenamento de paginação básico.A tradução de endereço é gerenciada da mesma maneira.

Insira a descrição da imagem aqui

Se o sistema descobrir que a página a ser acessada não está na memória, ele gera um sinal de interrupção de falha de página, neste momento o programa do usuário é interrompido e o controle é transferido para o manipulador de interrupção de falha de página do sistema operacional. O manipulador de interrupção de falha de página carrega a página na memória com base em sua localização na memória externa.Durante o processo de paginação, se houver espaço livre na memória, o manipulador de interrupção de falha de página só precisa carregar a página ausente em qualquer bloco de armazenamento livre e, em seguida, modificar a entrada correspondente na tabela de páginas (como preencher o bloco físico número, modificar o bit de status, definir o campo de acesso e modificar o valor inicial do bit, etc.); se não houver espaço livre na memória, algumas páginas na memória devem ser eliminadas primeiro. Se as páginas eliminadas foram modificados, eles devem ser gravados de volta no armazenamento externo

A interrupção de falha de página é uma interrupção relativamente especial, significativamente diferente das interrupções gerais , principalmente nos seguintes aspectos:

  • Gerando e tratando interrupções de falha de página durante a execução de instruções. Normalmente, a CPU verifica se uma solicitação de interrupção chegou após a execução da instrução e, em caso afirmativo, responde. A interrupção de falta de página é gerada e processada quando se constata que a instrução e os dados a serem acessados ​​não estão na memória durante a execução de uma instrução.
  • Uma instrução pode gerar múltiplas interrupções de falha de página. Por exemplo, se uma instrução possui dois operandos e cada operando não está na memória, pelo menos duas interrupções de falta de página serão geradas quando a instrução for executada.

Vantagens e desvantagens do gerenciamento de paginação de solicitações

  • vantagem
    • Os programas podem ser armazenados discretamente, reduzindo o número de fragmentos.
    • Fornece memória virtual, melhora a utilização da memória principal, facilita a execução de multiprogramas e é conveniente para os usuários.
  • deficiência
    • Deve ter suporte de hardware.
    • Em alguns casos, o sistema pode apresentar instabilidade.
    • Ainda há algum espaço não utilizado na última página do programa.

3.2.3 Algoritmo de substituição de página

O algoritmo de substituição de página (também conhecido como algoritmo de eliminação de página) é um algoritmo usado para selecionar páginas a serem trocadas.. No método de gerenciamento de armazenamento de página de solicitação, porque nem todas as páginas estão na memória quando um processo está em execução, ocorrerá uma interrupção de falha de página.Se não houver nenhum bloco físico livre na memória neste momento, uma página na memória precisa ser ser substituída. Especificamente, qual página substituir é determinada pelo algoritmo de substituição de página. Pode-se ver que,A qualidade do algoritmo de substituição de páginas afeta diretamente a eficiência do sistema.

  • A unidade de substituição de página é a página e não o processo inteiro. A unidade de troca é o processo inteiro.
  • Quando ocorre uma falha de página, o sistema pode não necessariamente executar o algoritmo de substituição de página.. Porque a ocorrência de uma interrupção de falha de página significa apenas que a página que precisa ser executada não está na memória. Se houver blocos livres no espaço de memória, você só precisará usar o manipulador de interrupção de falha de página para transferir as páginas necessárias de a memória externa na memória. Nenhuma substituição de página é necessária. algoritmo; o algoritmo de substituição de página só é necessário quando não há blocos livres na memória. Portanto, uma interrupção de falha de página não leva necessariamente à execução do algoritmo de substituição de página.

algoritmo de substituição ideal

No caso de prever a sequência de referência do número da página de um processo,Cada vez, as páginas que não são mais utilizadas ou que serão utilizadas no máximo serão eliminadas.Este algoritmo é o melhor algoritmo de substituição.

Obviamente, o melhor algoritmo de substituição é ideal e tem a menor taxa de falhas de página. No entanto, como nas operações reais muitas vezes é impossível saber antecipadamente a informação de todas as páginas que serão referenciadas no futuro, por issoO algoritmo de substituição ideal não pode ser implementado e só pode ser usado como padrão para medir os prós e os contras de outros algoritmos de substituição.

Insira a descrição da imagem aqui

Ordem das páginas: 3,4,2,6,4,3,7,4,3,6,3,4,8,4,6

algoritmo primeiro a entrar, primeiro a sair

O algoritmo FIFO é o algoritmo de substituição de página mais simples.A página que entra primeiro na memória é sempre eliminada a cada vez, ou seja, a página que reside há mais tempo na memória é eliminada.

Este algoritmo é simples de implementar e pode ser implementado usando uma estrutura de dados de fila. As páginas são organizadas em uma fila em ordem e o ponteiro é definido para apontar para a página inserida primeiro. Cada vez que uma página precisa ser eliminada, a página apontado pelo ponteiro pode ser eliminado.

No entanto, o algoritmo FIFO pode produzirExceção Belady (o número de falhas de página aumenta com o número de bloco físico alocado),Isso éComo o algoritmo FIFO ignora um fenômeno, ou seja, as primeiras páginas carregadas são frequentemente as páginas usadas com mais frequência. Portanto, o algoritmo FIFO é inconsistente com as regras reais de execução do processo. As páginas selecionadas para eliminação podem ser páginas frequentemente usadas por o programa, e o efeito real não é bom.

Insira a descrição da imagem aqui

Algoritmo menos usado recentemente

Selecione as páginas que não foram usadas há muito tempo e elimine-as. A ideia é usar citações de páginas anteriores para prever citações de páginas futuras., ou seja, supondo que uma página acabou de ser acessada, a página será acessada novamente em breve. Portanto, o algoritmo de substituição ideal é "olhando para trás" eA regra menos usada recentemente é "Olhar para frente"

Este algoritmo pode ser implementado utilizando bancos de registradores e pilhas e possui melhor desempenho.Entre os algoritmos de substituição de página comumente usados, o algoritmo LRU é o mais próximo do algoritmo de substituição ideal.

Insira a descrição da imagem aqui

algoritmo de substituição de relógio

O algoritmo de substituição de relógio também é chamado de algoritmo Não Usado Recentemente (NRU) e é um híbrido entre LRU e FIFO. Como um algoritmo de aproximação para LRU,O algoritmo CLOCK define um bit de acesso para cada página para identificar se a página foi acessada recentemente.. CLOCK mantém uma lista circular vinculada de todas as páginas na memória.Quando o programa precisa acessar uma página que existe na lista vinculada, o bit de acesso da página é definido como 1.;de outra forma,Se a página que o programa deseja acessar não estiver na lista encadeada, então uma página na memória precisa ser eliminada, então um ponteiro percorrerá sequencialmente a lista encadeada circular começando na próxima posição da última página eliminada. página apontada pelo ponteiro Quando o bit de acesso é 1, o bit de acesso é limpo e o ponteiro se move para baixo. Quando o bit de acesso da página apontada pelo ponteiro é 0, a página é eliminada. Se não for encontrada depois de percorrer a lista vinculada, pode ser que as páginas eliminadas continuem a ser percorridas.

Insira a descrição da imagem aqui

Algoritmo de relógio aprimorado

Há também um algoritmo CLOCK aprimorado,Ele considera se a página foi modificada após ser carregada na memória e adiciona um bit de modificação. As páginas não modificadas são eliminadas primeiro entre os processos cujos bits de acesso são ambos 0, porque as páginas não modificadas podem ser eliminadas diretamente, enquanto as páginas modificadas precisam ser gravadas de volta na memória externa.. Comparado com o algoritmo CLOCK simples, esse algoritmo reduz o número de E/Ss de disco, mas aumenta o número de varreduras.

Depois que o algoritmo CLOCK modificado adiciona o bit de modificação, o status de cada página apresenta as quatro situações a seguir.

  • Não foi acessado recentemente e não foi modificado (bit de acesso=0, bit de modificação=0).
  • Acessado recentemente e não modificado (bit de acesso = 1, bit de modificação = 0).
  • Não foi acessado recentemente, mas foi modificado (bit acessado=0, bit modificado=1).
  • Foi acessado e modificado recentemente (bit de acesso = 1, bit de modificação = 1).

As etapas do algoritmo do algoritmo de relógio aprimorado são as seguintes:

  • Começando na posição atual do ponteiro, verifique a lista vinculada circular. Durante este processo de digitalização, os bits de acesso e de modificação não são modificados. A primeira página encontrada (bit de acesso = 0, bit de modificação = 0) é selecionada para substituição.
  • Se a etapa 1) não for encontrada, digitalize novamente e procure páginas com (bit de acesso = 0, bit de modificação = 1) para substituição. Durante este processo de digitalização, cada página não substituída terá sua posição de acesso 0.
  • Se o passo 2) ainda não for encontrado, retorne à posição inicial. Neste momento, os bits de acesso de todas as páginas são 0. Repita os passos 1) e 2) e a página de substituição será encontrada.

Outros algoritmos de substituição de página

  • Algoritmo de permutação menos usada (LFU)

    Selecione a página com menos visitas até o horário atual para eliminação. Este algoritmo requerDefina um contador de acesso para cada página. Sempre que a página for acessada, o contador de acesso da página será incrementado em 1. Quando ocorre uma falha de página, a página com o menor valor de contagem é eliminada e todos os contadores são apagados.

  • Algoritmo de buffer de página

    O algoritmo PBA é um desenvolvimento do algoritmo FIFO. Ao estabelecer um buffer para páginas de substituição, ele recupera as páginas que acabaram de ser substituídas, reduzindo assim o consumo de E/S do sistema.. O algoritmo PBA usa o algoritmo FIFO para selecionar a página a ser substituída. A página selecionada não é trocada imediatamente, mas colocada em uma das duas listas vinculadas. Se a página não tiver sido modificada, ela será colocada no final da lista de páginas livres, caso contrário, será colocada no final da lista de páginas modificadas. Estas páginas livres e páginas modificadas permanecem na memória por algum tempo. Se essas páginas forem acessadas novamente, elas só precisam ser removidas da lista vinculada correspondente e retornadas ao processo, reduzindo assim uma E/S de disco. Quando uma nova página física precisa ser transferida, a nova página é lida na primeira página da lista vinculada de páginas gratuitas e, em seguida, removida da lista vinculada. Quando o número de páginas modificadas atinge um determinado número, elas são gravadas juntas no disco e colocadas na lista de páginas livres. Isso pode reduzir bastante o número de operações de E/S.

3.2.4 Conjunto de trabalho e estratégia de alocação de páginas

teoria dos conjuntos de trabalho

Para resolver o fenômeno jitter, é introduzido o conceito de conjunto de trabalho.O conjunto de trabalho é assumido com base no princípio da localidade. Se pudermos prever quais páginas o programa acessará dentro de um determinado período de tempo e transferi-las para a memória com antecedência, reduziremos bastante a taxa de falhas de página, reduzindo assim o trabalho de substituição e melhorando a utilização da CPU.

O conjunto de trabalho é a coleção de páginas que foram acessadas nas últimas n vezes. O número n é chamado de janela do conjunto de trabalho, que é o tamanho do conjunto de trabalho.. As páginas usadas com frequência estarão no conjunto de trabalho. Se uma página não for mais usada, ela será descartada no conjunto de trabalho. Quando um processo endereça uma página que não está no conjunto de trabalho, uma interrupção de falha de página é gerada. Ao lidar com uma falha de página, o conjunto de trabalho é atualizado e a página é lida do disco quando necessário .

O princípio do modelo de conjunto de trabalho é permitir que o sistema operacional monitore o conjunto de trabalho de cada processo, monitorando principalmente o tamanho de cada conjunto de trabalho. Se houver blocos físicos livres, você pode transferir outro processo para a memória para aumentar o grau de multicanal; se o tamanho total do conjunto de trabalho aumentar mais do que o número total de todos os blocos físicos disponíveis, o sistema operacional pode selecionar um par de processos na memória. Mova para o disco para reduzir o número de processos na memória e evitar thrashing.

A seleção correta do tamanho da janela do conjunto de trabalho, ou seja, do número de páginas alocadas ao processo, terá um impacto importante na utilização efetiva da memória e na melhoria do rendimento do sistema.

  • Por um lado, se a janela for selecionada para ser muito grande, embora o processo não seja propenso a falhas de página, a memória não será totalmente utilizada.
  • Por outro lado, se a janela for selecionada muito pequena, o processo gerará frequentemente interrupções de falha de página durante a operação, o que na verdade reduzirá a taxa de transferência do sistema.

Estratégia de alocação de páginas

No sistema de gerenciamento de armazenamento de paginação de solicitação, dois tipos deEstratégia de alocação de páginas, nomeadamente alocação fixa e alocação variável . em andamentosubstituição de páginaQuando , duas estratégias também podem ser adotadas, nomeadamente a substituição global e a substituição local . Combinando-as, existem três estratégias adequadas: a atribuição fixa e a substituição global não são razoáveis, pelo que esta estratégia não existe).

  • substituição local de alocação fixa

    Aloque um certo número de blocos físicos para cada processo. Este número é determinado e não mudará enquanto o processo estiver em execução.. Dessa forma, os processos não competirão por blocos físicos, o que fará com que alguns processos encontrem falhas de página frequentes porque há poucos blocos físicos, e alguns processos desperdiçarão espaço de memória porque muitos blocos físicos são alocados.Ao usar uma estratégia de substituição local de alocação fixa, um algoritmo precisa ser usado para determinar quantos blocos físicos cada processo alocará.Algoritmos comumente usados ​​incluem o algoritmo de alocação média, o algoritmo de alocação proporcional e o algoritmo de alocação que considera a prioridade.

  • Alocação mutável de permutações globais.O sistema operacional mantém uma fila de blocos físicos livres. Cada vez que um processo tem uma falha de página, ele pega uma fila de blocos físicos livres e a atribui a ele. Se não houver blocos físicos livres no sistema, o sistema pode chamar qualquer processo. . uma das páginas

  • Alocação variável de substituições locais.Depois de alocar uma certa quantidade de blocos físicos para cada processo, toda vez que ocorre uma falha de página e não há nenhum bloco físico livre na memória, o processo só pode trocar uma de suas próprias páginas de memória. Porém, quando um processo freqüentemente encontra falhas de página, o sistema operacional aloca blocos físicos adicionais a ele até que a taxa de falhas de página seja reduzida a um nível apropriado.Quando a taxa de falhas de página de um processo é particularmente baixa, o número de blocos físicos alocados a ele é reduzido adequadamente . A estratégia de substituição local de alocação variável pode alcançar maior utilização do espaço de memória, garantindo ao mesmo tempo que cada processo tenha uma taxa de falha de página mais baixa.

estratégia de carregamento de página

  • Estratégia de paginação de solicitação.Uma página é carregada na memória somente quando é usada, caso contrário, é colocada na memória externa.. Este método de paginação freqüentemente causará falhas de página quando um processo for iniciado pela primeira vez, porque não há páginas para o processo na memória no início. Essa estratégia é simples de implementar, mas é propensa a gerar mais interrupções de falha de página, leva muito tempo e é propensa a jitter.
  • Estratégia de preparação. Esta estratégia refere-seCarregar na memória páginas que deverão ser usadas em um futuro próximo, mesmo que ainda não tenham sido usadas. Quando o programa é iniciado, se o programador puder apontar quais páginas devem ser carregadas primeiro e juntá-las, elas poderão ser carregadas na memória de uma só vez por meio da estratégia de pré-paginação, o que pode economizar muito tempo. Esta é uma previsão baseada no princípio da localidade, normalmente utilizada para o primeiro carregamento de um programa.

De onde carregar a página

Solicitar sistema de paginaçãoO armazenamento externo é dividido em duas partes: a área de arquivos usada para armazenar arquivos e a área de troca usada para armazenar páginas de troca.. Geralmente, como a área de troca é alocada continuamente e os arquivos são alocados discretamente, a velocidade de E/S do disco da área de troca é maior que a da área de arquivo. Dessa forma, sempre que ocorrer uma solicitação de falha de página, onde o sistema deverá carregar a página com falha na memória.

  • O sistema possui espaço suficiente na área de troca. Neste momento, todas as páginas necessárias podem ser transferidas da área de troca para aumentar a velocidade de paginação. Por este motivo, antes da execução do processo, os arquivos relacionados ao processo devem ser copiados da área de arquivos para a área de troca.
  • O sistema não tem espaço suficiente na área de troca. Neste momento, todos os arquivos que não serão modificados são transferidos diretamente da área de arquivos; quando essas páginas são substituídas, não há necessidade de trocá-las porque não foram modificadas. Quando forem transferidas novamente no futuro, eles ainda são transferidos diretamente da área de arquivos. Mas para as peças que podem ser modificadas, elas devem ser transferidas para a área de troca ao serem trocadas e, em seguida, transferidas de volta da área de troca quando necessário.

3.2.5 Fenômeno de jitter e taxa de falha de página

BeladyException

Algoritmo de substituição FIFOA taxa de falha de página pode aumentar à medida que aumenta o número de blocos físicos alocados.Este estranho fenômeno é a anomalia Belady.. Por exemplo, para a string de referência 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 9 interrupções de falha de página ocorrem quando o número de blocos físicos na memória é 3, e o o número de blocos físicos é 4. Em vez disso, ocorrerão 10 interrupções de falha de página.

O motivo da exceção Belady é que as características de substituição do algoritmo FIFO entram em conflito com as características dinâmicas de acesso do processo à memória, ou seja, as páginas substituídas não são acessadas pelo processo .

Exceções Belady podem ocorrer no algoritmo FIFO, mas exceções Belady nunca ocorrerão no algoritmo LRU e no algoritmo de substituição ideal . Também é improvável que exceções Belady ocorram no algoritmo de substituição de página classificado como algoritmo de pilha .

Fenômeno de tremor

Se o algoritmo de substituição de página selecionado for inadequado, este fenômeno poderá ocorrer:A página que acabou de ser eliminada será acessada novamente logo em seguida e será chamada logo após ser chamada. Isso se repete de forma que o sistema passa a maior parte do tempo carregando e saindo da página e dificilmente consegue concluir qualquer trabalho eficaz... Este fenômeno é chamado de jitter (ou thrashing)

A causa do jitter éCada processo em um sistema de paginação por demanda recebe apenas uma parte do espaço total de memória que necessita.

taxa de falha de página

Suponha que um trabalho tenha n páginas no total e que o sistema aloque m páginas de espaço para o trabalho (m<=n). Se o trabalho precisar acessar uma página A vezes durante a operação (ou seja, o comprimento da string de referência é A), e a página a ser acessada não estiver na memória, e o número de vezes que a página necessária precisa ser transferida na memória é F, então a taxa de falha de página é definida como f = F /A, a taxa de acerto é 1-f.

A taxa de falta de página é um indicador importante para medir o algoritmo de substituição de página. Normalmente, a taxa de falhas de página será afetada por fatores como o algoritmo de substituição, o número de páginas alocadas e o tamanho da página. A taxa de falta de página é muito importante para o sistema de gerenciamento de paginação de solicitação. Se a taxa de falta de página for muito alta, isso levará diretamente a um aumento no tempo médio de leitura das páginas e reduzirá significativamente a velocidade de execução do processo. Portanto, como reduzir a taxa de falta de página é uma tarefa muito importante.

3.2.6 Solicitando o sistema de gerenciamento de armazenamento temporário

O sistema de gerenciamento de armazenamento segmentado por solicitação, assim como o sistema de gerenciamento de armazenamento paginado por solicitação, fornece ao usuário uma memória virtual que é muito maior que o espaço disponível na memória principal. Da mesma forma, o tamanho real da memória virtual é determinado pela estrutura de endereço do computador. No sistema de gerenciamento de armazenamento de segmento de solicitação, antes da execução do trabalho, desde que os segmentos atualmente necessários sejam carregados na memória principal, o trabalho pode ser iniciado. Durante a execução do trabalho, se o segmento que você deseja acessar não estiver na memória principal, você pode usar a função de ajuste de segmento para transferi-lo. Ao mesmo tempo, você também pode usar a função de substituição para substituir o temporariamente não utilizado. segmentos para a memória externa para liberar espaço na memória. Para fazer isso, a tabela de segmentos deve ser expandida.

Insira a descrição da imagem aqui

As três informações, número do segmento, comprimento do segmento e endereço inicial da memória, são necessárias para a tradução do endereço. Os significados dos outros campos são os mesmos da solicitação de gerenciamento de armazenamento de paginação.Quando o segmento está na memória, o processo de tradução de endereços é o mesmo que o gerenciamento de armazenamento segmentado; quando o segmento não está na memória, o segmento deve ser transferido primeiro para a memória e, em seguida, a tradução de endereços é realizada.

Quando o segmento acessado não estiver na memória principal, será gerado um sinal de interrupção do segmento faltante. Quando o sistema operacional trata a interrupção, ele procura na memória principal se existe uma partição grande o suficiente para armazenar o segmento. Se não existir tal partição, verifique a capacidade total das partições livres para determinar se as partições precisam ser unidas ou se um ou vários segmentos devem ser carregados antes de carregar os segmentos necessários.

Acho que você gosta

Origin blog.csdn.net/pipihan21/article/details/129809005
Recomendado
Clasificación