计算机操作系统:虚拟存储器
? ? ? ? ?虛擬存儲器定義:是指具有請求調入功能和置換功能,能從邏輯上對內存容量加以擴充的一種存儲系統,其邏輯容量由內存容量和外村容量之和所決定?。
? ? ? ? ?虛擬存儲器工作情況:基于局部性原理可知,應用程序運行前僅須將那些當前要運行的少數頁面或段先裝入內存,其余部分暫留磁盤上。如果程序所要訪問的頁或段尚未調入內存,就發生缺頁或缺段請求。如果此時內存已滿,OS需要利用頁置換功能,將內存中暫時不用的頁調至磁盤上,再將需要訪問的頁調入內存。
? ? ? ? ? 虛擬儲存器的特征
? ? ? ? ? ? ? ? ? ? 1>多次性:指一個作業中的程序和數據允許被多次調入內存運行,即只需當前要運行的那部分程序和數據裝入內存即可開始運行。
? ? ? ? ? ? ? ? ? ? 2>對換性:在進程運行期間,允許將那些暫不使用的代碼和數據從內存調至外存的對換區,待以后需要時再將它們從外存調至內存。
? ? ? ? ? ? ? ? ? ? 3>虛擬性:是指能從邏輯上擴充內存容量
? ? ? ? ? 請求頁表數據結構:(從左置右)頁號,物理塊號,狀態位,訪問字段,修改位,外存地址
? ? ? ? ? ? ? ? ? ? 狀態位:指示該頁是否已調入內存,供程序訪問參考
? ? ? ? ? ? ? ? ? ? 訪問字段:用于記錄本頁在一段時間內的訪問次數,或記錄本頁最近已有多長時間未被訪問
? ? ? ? ? ? ? ? ? ? 修改位:標識該頁面在調入內存后是否被修改過,因為內存中的每一頁都在外存上保留了一份副本,修改后需要同步
? ? ? ? ? ?缺頁中斷特點:
? ? ? ? ? ? ? ? ? ? 1>在指令執行期間產生和處理中斷信號
? ? ? ? ? ? ? ? ? ? 2>一條指令在執行期間可能產生多次缺頁中斷
? ? ? ? ? ?請求分頁的內存分配策略:
? ? ? ? ? ? ? ? ? ? 1>固定分配局部置換:是指為每個進程分配一組固定數目的物理塊,在進程運行期間不再改變。如果進程在運行中發生缺頁,則只能從分配給該進程的n個頁面中選出一頁喚出,然后在調入一頁,以保證分配給該進程的內存空間不變。
? ? ? ? ? ? ? ? ? ? 2>可變分配全局置換:是指先為進行分配一定數目的物理塊,在進程運行期間,可根據情況做適當的增加或減少。如果進程在運行中發現缺頁,則將OS所保留的空閑物理塊(空閑物理塊隊列)取出一塊分配給該進程,或者以所有的空閑物理塊為標的,選擇一塊喚出。
? ? ? ? ? ? ? ? ? ? 3>可變分配局部:首先為進行分配一定數目的物理塊,但當某進程發現缺頁時,只允許從該進程在內存的頁面中選擇一頁換出,這樣就不會影響其它進程的允許。如果進行頻繁地發生缺頁中斷,則系統在為該進程分配若干附加的物理塊。
? ? ? ? ? 物理塊分配算法:
? ? ? ? ? ? ? ? ? ? 1>平均分配算法:將系統中所有可工分配的物理塊平均分給各個進程
? ? ? ? ? ? ? ? ? ? 2>按比例分配算法:根據進程的大小按比例分配物理塊
? ? ? ? ? ? ? ? ? ? 3>考慮優先權分配算法:為了照顧到重要的,緊迫的作業能盡快地完成,應為它分配較多的內存空間。通常把內存中可供分配的物理塊分成兩部分:一部分按比例分配,另一部分按進程的優先級進行分配
? ? ? ? ? 頁面調入策略:
? ? ? ? ? ? ? ? ? ? 1.何時調入頁面
? ? ? ? ? ? ? ? ? ? ? ? ? ? 1>預調頁策略:將那些預計在不就之后便會訪問的頁面預先調入內存
? ? ? ? ? ? ? ? ? ? ? ? ? ? 2>請求調頁策略:當進程在運行中需要訪問某部分程序和數據時,若發現其所在的頁面不在內存,便立即提出請求,由OS將其所需頁面調入內存。
? ? ? ? ? ? ? ? ? ? 2.從何處調入頁面:請求分頁系統將外存分為兩部分,用于存放文件的文件區和用于存放對換頁面的對換區。對換區采用連續分配的方式,文件區采用離散分配的方式,所以對換區的存儲速度比文件區要高。何時調入頁面分三種情況:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1>系統擁有足夠的對換區空間,這時可以全部從對換區調入所需頁面。在進行運行前,便須將進程相關的文件從文件區拷貝到對換區。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2>系統缺少足夠的對換空間,凡是需要不需要被修改的文件,都直接從文件區調入。需要修改的文件從對換區調入和調出。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3>unix方式,與進程相關的文件都存放在文件區,凡是未運行過的頁面從文件去調入。運行過的則通過對換區調入和調出。
? ? ? ? ? ?頁面置換算法:
? ? ? ? ? ? ? ? ? ? ?1.最佳置換算法:一種理論上的算法,其所選擇的被淘汰頁面將是以后永不使用的,或許是在最長時間內不再被訪問的頁面。
? ? ? ? ? ? ? ? ? ? ?2.先進先出頁面置換算法:該算法總是淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰,需要用一個指針總是指向最老的頁面。
? ? ? ? ? ? ? ? ? ? ?3.最近最久未使用頁面置換算法:選擇最近最久未使用的頁面予以淘汰。該算法賦予每個頁面一個訪問字段,用來記錄一個頁面自上次被訪問以來所經歷的時間t。當需要淘汰一個頁面時,選擇現有頁面中t值最大的。該算法需要為每一個頁面配置一個寄存器保存時間,需要一個棧保存順序。
? ? ? ? ? ? ? ? ? ? ?4.最少使用頁面算法:在使用這個算法時,需要在內存中的為每一個頁面設置一個移位寄存器,用來記錄該頁面被訪問的頻率。
? ? ? ? ? ? ? ? ? ? ?5.clock置換算法:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1>簡單clock置換算法:為每頁設置一個訪問位,再將內存中所有的頁面都通過鏈接指針鏈接成一個循環隊列。當某頁被訪問時,其訪問位被置為1。頁面置換算法再選擇一頁被淘汰時,只需檢查頁的訪問位。如果是0,則喚出;若為1,則重新置0
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2>改進型clock置換算法:由于被修改過的頁面,換出時所付出的代價較大(要寫回磁盤)。改進型的算法新增加了一個修改位,每次檢查訪問位和修改位。首先第一輪檢查未被訪問和未被修改的,如果沒有合適的,第二輪檢查未被訪問和已被修改,并置訪問位位0,若還找不到合適的,再進行第一輪的操作。
? ? ? ? ? ? ? ? ? ? ?6.頁面緩沖算法:為了降低頁面換進換出的頻率和寫回磁盤的頻率(對于已經被修改過的頁面,在將其換出時,應當寫回磁盤),該算法在內存分配策略上采用了可變分配和局部置換方式,系統為每個進程分配一定數目的物理塊,系統自己保留一部分空閑物理塊。為了降低頁面換進換出的速度,內存中設置了空閑頁面鏈表和修改頁面鏈表。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1>空閑頁面鏈表:是系統掌握的空閑物理塊,用于分配給頻繁發生缺頁的進程。當一個未被修改的頁面要換出時,可以先不必換出,而是把它放在空閑鏈表的末尾,下次需要直接取
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2>修改頁面鏈表:當進程需要將一個已修改的頁面換出時,系統先不必立即把它換出到外存上,而是把它掛在修改頁面鏈表末尾,到達一定的數目在集體換出。
? ? ? ? ? ? 抖動:同時在系統中運行的進程太多,導致分配給每一個進程的物理塊太少,以致頻繁出現缺頁,這會使得在系統中排隊等待頁面調進調出的進程數目增加。顯然,對磁盤的有效訪問也隨之急劇增加,造成每個進程的大部分時間都用于頁面的換進換出,進程不能再去做有效的工作,從而導致處理機的利用率也急劇下降,這時稱進程處于"抖動"狀態。
? ? ? ? ? ?工作集:指在某段時間間隔里,進程實際所要訪問頁面的集合。
? ? ? ? ? ?抖動的預防方法:
? ? ? ? ? ? ? ? ? ? ? ?1.采取局部置換策略:當某進程發生缺頁時,只能在分配給自己的內存空間內進行置換,不允許從其他進程取獲得新的物理塊,這樣不會對其他進程造成影響。但這樣效果不是很好,因為進程在發生抖動后,它還會長期處在磁盤IO的等待隊列中。
? ? ? ? ? ? ? ? ? ? ? ?2.把工作集算法融入到處理機調度中:在調度程序從外存調入作業之前,必須先檢查每個進程咋內存的駐留頁面是否足夠多。如果足夠多,則調入新作業;反之,為那些缺頁率居高的作業新增物理塊。
? ? ? ? ? ? ? ? ? ? ? ?3.利用"L=S"準則調節缺頁率:L是缺頁之間的平均時間,S是平均缺頁服務時間,即用于置換一個頁面所需的時間。L遠大于S,說明很少發生缺頁;L小于S,說明頻繁發生缺頁。L=S時,磁盤和處理機都可達到它們的最大利用率。
? ? ? ? ? ? ? ? ? ? ? ?4.選擇暫停的進程:當多道程序度偏高時,系統必須減少多道程序的數目。優先暫停那些優先級較低或并不十分重要的進程,將它們調出到磁盤上。
? ? ? ? ? ?請求段表機制:請求分段式管理中所需的主要數據結構式請求段表,其數據結構從左到右依次是:段名,段長,段基址,存取方式,訪問字段,修改位,存在位,增補位,外存始址。除了段名,段長,段基址外,其他地段都是新增的。
? ? ? ? ? ? ? ? ? ?1.存取方式:存取方式字段用于對該段信息進行保護
? ? ? ? ? ? ? ? ? ?2.訪問字段:用于記錄該段被頻繁訪問的程度
? ? ? ? ? ? ? ? ? ?3.修改位:表示該頁在進入內存后是否已被修改過
? ? ? ? ? ? ? ? ? ?4.存在位:指示該段是否已經調入內存
? ? ? ? ? ? ? ? ? ?5.增補位:用于表示本段在運行過程中是否快做過動態增長
? ? ? ? ? ? ? ? ? ?6.外存始址:本段在外存中的起始地址,即起始盤號
? ? ? ? ?共享段表:為了實現分段共享,可在系統中配置一張共享段表,所有共享段都在共享段表中占有一個表項。在表項上面記錄了共享段號,段長,內存始址,狀態位,外存始址及共享計數等信息。接下去就是記錄了共享此分段的每個進程的情況。
? ? ? ? ? ? ? ? ? ? 1.共享進程計數count:為記錄有多少進程正在共享該段,須設置共享進程計數count,只要當count為0時,表示沒有進程正在使用它,則進行回收。
? ? ? ? ? ? ? ? ? ? ?2.存取控制字段:對于一個共享段,應為不同的進程賦予不同的存取權限
? ? ? ? ? ? ? ? ? ? ?3.對于一個共享段,在不同的進程中可以具有不同的段號,每個進程可用自己進程的段號取訪問該共享段。
? ? ? ? ? 分段保護:
? ? ? ? ? ? ? ? ? ? ?1.越界檢查:在進行地址變換時,首先將邏輯地址空間的段號與段表長度進行比較,還要檢查段內地址是否大于段長。
? ? ? ? ? ? ? ? ? ? ?2.存取控制檢查:在段表的每個表項中都設置一個"存取控制字段",用于規定對該段的訪問方式。
? ? ? ? ? ? ? ? ? ? ?3.環保護機構:該機制中規定,地編號的環具有高優先權。OS核心處于0號環內;某些重要的實用程序和操作系統服務占居中環;而一般的應用程序,則被安排在外環上。在環系統中,程序的訪問和調用應遵循以下規則:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1>一個程序可以訪問駐留在相同環或較低特權環(外環)中的數據
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2>一個程序可以調用駐留在相同環或較高特權環(內環)中的服務。
? ? ? ? ? ? ? ? ? ? ? ??
?
? ? ? ? ? ? ? ?
?
? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ??
?
? ? ? ? ? ? ? ? ? ??
總結
以上是生活随笔為你收集整理的计算机操作系统:虚拟存储器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机操作系统:存储器的管理
- 下一篇: 计算机操作系统:文件管理