Por que a página não é usada como unidade ao calcular o tamanho máximo de RAM que uma CPU pode endereçar?

0

Wikipédia diz

A page, memory page, or virtual page is a fixed-length contiguous block of virtual memory, described by a single entry in the page table. It is the smallest unit of data for memory allocation performed by the operating system on behalf of a program, and for transfers between the main memory and any other auxiliary store, such as a hard disk drive.

...

Page size is usually determined by processor architecture. Traditionally, pages in a system had uniform size, for example 4096 bytes. However, processor designs often allow two or more, sometimes simultaneous, page sizes due to the benefits and penalties.

Sabemos que uma CPU de 32 bits pode endereçar no máximo 2 ^ 32 bytes = 4 GiB de memória. Por que o byte é usado como a unidade no cálculo em vez da página?

Se uma página tiver 4096 bytes, uma CPU de 32 bits poderá endereçar uma memória muito maior.

Sinto falta ou não entendi algo?

    
por Tim 03.01.2015 / 22:40

3 respostas

2

A razão é porque a cpu não endereça uma página inteira de cada vez; Ele aborda cada byte individual. A página é simplesmente a unidade que é usada para alocar memória e definir permissões nela. Além disso, esse artigo da wikipedia tem um erro: o disco IO é não executado em unidades de página; isso é feito em setores, o que convencionalmente é de 512 bytes.

    
por 04.01.2015 / 01:09
1

Nos velhos tempos, a memória mainframe era descrita como tantas palavras. Onde palavras foram definidas pelo hardware (18,20,30,32,60, ... bits). Quando minis e PCs chegaram, a memória foi descrita por bytes (4K até 64K). Agora temos muito mais memória e ainda é descrito pelo número de bytes. O que você diz é verdade e as páginas podem ser um método melhor de descrevê-lo. Como você diz, uma CPU de 32 bits pode endereçar 4GBs de memória. Mais e isso deve ser feito por paginação. É eficiente usar paginação para gerenciar a memória. O tamanho da página pode variar em diferentes sistemas operacionais, portanto, os bytes ainda são a única maneira de saber a quantidade real de memória (com a necessidade de saber o tamanho da página). Principalmente eu acho que é assim que sempre foi feito.

    
por 04.01.2015 / 00:45
0

A página da Wikipedia está errada ou, na melhor das hipóteses, equivocada, em alguns detalhes.

It is the smallest unit of data for memory allocation performed by the operating system on behalf of a program

Corrija apenas as chamadas de alocação de memória que funcionam em unidades de páginas. No Windows, por exemplo, isso seria VirtualAlloc. Mas as rotinas de gerenciamento de heap certamente podem operar em incrementos menores. (E antes que alguém diga "mas não é o sistema operacional, as rotinas de heap estão todas no espaço do usuário", considere que também existe um heap de kernel ... e algumas coisas que os programas fazem do modo de usuário requerem que o SO aloque o kernel heap ... e as alocações de heap do kernel não estão em passos de tamanho de página.)

and for transfers between the main memory and any other auxiliary store, such as a hard disk drive.

Isso também não é verdade. É verdade para transferências devido a paginação . Mas o controlador de disco e disco pode manipular transferências de apenas um bloco, o que tradicionalmente significa 512 bytes. A alegação de qualquer "outro armazenamento auxiliar" compõe a ofensa: as unidades de fita podem manipular leituras e gravações de comprimentos de bloco quase arbitrários.

Como os outros respondentes afirmaram corretamente, a CPU endereça bytes, e o número de bits disponíveis para endereços, portanto, determina o número de bytes que podem ser endereçados.

    
por 17.02.2016 / 19:26

Tags