分頁、分段和段頁式存儲管理方式

1.分頁管理

  分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱爲頁面或頁,併爲各頁加以編號,從0開始,如第0頁、第1頁等。相應地,也把內存空間分成與頁面相同大小的若干個存儲塊,稱爲(物理)塊或頁框(frame),也同樣爲它們加以編號,如0#塊、1#塊等等。在爲進程分配內存時,以塊爲單位將進程中的若干個頁分別裝入到多個可以不相鄰接的物理塊中。由於進程的最後一頁經常裝不滿一塊而形成了不可利用的碎片,稱之爲“頁內碎片”。
優缺點:沒有外部碎片,內存利用率高。但各頁中內容沒有關聯,不利於編程和共享。

2.分段管理

  把程序按內容或過程(函數)關係分成段,每段有自己的名字。一個用戶作業或進程所包含的段對應一個二維線形虛擬空間,也就是一個二維虛擬存儲器。段式管理程序以段爲單位分配內存,然後通過地址影射機構把段式虛擬地址轉換爲實際內存物理地址。
  程序通過分段(segmentation)劃分爲多個模塊,如代碼段、數據段、共享段。內存每段的大小都匹配程序段,不會產生內部碎片。
優缺點: 可以針對不同類型的段採取不同的保護。 可以按段爲單位來進行共享,包括通過動態鏈接進行代碼共享。 不會產生內部碎片,但會產生外部碎片,內存利用率比分頁低。

3.段頁式管理

  一個進程中所包含的具有獨立邏輯功能的程序或數據仍被劃分爲段,並有各自的段號s。這反映相繼承了段式管理的特徵。其次,對於段s中的程序或數據,則按照一定的大小將其劃分爲不同的頁。和頁式系統一樣,最後不足一頁的部分仍佔一頁。這反映了段頁式管理中的頁式特徵。從而,段頁式管理時的進程的虛擬地址空間中的虛擬地址由三部分組成:即段號s,頁號P和頁內相對地址d。虛擬空間的最小單位是頁而不是段,從而內存可用區也就被劃分成爲着幹個大小相等的頁面,且每段所擁有的程序和數據在內存中可以分開存放。分段的大小也不再受內存可用區的限制。
  爲了實現段頁式管理,系統必須爲每個作業或進程建立一張段表以管理內存分配與釋放、缺段處理、存儲保護相地址變換等。另外,由於一個段又被劃分成了若干頁,每個段又必須建立一張頁表以把段中的虛頁變換成內存中的實際頁面。顯然,與頁式管理時相同,頁表中也要有相應的實現缺頁中斷處理和頁面保護等功能的表項。另外,由於在段頁式管理中,頁表不再是屬於進程而是屬於某個段,因此,段表中應有專項指出該段所對應頁表的頁表始址和頁表長度。
優缺點:既有具有獨立邏輯功能的段,又以大小相同的頁爲內存分配單位進而不會產生外部碎片。但仍會有內部碎片。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章