天天看點

作業系統:虛拟存儲器

目錄

  • 引入虛拟存儲器的動機
    • 傳統存儲器管理方式
    • 局部性原理
  • 虛拟存儲器
    • 虛拟存儲器的定義
    • 虛拟存儲器的特征
    • 虛拟存儲器的實作
      • 分頁請求系統
      • 請求分段系統
  • 請求分頁存儲的硬體支援
    • 請求頁表機制
    • 缺頁中斷機構
    • 位址變換機構
  • 分頁管理的記憶體配置設定
    • 駐留集
    • 記憶體配置設定政策
    • 實體塊配置設定算法
  • 頁面調入政策
    • 調入頁面的時機
    • 調入頁面的區域
    • 頁面調入的過程
    • 缺頁率
  • 抖動和工作集
    • 抖動
    • 工作集
    • 防止抖動的方法
  • 頁面置換算法
    • 最佳置換算法
    • 先進先出頁面置換算法
    • 最近最久未使用置換算法
    • Clock 置換算法
      • 簡單的 CLOCK 算法
      • 改進的 CLOCK 算法
    • 頁面緩沖算法
  • 請求分段存儲管理方式
    • 請求分段存儲的硬體支援
      • 請求段表
      • 缺段中斷機構
    • 分段共享
    • 分段保護
  • 參考資料

無論是連續還是離散的存儲器管理方式,統稱為傳統存儲器管理方式,它們全都具有如下兩個共同的特征。第一個是一次性,是指作業必須一次性地全部裝入記憶體後方能開始運作。第二個是駐留性,是指作業被裝入記憶體後,整個作業都一直駐留在記憶體中,其中任何部分都不會被換出,直至作業運作結束。盡管運作中的程序可能會被阻塞,或者有的程式子產品在運作過一次後就不再需要(運作)了,它們都仍将繼續占用的記憶體資源。部裝入記憶體後方能運作。由于這 2 個性質,可能會導緻兩種情況:

  1. 有的作業很大,其所要求的記憶體空間超過了記憶體總容量,作業不能全部被裝入記憶體使該作業無法運作;
  2. 有大量作業要求運作,但由于記憶體容量不足以容納所有這些作業,隻能将少數作業裝入記憶體先運作,将其它大量的作業留在外存上等待。

出現上述兩種情況的原因都是由于記憶體容量不夠大,如果從實體上增加記憶體容量,往往會受到機器自身的限制而且要增加成本,另一種方法是從邏輯上擴充記憶體容量。

程式在執行時将呈現出局部性規律,即在一較短的時間内程式的執行僅局限于某個部分,相應地所通路的存儲空間也局限于某個區域。局限性表現在下述兩個方面:

  1. 時間局部性:如果程式中的某條指令被執行,則不久以後該指令可能再次執行;如果某資料被通路過,則不久以後該資料可能再次被通路,典型例子是程式中的循環結構;
  2. 空間局部性:一旦程式通路了某個存儲單元,在不久之後其附近的存儲單元也将被通路,典型例子是是程式的順序執行或數組的周遊。

基于局部性原理可知,應用程式運作時僅須将目前要運作的少數頁面或段先裝入記憶體便可,其餘部分暫留在盤上。在程式執行過程中,當所通路的資訊不在記憶體時,由作業系統負責将所需資訊從外存調入記憶體,然後繼續執行程式。若記憶體空間不夠,由作業系統負責将記憶體中暫時用不到的資訊換出到外存。這樣使一個大的使用者程式在較小的記憶體空間中運作,也可在記憶體中同時裝入更多的程序,使它們并發執行。

在作業系統的管理下,在使用者看來似乎有一個比實際記憶體大得多的記憶體,這就是虛拟記憶體。虛拟存儲器是指具有請求調入功能和置換功能,能從邏輯上對記憶體容量加以擴充的一種存儲器系統。它的運作速度接近于記憶體速度,而每位的成本卻又接近于外存。虛拟記憶體的最大容量是由計算機的 CPU 尋址範圍确定的,實際容量是記憶體和外存容量之和和 CPU 尋址範圍之間的最小值。例如某計算機位址結構為 32 位,按位元組編址,記憶體大小為 512 MB,外存大小為 2 GB。則虛拟記憶體的最大容量為 2^32 B = 4 GB,虛拟記憶體的實際容量 = min(2^32 B, 512 MB + 2 GB) = 2 GB + 512 MB

虛拟記憶體有一下三個主要特征:

  • 多次性:無需在作業運作時一次性全部裝入記憶體,而是允許被分成多次調入記憶體。
  • 對換性:在作業運作時無需一直常駐記憶體,而是允許在作業運作過程中将作業換入、換出。
  • 虛拟性:從邏輯上擴充了記憶體的容量,使使用者看到的記憶體容量遠大于實際的容量。

在虛拟存儲器中,允許将一個作業分多次調入記憶體。如果采用連續配置設定方式,必須事先為作業一次性地申請一個足以容納整個作業的記憶體空間,這樣無法、也無意義再從邏輯上擴大記憶體容量。是以虛拟存儲器的實作,都建立在離散配置設定存儲管理方式的基礎上。

分頁請求系統是在分頁系統的基礎上,增加請求調頁功能和頁面置換功能,形成頁式虛拟存儲系統。它允許使用者程式隻裝入少數頁面的程式(及資料)即可啟動運作,再通過調頁功能及頁面置換功能陸續地把即将運作的頁面調入記憶體,同時把暫不運作的頁面換出到外存上。

請求分段系統是在分段系統的基礎上,增加了請求調段及分段置換功能,形成段式虛拟存儲系統。它允許使用者程式隻要裝入少數段(而非所有的段)的程式和資料即可啟動運作,以後通過調段功能和段的置換功能将暫不運作的段調出,再調入即将運作的段。

計算機系統除了要求一定容量的記憶體和外存外,還需要有請求頁表機制、缺頁中斷機構以及位址變換機構。

在請求分頁系統中需要的主要資料結構是請求頁表,作用仍然是将邏輯位址映射為實體位址。為了滿足頁面換進換出的需要,在請求頁表中又增加了四個字段。

作業系統:虛拟存儲器
字段 說明
狀态位 P 訓示該頁是否已調入記憶體,供程式通路時參考
通路字段 A 記錄本頁在一段時間内被通路的次數,供置換頁面時參考
修改位 M 辨別該頁在調入記憶體後是否被修改過,供置換頁面時參考
外存位址 用于指出該頁在外存上的位址,通常是實體塊号,供調入該頁時參考

在請求分頁系統中,每當要通路的頁面不在記憶體時,便産生一個缺頁中斷,然後由作業系統的缺頁中斷處理程式進行中斷。此時缺頁的程序阻塞,放入阻塞隊列,調頁完成後再将其喚醒放回就緒隊列。如果記憶體中有空閑塊,則為程序配置設定一個空閑塊,将所缺頁面裝入該塊,并修改頁表中相應的頁表項。如果記憶體中沒有空閑塊,則由頁面置換算法選擇一個頁面淘汰,若該頁面在記憶體期間被修改過,則要将其寫回外存。未修改過的頁面不用寫回外存。

作業系統:虛拟存儲器

缺頁中斷是一種特殊的中斷,它是在指令執行期間産生和進行中斷信号。一條指令在執行期間可能産生多次缺頁中斷,例如“copy A to B”将邏輯位址 A 中的資料複制到邏輯位址 B,而 A、B 屬于不同的頁面就有可能産生兩次中斷。

請求分頁系統中的位址變換機構是在分頁系統位址變換機構的基礎上,再增加了某些功能所形成的,如産生和處理缺頁中斷以及從記憶體中換出一頁的功能等。在進行位址變換時,首先檢索快表,試圖從中找出所要通路的頁。若找到便修改頁表項中的通路位,對于寫指令還須将修改位置成“1”,表示該頁在調入記憶體後已被修改。然後利用頁表項中給出的實體塊号和頁内位址形成實體位址,位址變換過程到此結束。如果在快表中未找到該頁的頁表項,則應到記憶體中去查找頁表,再從找到的頁表項中的狀态位 P 來了解該頁是否已調入記憶體。若該頁已調入記憶體,這時應将該頁的頁表項寫入快表。當快表已滿時,則應先調出按某種算法所确定的頁的頁表項,然後再寫入該頁的頁表項。若該頁尚未調入記憶體,這時應産生缺頁中斷,請求 OS 從外存把該頁調入記憶體。

作業系統:虛拟存儲器

在為程序配置設定記憶體時,将涉及到為保證程序能正常運作需要多少實體塊數,以及在為每個程序配置設定實體塊時應采取什麼樣的配置設定政策的問題。

駐留集指請求分頁存儲管理中給程序配置設定的實體塊的集合,在采用了虛拟存儲技術的系統中,駐留集大小一般小于程序的總大小。若駐留集太小,會導緻缺頁頻繁,系統要花大量的時間來處理缺頁,實際用于程序推進的時間很少。駐留集太大,又會導緻多道程式并發度下降,資源使用率降低。是以應該選擇一個合适的駐留集大小。

在請求分頁系統中配置設定記憶體時,可采取固定或可變配置設定兩種政策。

配置設定政策
固定配置設定 作業系統為每個程序配置設定一組固定數目的實體塊,在程序運作期間不再改變
可變配置設定 先為每個程序配置設定一定數目的實體塊,在程序運作期間,可根據情況做适當的增加或減少

在進行置換時,也可采取全局置換或局部置換兩種政策。

局部置換 發生缺頁時隻能選程序自己的實體塊進行置換
全局置換 可以将作業系統保留的空閑實體塊配置設定給缺頁程序,也可以将别的程序持有的實體塊置換到外存

通過配置設定政策和置換政策的組合,可組合出以下三種适用的政策。簡單地說可變配置設定全局置換是隻要缺頁就給配置設定新實體塊,可變配置設定局部置換是要根據發生缺頁的頻率來動态地增加或減少程序的實體塊。

政策
固定配置設定局部置換 系統為每個程序配置設定一定數量的實體塊,在整個運作期間都不改變。若程序在運作中發生缺頁,則隻能從該程序在記憶體中的頁面中選出一頁換出,然後再調入需要的頁面。這種政策的缺點是,很難在剛開始就确定應為每個程序配置設定多少個實體塊才算合理。
可變配置設定全局置換 剛開始會為每個程序配置設定一定數量的實體塊,作業系統會保持一個空閑實體塊隊列。當某程序發生缺頁時,從空閑實體塊中取出一塊配置設定給該程序。若已無空閑實體塊,則可選擇一個未鎖定的頁面換出外存,再将該實體塊配置設定給缺頁的程序。隻要某程序發生缺頁,都将獲得新的實體塊,僅當空閑實體塊用完時,系統才選擇一個未鎖定的頁面調出。被選擇調出的頁可能是系統中任何一個程序中的頁,是以這個被選中的程序擁有的實體塊會減少,缺頁率會增加。
可變配置設定局部置換 剛開始會為每個程序配置設定一定數量的實體塊。當某程序發生缺頁時,隻允許從該程序自己的實體塊中選出一個進行換出外存。如果程序在運作中頻繁地缺頁,系統會為該程序多配置設定幾個實體塊,直至該程序缺頁率趨勢适當程度。反之如果程序在運作中缺頁率特别低,則可适當減少配置設定給該程序的實體塊。

沒有固定配置設定全局置換的原因是,全局置換意味着一個程序擁有的實體塊數量必然會改變,是以不可能是固定配置設定。

在采用固定配置設定政策時,如何将系統中可供配置設定的所有實體塊配置設定給各個程序,可采用下述幾種算法:

  1. 平均配置設定算法:即将系統中所有可供配置設定的實體塊平均配置設定給各個程序;
  2. 按比例配置設定算法:即根據程序的大小按比例配置設定實體塊;
  3. 考慮優先權的配置設定算法:為了照顧到重要的、緊迫的作業能盡快地完成,應為它配置設定較多的記憶體空間。

為使程序能夠正常運作,必須事先将要執行的那部分程式和資料所在的頁面調入記憶體。

為了确定系統将程序運作時所缺的頁面調入記憶體的時機,可采取預調頁政策或請求調頁政策。預調頁政策是采用一種以預測為基礎的預調頁政策,将那些預計在不久之後便會被通路的頁面預先調入記憶體。如果預測較準确能有效改善性能,但目前預調頁的成功率僅約 50%。

請求調頁政策是程序在運作中需要通路某部分程式和資料時,若發現其所在的頁面不在記憶體便立即提出請求,由 OS 将其所需頁面調入記憶體。由請求調頁政策所确定調入的頁是一定會被通路的,且請求調頁政策比較易于實作,故在目前的虛拟存儲器中大多采用此政策。但這種政策每次僅調入一頁,故須花費較大的系統開銷,增加了磁盤 I/O 的啟動頻率。

将請求分頁系統中的外存分為兩部分,一部分是用于存放檔案的檔案區,一部分是用于存放對換頁面的對換區。通常由于對換區是采用連續配置設定方式,而檔案區是采用離散配置設定方式,是以對換區的資料存取(磁盤 I/O)速度比檔案區的高。每當發生缺頁請求時,系統應從何處将缺頁調入記憶體有以下情況:

第一種情況,當系統擁有足夠的對換區空間,這時可以全部從對換區調入所需頁面,以提高調頁速度。在程序運作前,便須将與該程序有關的檔案從檔案區拷貝到對換區。

作業系統:虛拟存儲器

第二種情況,系統缺少足夠的對換區空間,這時凡是不會被修改的檔案,都直接從檔案區調入,這些頁面由于它們未被修改,不必再将它們重寫到磁盤(換出)。以後再調入時,仍從檔案區直接調入。但對于那些可能被修改的部分,在将它們換出時便須調到對換區,以後需要時再從對換區調入。

作業系統:虛拟存儲器

第三種情況可以使用 UNIX 方式,凡是未運作過的頁面,都應從檔案區調入。而對于曾經運作過但又被換出的頁面,由于是被放在對換區,是以在下次調入時應從對換區調入。

作業系統:虛拟存儲器

每當程式所要通路的頁面未在記憶體時(存在位為“0”),便向 CPU 發出一缺頁中斷,中斷處理程式首先保留 CPU 環境,分析中斷原因後轉入缺頁中斷處理程式。該程式通過查找

頁表得到該頁在外存的實體塊後,如果此時記憶體能容納新頁,則啟動磁盤 I/O,将所缺之頁調入記憶體,然後修改頁表。如果記憶體已滿,則須先按照某種置換算法,從記憶體中選出一頁準備換出。如果該頁未被修改過(修改位為“0”),可不必将該頁寫回磁盤;但如果此頁已被修改(修改位為“1”),則必須将它寫回磁盤,然後再把所缺的頁調入記憶體,并修改頁表中的相應表項,置其存在位為“1”,并将此頁表項寫入快表中。在缺頁調入記憶體後,利用修改後的頁表形成所要通路資料的實體位址,再去通路記憶體資料。

假設一個程序的邏輯空間為 n 頁,系統為其配置設定的記憶體實體塊數為 m(m ≤ n)。如果在程序的運作過程中,通路頁面成功的次數為 S,通路頁面失敗的次數為 F,則該程序總的頁面通路次數和缺頁率 f 的計算公式為:

A = S + F
f = F / A
           

通常缺頁率受到以下幾個因素的影響:

  1. 頁面大小:頁面劃分較大則缺頁率較低,反之缺頁率較高。
  2. 程序所配置設定實體塊的數目:所配置設定的實體塊數目越多缺頁率越低,反之則越高。
  3. 頁面置換算法:算法的優劣決定了程序執行過程中缺頁中斷的次數
  4. 程式固有特性:程式編制的局部化程度越高,相應執行時的缺頁程度越低。

事實情況下沒有修改過的頁面可以直接放棄,而修改過的頁面則必須進行儲存,是以處理這兩種情況時的時間也是不同的。假設被置換的頁面被修改的機率是 β,其缺頁中斷處理時間為 ta,被置換頁面沒有被修改的缺頁中斷時間為 ts,那麼缺頁中斷處理時間的計算公式為:

t = β × ta + (1 - β) × tb
           

頻繁的頁面排程行為稱為抖動(Thrashing)或颠簸,表現為剛剛換出的頁面馬上又要換入記憶體,剛剛換入的頁面馬上又要換出外存。産生抖動的主要原因是程序頻繁通路的頁面數目高于可用的實體塊數,也就是配置設定給程序的實體塊不夠。

工作集指在某段時間間隔裡,程序實際通路頁面的集合。

作業系統會根據“視窗尺寸”來算出工作集,工作集大小可能小于視窗尺寸。實際應用中作業系統可以統計程序的工作集大小,根據工作集大小給程序配置設定若幹記憶體塊。例如視窗尺寸為 5,經過一段時間的監測發現某程序的工作集最大為 3,那麼可以給這個程序配置設定 3 個以上的記憶體塊滿足運作需要。一般來說,駐留集大小不能小于工作集大小,否則程序運作過程中将頻繁缺頁。

為了保證系統具有較大的吞吐量,必須防止“抖動”的發生,下面是幾個較常用的預防“抖動”發生的方法。

  1. 采取局部置換政策:當某程序發生缺頁時,隻能在配置設定給自己的記憶體空間内進行置換,不允許從其它程序去獲得新的實體塊;
  2. 把工作集算法融入到處理機排程中:在排程程式從外存調入作業之前,必須先檢查每個程序在記憶體的駐留頁面是否足夠多。如果都已足夠多,此時便可以從外存調入新的作業,反之則應首先為那些缺頁率居高的作業增加新的實體塊;
  3. 利用“L = S”準則調節缺頁率:L 是缺頁之間的平均時間,S 是置換一個頁面所需的時間。如果是 L 遠比 S 大說明很少發生缺頁,反之則說明頻繁發生缺頁。理論和實踐證明利用“L = S”準則,對于調節缺頁率十分有效;
  4. 選擇暫停的程序:當多道程式度偏高時,基于某種原則選擇暫停某些目前活動的程序,将它們調出到磁盤上,以便把騰出的記憶體空間配置設定給缺頁率發生偏高的程序。

記憶體已無空閑空間時,為了保證該程序能正常運作,系統必須從記憶體中調出一頁程式或資料送到磁盤的對換區中。應将哪個頁面調出,須根據一定的算法來确定,選擇換出頁面的算法稱為頁面置換算法(Page-Replacement Algorithms)。置換算法的好壞将直接影響到系統的性能,不适當的算法可能會導緻程序發生“抖動”,一個好的頁面置換算法應具有較低的頁面更換頻率

最佳置換算法是一種理論上的算法,其所選擇的被淘汰頁面将是以後永不使用或在最長未來時間内不再被通路的頁面。采用最佳置換算法通常可保證獲得最低的缺頁率,但由于無法預知哪一個頁面是未來最長時間内不再被通路的,因而該算法無法實作,但可以利用該算法去評價其它算法。

假定系統為某程序配置設定了三個實體塊,有以下的頁面号引用串。

7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
           

程序運作時先将 7,0,1 三個頁面裝入記憶體,當程序要通路頁面 2 時将會産生缺頁中斷。此時 OS 根據最佳置換算法将選擇頁面 7 淘汰,這是因為頁面 0 将作為第 5 個被通路的頁面,頁面 1 是第 14 個被通路的頁面,而頁面 7 則要在第18次頁面通路時才需調入。以此類推,得到采用最佳置換算法在各個頁面引用時的狀态。由表格可看出,采用最佳置換算法發生了 6 次頁面置換。

作業系統:虛拟存儲器

FIFO 算法總是淘汰最先進入記憶體的頁面,也就是選擇在記憶體中駐留時間最久的頁面予以淘汰。該算法實作簡單,但該算法與程序實際運作的規律不相适應,因為在程序中有些頁面經常被通路,FIFO 算法并不能保證這些頁面不被淘汰。

7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
           

采用 FIFO 算法進,當程序第一次通路頁面 2 時将把第 7 頁換出,因為它是最先被調入記憶體的。在第一次通路頁面 3 時,又将把第 0 頁換出,因為它在現有的 2、0、1 三個頁面中是最老的頁。利用 FIFO 算法時,進行了 12 次頁面置換,比最佳置換算法正好多一倍。

作業系統:虛拟存儲器

最近最久未使用 LRU(Least Recently Used)置換算法根據頁面調入記憶體後的使用情況做出決策的,LRU 算法是選擇最近最久未使用的頁面予以淘汰。該算法賦予每個頁面一個通路字段,用來記錄一個頁面自上次被通路以來所經曆的時間 t。當需淘汰一個頁面時,選擇現有頁面中其 t 值最大的頁面淘汰。LRU 置換算法雖然是一種比較好的算法,但要求系統有較多的支援硬體。可以為每個在記憶體中的頁面配置一個移位寄存器記錄未使用時間,也可以利用一個特殊的棧儲存目前使用的各個頁面的頁面号。

7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
           

當程序第一次對頁面 2 進行通路時,由于頁面 7 是最近最久未被通路的,故将它置換出去。當程序第一次對頁面 3 進行通路時,第 1 頁成為最近最久未使用的頁,将它換出。利用 LRU 算法時,進行了 9 次頁面置換。

作業系統:虛拟存儲器

時鐘置換算法是一種性能和開銷較均衡的算法,又稱 CLOCK 算法或最近未用(NRU,NotRecently Used)算法。

簡單的 CLOCK 算法為每個頁面設定一個通路位,再将記憶體中的頁面都通過連結指針連結成一個循環隊列。當某頁被通路時其通路位為 1,當需要淘汰一個頁面時,隻需檢查頁的通路位。如果是 0 就選擇該頁換出,如果是 1 則将它置為 0,暫不換出并繼續檢查下一個頁面。若第一輪掃描中所有頁面都是 1,則将這些頁面的通路位依次置為 0 後,再進行第二輪掃描。

在将一個頁面換出時,如果該頁已被修改過,便須将該頁重新寫回到磁盤上。但如果該頁未被修改過,則不必将它拷回磁盤。對于修改過的頁面,在換出時所付出的開銷比未修改過的頁面大。在改進型 Clock 算法中,還須再增加一個置換代價的因素,這樣選擇頁面換出時,未使用過和未被修改過的頁面要綜合考慮。由通路位 A 和修改位 M 可以組合成下面四種類型的頁面:

  1. A = 0,M = 0:該頁最近既未被通路,又未被修改,是最佳淘汰頁。
  2. A = 0,M = 1:該頁最近未被通路,但已被修改,并不是很好的淘汰頁。
  3. A = 1,M = 0:最近已被通路,但未被修改,該頁有可能再被通路。
  4. A = 1,M = 1:最近已被通路且被修改,該頁可能再被通路。

在進行頁面置換時,與簡單 Clock 算法的差别在于該算法須同時檢查通路位 A 與修改位 M。其執行過程可分成以下三步:

  1. 從指針所訓示的目前位置開始掃描循環隊列,尋找第一類頁面。将所遇到的第一個頁面作為所選中的淘汰頁,第一次掃描期間不改變通路位 A;
  2. 如果第一步失敗則開始第二輪掃描,尋找第二類頁面,将所遇到的第一個這類頁面作為淘汰頁。在第二輪掃描期間,将所有掃描過的頁面的通路位都置 0;
  3. 如果第二步也失敗則将指針傳回到開始的位置,并将所有的通路位複 0 然後重複第一步。如果仍失敗就再重複第二步,此時就一定能找到被淘汰的頁。

改進後的算法與簡單 Clock 算法比較,可減少磁盤的 I/O 操作次數。但為了找到一個可置換的頁,可能須經過幾輪掃描。

對于已經被修改過的頁面,在将其換出時應當寫回磁盤。如果每當有一個頁面要被換出時就将它寫回磁盤,這意味着每換出一個頁面,便需要啟動一次磁盤。頁面緩沖算法 PBA在系統中建立了一個已修改換出頁面的連結清單,對每一個要被換出的頁面(已修改),系統可暫不把它們寫回磁盤,而是将它們挂在已修改換出頁面的連結清單上。僅當被換出頁面數目達到一定值時,再将它們一起寫回到磁盤上,這樣就顯著地減少了磁盤 I/O 的操作次數。如果有程序在這批資料還未寫回磁盤時需要再次通路這些頁面時,就不需從外存上調入,而直接從已修改換出頁面連結清單中擷取,這樣也可以減少将頁面從磁盤讀入記憶體的頻率。

與請求分頁系統相似,在請求分段系統中所需的硬體支援有段表機制、缺段中斷機構,以及位址變換機構。

在請求分段式管理中所需的主要資料結構是請求段表,除了具有請求分頁機制中有的通路字段 A、修改位 M、存在位 P 和外存始址四個字段外,還增加了存取方式字段和增補位,這些字段供程式在調進、調出時參考。

作業系統:虛拟存儲器
存取方式 可根據段的屬性對它實施保護,如果該字段為兩位,則存取屬性是隻執行、隻讀和允許讀/寫。
增補位 用于表示本段在運作過程中是否做過動态增長

在請求分段系統中采用的是請求調段政策,每當發現運作程序所要通路的段尚未調入記憶體時,便由缺段中斷機構産生缺段中斷信号,進入 OS 後由缺段中斷處理程式将所需的段調入記憶體。與缺頁中斷機構類似,但由于分段是資訊的邏輯機關,因而不可能出現一條指令被分割在兩個分段中和一組資訊被分割在兩個分段中的情況。由于段不是定長的,這使對缺段中斷的處理要比對缺頁中斷的處理複雜。

因為被通路的段并非全在記憶體,是以在位址變換時若發現所要通路的段不在記憶體,必須先将所缺的段調入記憶體并修改段表,然後才能再利用段表進行位址變換。為此在位址變換機構中又增加了某些功能,如缺段中斷的請求及處理等。

分段存儲管理方式的優點是便于實作分段的共享與保護,實作分段共享可在系統中配置一張共享段表,所有各共享段都在共享段表中占有一表項。在表項的上面記錄了共享段的段号、段長、記憶體始址、狀态(存在)位、外存始址以及共享計數等資訊,接下去就是記錄了共享此分段的每個程序的情況。

共享程序計數 count 記錄有多少程序正在共享該分段,當所有共享該段的程序全都不需要分段時才回收該段所占記憶體區
存取控制字段 對于一個共享段,應為不同的程序賦予不同的存取權限
段号 對于一個共享段,在不同的程序中可以具有不同的段号,每個程序可用自己程序的段号去通路該共享段

  1. 越界檢查:在進行位址變換時,首先将邏輯位址空間的段号與段表長度進行比較,如果段号等于或大于段表長度,将發出位址越界中斷信号。此外還在段表中為每個段設定有段長字段,在進行位址變換時,還要檢查段内位址是否等于或大于段長,若大于段長,将産生位址越界中斷信号;
  2. 存取控制檢查:在段表的每個表項中都設定了一個“存取控制”字段,用于規定對該段的通路方式,通常的通路方式有隻讀、隻執行、讀/寫;
  3. 環保護機構:在該機制中規定:低編号的環具有高優先權,OS 核心處于 0 号環内,某些重要的實用程式和作業系統服務占居中間環,而一般的應用程式則被安排在外環上。