本節主要講覆蓋技術和交換技術,虛擬存儲技術在後續小節會詳細展開。
實現內存空間擴充的技術
一、覆蓋技術
用於解決“程序大小超過物理內存總和”的問題。
思想:
將程序分爲多個段,常用的段常駐在內存,不常用的段在需要時才從外存調入內存。
內存中分爲一個“固定區”和若干個“覆蓋區”,需要常駐內存的段放在“固定區”,調入後就不再調出(除非運行結束)。
不常用的段,放在覆蓋區中,需要用的時候調入內存,用不到時調出內存。
一個固定區:存放最活躍的程序段,固定區的程序在運行過程中不會調入調出內存
若干個覆蓋區:不可能同時被訪問的程序段可共享一個覆蓋區,覆蓋區中的程序段在運行過程中會根據需要調入調出內存
缺點:必須有程序員聲明覆蓋結構,操作系統完成自動覆蓋,因此對用戶不透明,增加了用戶的編程負擔
所以覆蓋技術只用於早期的操作系統中。
二、交換技術
思想:內存空間緊張時,系統將內存中某些進程暫時換出外存,把外存中某些已具備運行條件的進程換入內存(進程在內存與磁盤動態調度)
掛起:暫時換出外存等待的進程狀態爲掛起狀態
掛起態又進一步細分爲就緒掛起、阻塞掛起
三個問題:
1、應該在外存(磁盤)的什麼位置保存被換出的進程?
磁盤區通常分爲文件區和對換區兩部分。
文件區主要用於存放文件,主要追求存儲空間的利用率,因此對文件區空間管理採用離散分配方式;
對換區空間佔磁盤空間很小的部分,被換出的進程數據就存放在對換區,由於對換的速度直接影響到操作系統的整體速度,因此對換區空間管理主要追求換入換出速度,因此通常採用連續分配方式。
總之,對換區的I/O速度比文件區的更快。
2、什麼時候應該交換?
交換通常在許多進程運行過程中並且內存喫緊時進行,而系統負荷降低就暫停。
例如在許多進程運行時經常發生缺頁,就說明內存緊張,此時可以換出一些進程;
如果缺頁率明顯下降,就可以暫停換出。
3、應該換出哪些進程?
可以優先換出阻塞進程;
可換出優先級低的進程;
爲防止優先級低的進程在調入內存後很快被換出,有時系統還會考慮進程在內存的駐留時間。
(注意:PCB會常駐內存,不會被換出外存)
三、兩種技術的區別
覆蓋是在同一個程序或進程中的,交換是在不同進程(作業)之間的。
四、知識回顧與重要考點
本節主要考察選擇題。