Melhor resposta
Bem, o tamanho da página é o espaço necessário por 1 página. (Isso é muito simples )
Para ter apenas um pequeno histórico aqui, uma tabela de páginas é uma tabela de conversões de endereços virtuais para físicos que o sistema operacional usa para artificialmente aumentar a quantidade total de memória principal disponível em um sistema. A memória física são os bits reais localizados em endereços na memória (DRAM), a memória virtual é onde o sistema operacional fica para os processos para dizer a eles onde está para fazer as coisas como permitir 2 ^ 64 bits de espaço de endereço, apesar do fato de que 2 ^ 34 bits é a RAM mais usada normalmente. (2 ^ 32 bits é 4 gigabytes, então 2 ^ 34 é 16 gb.)
Agora, a maioria dos tamanhos de tabela de página padrão são 4.096 kb para cada processo, mas o número de entradas da tabela de páginas pode aumentar se o processo precisar de mais espaço para o processo. Tamanhos de tabela de página também podem ser inicialmente alocados em quantidades menores ou maiores ou memória, é apenas que 4 kb é geralmente o melhor tamanho para a maioria dos processos. Portanto, o tamanho de entrada da tabela de página teria exatamente a quantidade certa de espaço para conter qualquer endereço em um espaço de endereço de 32 bits.
Vamos considerar um exemplo aqui: Considere um sistema com um espaço de endereço lógico de 32 bits. Se a página tamanho em tal sistema é de 4 KB (212), então uma tabela de página pode consistir em até 1 milhão de entradas (232/212). Supondo que cada entrada consiste em 4 bytes , cada processo pode precisar de até 4 MB de espaço de endereço físico apenas para a tabela de páginas.
Como entendê-lo totalmente?
Resposta: 4 bytes (32 bits ) é exatamente a quantidade certa de espaço para conter qualquer endereço em um espaço de endereço de 32 bits. Como 1 milhão de entradas de 4 bytes cada perfaz 4 MB, um processo “pode” precisar de até 4 MB de espaço de endereço físico.
Resposta
Uma página ta ble é mantido pelo sistema operacional por processo. Cada processo tem sua própria tabela de página , e é por isso que não precisamos armazenar nenhum identificador (es) de processo na tabela de página. A tabela de páginas mapeia um determinado número de página lógico / virtual para o endereço de quadro / página físico real.
O endereço lógico para uma referência de memória tem o formato:
Endereço lógico:
O número da página (número da página virtual) é usado para realizar a pesquisa na tabela de páginas e obter o endereço base do quadro físico para o qual está mapeado. O endereço base do frame (f) é então combinado com o deslocamento na página (d) para obter o endereço do frame da memória física como:
f = page-table [p]
Endereço físico:
Agora, considere um sistema com:
1. espaço de endereço lógico: 32 bits 2. tamanho da página: 4KB (2 ^ 12) 3. tamanho da entrada da tabela da página: 4 bytes 4. memória física: 2 GB
Observe que 4 bytes de uma entrada de tabela de página efetivamente armazena vários tipos de informações além do endereço de base do quadro físico. Essas informações podem ser para proteção de memória (bit válido / inválido), tipo de acesso (leitura / gravação), contabilidade, etc. Refiro-me ao endereço do quadro físico (f), na verdade me refiro a esta parte específica da entrada de 4 bytes.
Vamos calcular o tamanho de uma tabela de página:
Tamanho de a tabela da página = (Nº de entradas * tamanho de cada entrada).
Dados os parâmetros acima, um endereço lógico de 32 bits será particionado em:
ou
.
Agora podemos calcular que o número de entradas na tabela de páginas (número total de páginas virtuais) pode ser tão grande quanto 2 ^ 20. Portanto, o tamanho da tabela da página seria:
(2 ^ 20) * 4 bytes = 4 MB de espaço (por processo).
Essa quantidade de espaço seria necessária na memória física para a tabela de páginas de cada processo. Não se esqueça de que temos apenas 2 GB de memória principal, e ter 4 MB desse espaço para a tabela de páginas de cada processo pode não ser uma boa ideia. Além disso, muitos dos endereços virtuais podem não ter nenhum endereço de página física mapeado para eles. Mas , ainda assim o tamanho da tabela de página será grande. Mesmo se o bit “válido” não for definido para um número de página virtual, um slot para ele deverá existir na tabela de página.
No caso de compartilhado memória, ter uma tabela de páginas por processo exigirá uma entrada da mesma página física na tabela de páginas de cada processo que está tendo um acesso compartilhado àquela página, assim o sistema acabará mantendo várias entradas para o mesmo endereço de quadro físico. Não é um uso muito bom da memória física.
Também podemos entender que uma tabela de páginas para cada processo conterá uma entrada por endereço virtual. O tamanho da tabela é, portanto, proporcional ao tamanho de lógico / virtual endereço de espaço que pode realmente acabar sendo enorme.
Nosso objetivo é reduzir / otimizar a quantidade de memória física necessária para armazenar as tabelas de página. A tabela de página invertida é uma dessas soluções.
Tabela de página invertida é uma tabela de página global mantida pelo sistema operacional para todos os processos. Existe apenas uma tabela de página em todo o sistema, o que significa que informações adicionais precisam ser armazenadas na tabela de página para identificar as entradas da tabela de página correspondentes a cada processo.
Ele armazena uma entrada por quadro físico e é um array linear onde o conteúdo de cada local é
Isso implica imediatamente que as pesquisas não podem mais acontecer no número da página virtual. A tabela inteira deve ser pesquisada entrada por entrada para encontrar uma entrada correspondente tendo o pid igual a “id” e o número da página virtual igual a “p”. A localização do índice correspondente à correspondência é o endereço físico do quadro (f), que então combinado com o deslocamento (d) fornece o endereço físico.
Podemos facilmente inferir esse tempo de consulta em uma página invertida tabela pode ser significativamente maior quando comparada a uma tabela de página simples .
No entanto, como a tabela armazena uma entrada por endereço de quadro físico e há uma única tabela de página em todo o sistema, a quantidade de memória usada pela tabela de página invertida foi reduzida consideravelmente. Como?
Considere os mesmos parâmetros novamente:
1. espaço de endereço lógico: 32 bits 2. tamanho da página: 4KB (2 ^ 12) 3. tamanho da entrada da tabela de páginas: 4 bytes. 4. memória física: 2 GB (2 ^ 31)
Número de entradas na tabela de páginas = Número de páginas físicas =
(2 ^ 31) / (2 ^ 12) = 2 ^ 19 páginas físicas ou frames.
Digamos que usemos identificadores de processo de 1 byte. O tamanho de cada entrada da tabela de página seria:
8 bits (PID) + 20bits ( número da página virtual) + 4bits (informações de acesso) = 32 bits = 4 bytes.
Tamanho da tabela da página = (2 ^ 19) * 4 = 2 MB para todo o sistema.
O desempenho das tabelas de página invertida geralmente é abordado por meio de tabelas de página com hash. Porém, há mais uma desvantagem de usar tabelas de página invertida além do desempenho. É a memória compartilhada.
Porque há uma e apenas uma entrada na tabela de páginas por quadro físico, e que contém exatamente um número de página virtual, não podemos mais mapear o mesmo quadro físico para vários números de página virtuais em processos diferentes. Existem maneiras de contornar isso, mas não temos conhecimento dos detalhes a serem escritos aqui .
Fonte – Conceitos do sistema operacional (Silberschatz et al)