系統的記憶體分頁管理機制已經可以解決程序的位址空間隔離了,為什麼還有分段?還出現和段頁式?

時間 2021-05-29 22:57:51

1樓:胡星宇

段式管理出現得更早。早在8086時期,位址16位,記憶體最大為, 引入段式管理後,記憶體範圍可增加至1MB,實體地址位變為20位。

在進入80386時代,位址變為了32位,即使不用段管理,記憶體位址也達到了4GB,理論上可以拋棄段機制,但考慮到相容問題,保留了下來。並在CR0暫存器中有乙個開關位PE,如果沒有開啟這個開關,那麼段暫存器的作用和定址方式都和8086一模一樣,但在80386的32位世界裡,段機制又有了很大的改進,旨在改進1MB記憶體容量的瓶頸和惡意程式等安全兩個問題。

在32位的世界裡,16位的段暫存器只負責儲存索引和許可權等級,段資訊存在記憶體的GDT中,每個段有64位描述資訊,因此可以設定段的大小(而不像8086中是固定的64KB), 還能夠設定粒度大小, 段型別等各種屬性,更加靈活安全。

但段式管理有記憶體碎片大,利用率低等缺點,儘管這個公升級版的段式儲存管理是80386提出的, 但在手冊上也提到可以想辦法"繞過"它來提高效能: 將段的基位址設成0, 長度設成4GB, 這就是i386手冊中提到的"扁平模式",然後採用頁式管理,要注意的是分頁機制只能在保護模式下啟用。

Win7不清楚,但Linux就是採用扁平模式的。

2樓:申公豹

因為PC開機啟動的時候,CPU始終處於實模式,實模式下是採用的是分段機制,作業系統安排好了各種資料結構之後才跳到了保護模式,這時候分頁機制才被開啟。

怎樣通俗的理解作業系統中記憶體管理分頁和分段?

Bowen Xiao 感覺高讚說的有些問題,結合點我自己的想法。分段講的有點問題。照這個答案,分段解決的是虛擬記憶體解決的問題,但實際上兩者不能劃等號。應該說現代作業系統的記憶體管理,是由分段和分頁兩種技術共同奠基的。當然,也不能簡單地就說2者的粒度不同。兩者本質上都是對記憶體的劃分,我感覺分段是從...

為什麼系統的記憶體管理如此快速?

君實 記憶體管理是乙個很複雜的系統,就分配而言顯然不是 線性 管理 比如把記憶體按4k大小作為分配單元,使用位圖法進行分配 我沒法用一兩句話把原因解釋的清楚。但是作業系統相關原理課程都有說。你可以參考下。 因為系統並不是線性管理,也不是一位元組一位元組管理,比如將軍要管理軍隊,不需要管理到每個兵,直...

32位系統的虛擬記憶體最大可以有多大?

晉圖 虛擬記憶體機制拓展的是邏輯記憶體大小,也就是通過把外存 硬碟 的空間虛擬成記憶體空間以此來拓展邏輯記憶體總空間。但你必須清楚,物理記憶體還是那麼多,硬碟的訪問速度比記憶體的訪問速度慢,所以不要妄想增加虛存來拓展物理記憶體。虛擬系統的大小由兩個因素決定,第一是CPU的定址範圍 32位CPU可定址...