多級頁表如何節省內存


在談到多級頁表的優勢的時候,很多地方都是這么說的:32位地址空間的分頁系統,如果頁面大小為4KB,則每個進程可達1M個頁,假設每個頁表項占用4個字節,這樣每個進程僅僅頁表項就占用了4MB連續的內存空間。

那么多級頁表怎么節省存儲空間的?

如果是2級頁表,32位地址分為10,,10,12這3部分。則,頁目錄表1024項,每個小頁表也是1024項,實際的存儲空間是1024*4k(所有小頁表大小)+4k(頁目錄大小),變大了!!!!!!

在這里我談談個人的理解!

實際上,一個進程並不是所有線性地址都會映射到頁表中,假如所有頁表都映射,的確多級頁表占用了更多的內存,但是大多數地址都是沒有映射的。

如果是一級頁表,因為頁表是一個大數組,如果在初始化的時候沒有分配好足夠的空間,以后要擴展的話怎么辦?所以一級頁表在初始化的時候便分配了全部的連續內存,即使並不是所有地址都映射到頁表上。

如果是多級頁表,這里以二級頁表為例。在初始化的時候只需要先分配好頁目錄所需的連續內存,頁表的內存可以到需要使用的時候再動態分配,增加了靈活性,同時節省了內存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM