基本分段和段頁式內存管理


為什么要引入分段存儲管理方式?

分段存儲管理方式的引入是為了滿足用戶的要求。

  1. 方便編程:通常一個作業是由多個程序段和數據段組成的,一般情況下,用戶希望按邏輯關系對作業分段,並能根據名字來訪問程序段和數據段
  2. 信息共享
    • 共享是以信息的邏輯單位為基礎的。頁是存儲信息的物理單位,段卻是信息的邏輯單位。
    • 頁式管理中地址空間是一維的,主程序,子程序都順序排列,共享公用子程序比較困難,一個共享過程可能需要幾十個頁面。
  3. 信息保護
    • 頁式管理中,一個頁面中可能裝有 2 個不同的子程序段的指令代碼,不能通過頁面共享實現共享一個邏輯上完整的子程序或數據塊。
    • 段式管理中,可以以信息的邏輯單位進行保護。
  4. 動態增長:實際應用中,某些段(數據段)會不斷增長,前面的存儲管理方法均難以實現。
  5. 動態鏈接:動態鏈接在程序運行時才把主程序和要用到的目標程序(程序段)鏈接起來。

分段

  • 作業地址空間被划分為若干段,每個段定義了一組邏輯 信息,如主程序MAIN、子程序段X、數據段D及棧段S, 各段均有自己的名字(段號)
  • 每個段都從0開始編址,並采用一段連續的地址空間,且 段的長度取決於相應的邏輯信息組的長度,因而各段長 度可不等
  • 整個作業的地址空間是二維的,(也就是說一個作業的所有段號合在一起是不連續的),其邏輯地址有段號 (名) 和段內地址所組成

為什么分段中整個作業的地址空間是二維的?

在分頁中,整個作業的地址空間是一維的,也就是說一個作業的所有段合在一起是連續的。如下圖所示(觀察邏輯地址):

而分段由於它各段長度可不等,一個作業的所有段合在一起不可能像分頁一樣是連續的,所以分段整個作業的地址空間是二維的。

利用段表實現地址映射示意圖

分段系統地址變換機構

注:由於各段長度不等,也就是說各段長度無法確定,所以還要判斷段長是否越界。

信息共享

可重入代碼(純代碼)

一種允許多個迚程同時訪問的代碼

為使各個迚程所執行的代碼完全相同,絕對不允 許可重入代碼在執行中有任何改變,所以它是一 種不允許任何進程對其進行修改的代碼

但事實上,大多數代碼在執行時都有可能發生改 變,例如其中用於控制程序執行次數的變量及指 針、信號量及數組等。為此,在每個進程中都必 須配備局部數據區,並把在執行中可能改變的部 分都拷貝到該數據區。這樣,在程序執行時,只 去對屬於特定進程私有的數據區中的內容進行修 改,而不去改變共享的代碼,這時的可共享代碼 即成為可重入代碼

例:多個用戶對文本編輯程序的共享

某多用戶系統,可同時接納40個用戶,假設 均在執行Editor進行文本編輯。若該文本編輯 程序含有160KB的代碼區和40KB的數據區,如果不共享,則總共需有8000KB的內存空間來支持40個用 戶。

如果該文本編輯程序代碼是可重入的,則 無論分頁系統還是分段系統該程序代碼都能被 共享,即內存中只需保留一份文本編輯程序的 副本,因而所需內存空間僅為 40×40+160=1760KB

分頁系統的共享

分段系統的共享

上述兩張圖可知,在分段系統中,實現共享容易得多,只需在每個進程的段表中為文本編輯程序設置一個段表項。

分頁與分段的主要區別

  1. 頁是信息的物理單位,分頁僅僅是由於系統管理的需要,對用戶透明的。段是信息的邏輯單位,分段的目的是為了能更好的滿足用戶的需要。
  2. 頁的大小固定且由系統確定,把邏輯地址划分為頁號和頁內地址兩部分。段的長度卻不固定,決定於用戶所編寫的程序。
  3. 分頁的作業地址空間是一維的,分段的作業地址空間是二維的。
  4. 頁和段都有存儲保護機制。但存取權限不同:段有讀、寫和執行三種權限;而頁只有讀和寫兩種權限。

段頁式內存管理方式

分頁/段內存管理有機結合,既具有分段系統便於實現、分段可共享、易於保護、可動態鏈接等一系列優點;又能像 分頁系統那樣很好地解決內存的外部碎片問 題以及為各個分段離散地分配內存等問題 。

基本原理

  • 段頁式存儲管理是分段和分頁原理的結合,即先將用戶程序分成若干個段(段式) ,並為每一個段賦一個段名,再把每個段分成若干個頁(頁式) 。
  • 其地址結構由段號、段內頁號、及頁內位移三部分所組成。

  • 系統中設段表和頁表,均存放於內存中。讀一字節的指令或數據須訪問內存三次。為提高執行速度可增設高速緩沖寄存器(快表)。
  • 每個進程一張段表,每個段一張頁表,段表可以有多級段表,頁表也可以有多級頁表。
  • 段表含段號、頁表始址和頁表大小。頁表含頁號和物理塊號。

利用段表和頁表實現地址映射

段頁式系統的地址變換結構


免責聲明!

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



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