By: Ben LaHaise (bcrl.delete@this.kvack.org), May 2, 2021 10:45 am
Room: Moderated Discussions
Yuhong Bao (yuhongbao_386.delete@this.hotmail.com) on May 1, 2021 1:01 pm wrote:
> The fun thing is that 4K pages probably used to be too large. On a 80386, just 8 tasks would consume
> at least 64k and probably 128k just for the page tables alone. (80386 page tables were two levels)
The National Semiconductor 32016 had 512 byte page sizes. The problem is that overhead of small page sizes becomes excessive as soon as you have more than a couple of megabytes of memory. With 16MB of RAM and 512 byte pages that works out to 65536 pages for which data structures to track all the individual pages are needed. Even at 16 bytes of overhead per page, that's 1MB or 1/16th of memory. For reference Linux has upwards of 64 byte of overhead per page these days. The window for which 512 byte pages were viable was closed back in the 1980s.
> The fun thing is that 4K pages probably used to be too large. On a 80386, just 8 tasks would consume
> at least 64k and probably 128k just for the page tables alone. (80386 page tables were two levels)
The National Semiconductor 32016 had 512 byte page sizes. The problem is that overhead of small page sizes becomes excessive as soon as you have more than a couple of megabytes of memory. With 16MB of RAM and 512 byte pages that works out to 65536 pages for which data structures to track all the individual pages are needed. Even at 16 bytes of overhead per page, that's 1MB or 1/16th of memory. For reference Linux has upwards of 64 byte of overhead per page these days. The window for which 512 byte pages were viable was closed back in the 1980s.