O que é Paging no gerenciamento de memória?

4

Eu estava lendo Operating System Principles by Silberschatz et al quando me deparei com o gerenciamento de memória. Estou um pouco confuso sobre isso.
Ele afirma que Memória Física (suponho que seja RAM) é dividido em quadros e memória lógica é dividido em páginas . A CPU gera endereços lógicos contendo número de página e um deslocamento . Este número de página é usado para recuperar o número do quadro de uma tabela de páginas que fornece o endereço de base
então o endereço físico é calculado como base + offset.
Minha pergunta é:

  • a tabela de páginas é mantida para todos os processos?
  • Eu logicamente acho que a resposta seria yes , pois todo processo precisará mapear suas próprias páginas para quadros. Eu posso estar errado. Por favor, esclareça.

    Além disso:

  • paginação e segmentação (onde 'buracos' são criados na memória) são duas técnicas totalmente diferentes que não são usadas em combinação. Corrigir?
  •     
    por Fasih Khatib 10.10.2012 / 19:42

    2 respostas

    0

    A segmentação gera endereços lineares, a paginação produz endereços físicos

    Com relação aos endereços lógicos e físicos, da Bovet & Cesati (Entendendo o Kernel Linux), eu tenho isto:

    Como você pode ver, paginação e segmentação são realizadas por unidades separadas do hardware. Embora possam ocorrer ao mesmo tempo, o sistema operacional pode desativar a unidade de segmentação (para que os endereços sejam efetivamente tratados não como lógicos, mas lineares).

    Generalidades

    Você já deve saber dessas coisas, mas eu as coloco aqui de qualquer maneira para completar.

    Páginas ocupam quadros: trocas

    No que diz respeito aos capítulos 8, f de Silberschatz, frames referem-se ao layout da memória física. O sistema operacional divide a RAM em áreas de quadros iguais e convenientemente dimensionados (por exemplo, 4K). Páginas são dados de tamanho de quadro, a unidade básica de substituição de página.

    Pode haver mais páginas do que quadros disponíveis. Algumas páginas ocupam quadros, algumas páginas são trocadas no disco.

    Se uma página é trocada do disco, ela é alinhada com um determinado quadro na memória (qualquer que seja o algoritmo de substituição de página que se encaixe).

    Sistemas operacionais e hardware cooperam

    Como acontece com muitos objetivos do sistema operacional, o gerenciamento de memória sempre funciona em conjunto com o hardware: tanto o SO quanto o hardware cooperam, para que o trabalho seja feito. Como eles fazem isso em um cenário realista depende de

    1. o conjunto de primitivas de gerenciamento de memória que o hardware fornece (paginação, segmentação e o que existe lá) e
    2. qual subconjunto o SO realmente usa na arquitetura e situação particulares (o Linux @ zArchitecture é diferente do Linux @ Intel é diferente do Windows @ Intel é diferente do Windows @ Intel @ Boot-up)

    Por exemplo, apenas algumas arquiteturas fornecem segmentação e a figura acima se aplica ao x86. O Linux, por questões de portabilidade, não o explora muito. Se bem me lembro do Tanenbaum, o OS / 2 foi o único sistema operacional a explorar a segmentação da Intel em toda a sua extensão.

    Até agora, esta resposta.

    Dependendo de por que você precisa saber disso, a abordagem a seguir pode ajudá-lo (isso me ajudou).

    Eu sugiro que você primeiro se familiarize com o hardware e com os primitivos individuais. Se Silberschatz é vago sobre este ponto, tente Tanenbaum (Modern Operating Systems) ou Hennessy & Patterson (Computer Architechture, A abordagem quantitativa). Se sua curiosidade não estiver satisfeita até então, veja como um sistema operacional específico o utiliza em várias situações em uma plataforma específica.

        
    por 10.10.2012 / 23:11
    0

    is the page table maintained for every process?

    Se o sistema tiver que fornecer um espaço de endereço virtual seguro para cada processo, então sim.

    paging and segmentation(where 'holes' are created in memory) are two totally different techniques that are not used in combination. Correct?

    Não, existe um esquema de memória virtual chamado segmentação paginada. (Eu me recordo desse conceito causando exasperação por meus colegas de classe quando apresentados pelo professor. Se Silberschatz et al não mencionaram isso, então esse livro está incompleto.) O objetivo original da memória virtual paginada era fornecer um grande espaço de endereço para executar um programa grande em um computador com RAM limitada. Em uma memória virtual paginada simples com multiprocessamento, não haveria nenhuma restrição em ter dois processos compartilhando uma página. Mas uma memória virtual segmentada destina-se ao multiprocessamento e isolaria cada processo a seus próprios segmentos.

    Embora possa parecer redundante, o esquema típico de memória virtual usado em um sistema operacional seguro usa páginas e segmentos, em que os segmentos são as imagens binárias dos processos. O HW típico provavelmente suportará apenas páginas de tamanho fixo. A segmentação é implementada no sistema operacional. O conceito de segmentos facilita o gerenciamento de múltiplos processos na memória. O conceito de páginas facilita um mínimo de memória ocupada por cada processo. Uma biblioteca de tempo de execução compartilhada seria um caso especial de um segmento somente para gravação protegido, que fosse compartilhável entre os processos.

    Esteja ciente de que "segmento" em esquemas de memória virtual normalmente se refere a um pedaço de memória que é logicamente coeso e tem um comprimento arbitrário. Esse tipo de "segmento" não deve ser confundido com o "segmento" Intel 8086/88 (x86) que inicia em um limite de endereço de 16 bytes (ou seja, um "parágrafo") e é restrito a 64 KB de tamanho. Os segmentos X86 são uma variação do banco de dados de memória em vez da memória virtual.

    Os esquemas de bancos de dados de memória são para sistemas que têm um tamanho de endereço pequeno (por exemplo, 16 bits), mas um espaço de memória física maior (por exemplo, até 1 MB de memória endereçável). A memória virtual é (ou foi planejada para) a situação oposta: o tamanho do endereço é grande (por exemplo, pelo menos 32 bits) e a memória instalada é menor que o espaço de endereço (nem sempre é verdade atualmente). A memória virtual é tipicamente completamente invisível aos programas do usuário, enquanto o programador Intel 8086/88 deve estar ciente dos modelos de memória pequena / média / grande e distante versus próximo . BTW que palestra onde eu aprendi de memória virtual e "segmentação paginada" ocorreu antes Intel projetou o i8086.

    Como texto de apoio, Wikipedia também menciona que segmentação e paginação podem ser combinadas (em hardware).

        
    por 10.10.2012 / 21:43