操作系統3.1.3 內存空間擴充技術(覆蓋與交換)

本節主要講覆蓋技術和交換技術,虛擬存儲技術在後續小節會詳細展開。

 

實現內存空間擴充的技術

一、覆蓋技術

用於解決“程序大小超過物理內存總和”的問題

思想:

程序分爲多個段,常用的段常駐在內存,不常用的段在需要時才從外存調入內存。

內存中分爲一個“固定區”若干個“覆蓋區”,需要常駐內存的段放在“固定區”調入後就不再調出(除非運行結束)。

不常用的段,放在覆蓋區中,需要用的時候調入內存,用不到時調出內存

一個固定區:存放最活躍的程序段,固定區的程序在運行過程中不會調入調出內存

若干個覆蓋區:不可能同時被訪問的程序段可共享一個覆蓋區,覆蓋區中的程序段在運行過程中會根據需要調入調出內存

缺點:必須有程序員聲明覆蓋結構,操作系統完成自動覆蓋,因此對用戶不透明,增加了用戶的編程負擔

所以覆蓋技術只用於早期的操作系統中。

 

二、交換技術

思想:內存空間緊張時,系統將內存中某些進程暫時換出外存,把外存中某些已具備運行條件的進程換入內存(進程在內存與磁盤動態調度)

掛起:暫時換出外存等待的進程狀態爲掛起狀態

掛起態又進一步細分爲就緒掛起、阻塞掛起

三個問題:

1、應該在外存(磁盤)的什麼位置保存被換出的進程?

磁盤區通常分爲文件區對換區兩部分。

文件區主要用於存放文件,主要追求存儲空間的利用率,因此對文件區空間管理採用離散分配方式

對換區空間佔磁盤空間很小的部分,被換出的進程數據就存放在對換區,由於對換的速度直接影響到操作系統的整體速度,因此對換區空間管理主要追求換入換出速度,因此通常採用連續分配方式

總之,對換區的I/O速度比文件區的更快

2、什麼時候應該交換?

交換通常在許多進程運行過程中並且內存喫緊時進行,而系統負荷降低就暫停。

例如在許多進程運行時經常發生缺頁,就說明內存緊張,此時可以換出一些進程;

如果缺頁率明顯下降,就可以暫停換出。

3、應該換出哪些進程? 

可以優先換出阻塞進程

可換出優先級低的進程

爲防止優先級低的進程在調入內存後很快被換出,有時系統還會考慮進程在內存的駐留時間

注意:PCB會常駐內存,不會被換出外存)

 

三、兩種技術的區別

覆蓋是在同一個程序或進程中的,交換是在不同進程(作業)之間的。

 

四、知識回顧與重要考點

本節主要考察選擇題。

 

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