簡述虛擬存儲技術的工作原理
❶ 內存擴充之虛擬存儲技術
傳統存儲管理
特徵
時間局部性:如果執行了程序中的某條指令,那麼不久後這條指令很有可能再次執行;如果某個數據被訪問過,不久之後該數據很可能再次被訪問(因為程序中存在大量循環)
空間局部性:一旦程序訪問了某個存儲單元,在不久之後,其附近的存儲單元很有可能被訪問(因為很多數據在內存中是連續存放的,並且程序的指令也是順序地在內存中存放的
寄存器
高速緩存
內存
外存(如磁碟、磁帶等)
越往上容量越小,訪問速度越快,成本越高
越往下容量越大,訪問速度越慢,成本越低
高速緩存技術的思想:將近期會頻繁訪問到的數據放到更高速的存儲器中,暫時用不到的數據放在更低速存儲器中
快表機構就是將近期常訪問的頁表項副本放到更高速的cache中
基於局部性原理,在程序裝入時,可以將程序中很快就會用到的部分裝入內存,暫時用不到的部分留在外存,就可以讓程序開始執行
在程序執行過程中,當所訪問的信息不在內存時,由操作系統負責將所需信息從外存調入內存,然後繼續執行程序
若內存空間不夠,由操作系統將內存中暫時用不到的信息換出到外存
因此,在操作系統的管理下,在用戶看來似乎有一個比實際內存大得多的內存,這就是虛擬內存
操作系統虛擬性的一個體現,實際的物理內存大小沒有變,只是在邏輯上進行了擴充
虛擬內存的最大容量是由計算機的地址結構(CPU定址范圍)確定的
虛擬內存的實際容量 = min(內存外存容量之和,CPU定址范圍)
虛擬內存有以下三個主要特徵
虛擬內存技術,允許一個作業多次調入內存。如果採用連續分配方式,會不方便實現。因此,虛擬內存的實現需要建立在離散分配的內存管理方式基礎上
傳統的非連續分配存儲管理
基本分頁存儲管理
基本分段存儲管理
基本段頁式存儲管理
虛擬內存的實現
請求分頁存儲管理
請求分段存儲管理
請求段頁式存儲管理
主要區別:在程序執行過程中,當所訪問的信息不在內存時,由操作系統負責將所需信息從外存調入內存,然後繼續執行程序。若內存空間不夠,由操作系統負責將內存中暫時用不到的信息換出到外存
操作系統要提供請求調頁/段功能、頁面/段置換功能
請求分頁存儲管理和基本分頁存儲管理的主要區別
頁表機制
頁表項:內存塊號、狀態位、訪問欄位、修改位、外存地址,頁號時隱含的
內存塊號是頁面在內存中對應的頁框號,如果狀態位為0,則內存塊號為無
狀態位表示是否已被調入內存
訪問欄位記錄最近被訪問過幾次,或者上次訪問時間,由此操作系統能夠提供置換演算法
修改位記錄頁面被調入內存後是否被修改過,如果沒有,就不需要浪費時間寫回外存
外存地址是頁面在外存中的存放位置
缺頁中斷機構
在請求分頁系統中,每當要訪問的頁面不在內存時,便會產生一個缺頁中斷,然後由操作系統的缺頁中斷處理程序處理中斷(內中斷)
此時缺頁的進程阻塞,放入阻塞隊列,調頁完成後再將其喚醒,放回就緒隊列
如果內存中有空閑塊,則為進程分配一個空閑塊,將所缺頁面裝入該塊,並修改頁表中相應的頁表項
如果內存中沒有空閑塊,則由頁面置換演算法選擇一個頁面淘汰,若該頁面在內存期間被修改過,則要將其寫回外存,為修改過的頁面不用寫回外存
一條指令再執行期間可能產生多次缺頁中斷( A to B)
新增的步驟
頁面的換入、換出需要磁碟IO,會有較大的開銷,因此好的頁面置換演算法應該追求更少的缺頁率
缺頁中斷≠頁面置換
發生缺頁中斷會發生調頁,只有內存塊滿了才發生頁面置換
最佳置換演算法OPT:每次淘汰以後永不使用或最長時間內不再被訪問的頁面
理想化的演算法,很難實現
先進先出演算法FIFO:每次淘汰最先進入內存的頁面
實現:把調入內存的頁面根據調入的先後順序排成隊列,頁面置換時換出隊頭頁面,新調入的頁面排到隊尾
優點:實現簡單
缺點1:belady異常,為進程分配的物理塊數增大時,缺頁次數不減反增的異常現象。只有FIFO會產生belady異常。
缺點2:演算法與進程實際運行時的規律不適應,因為先調入的頁面有可能最經常被訪問,因此演算法性能差
最近最久未使用置換演算法LRU:淘汰最近最久未使用的頁面
實現方法:賦予每個頁面對應的頁表項中,用訪問欄位記錄該頁面自上次被訪問以來所經歷的時間t
優點:性能最接近OPT
缺點:實現困難、開銷大
時鍾置換演算法CLOCK/NRU
簡單NRU:為每一個頁表項設置一個訪問位,再將內存中的頁面都通過連接指針連成一個循環隊列,當某頁被訪問時,訪問位為1,只需檢查頁的訪問位。如果為0,就將該頁換出,否則將其改為0,暫不換出,繼續向後掃描,若第一輪掃描都是1,將這也頁面的訪問位改為0後,進行第二輪掃描,第二輪掃描中一定會有訪問位為0的頁面,將其換出。因此最多經過兩輪掃描
改進NRU:如果淘汰的頁面沒有被修改過,就不需要執行IO操作,只有淘汰的頁面被修改過時,才需要寫回外存。因此,同時考慮最近有無訪問和有無修改,在其他條件相同時,優先淘汰沒有修改過的頁面,避免IO操作
第一輪:找到第一個訪問位和修改位都為0的頁面進行替換,如果沒有找到進行下一輪掃描
第二輪:查找第一個訪問位為0,修改位為1的頁面進行替換,本輪將所有被掃描過的訪問位設置為0,如果沒有進行下一輪掃描
第三輪:查找0,0替換否則下一輪
第四輪:查找0,1替換
最多會進行四輪掃描
駐留集:請求分頁管理中給進程分配的物理塊的集合
在採用了虛擬存儲技術的系統中,駐留集大小一般小於進程的總大小
駐留集太小,導致缺頁頻繁,系統要花大量時間處理缺頁,實際用於進程推進的時間很少
駐留集太大,會導致多道程序並發度下降,資源利用率降低
固定分配:操作系統為每個進程分配一組固定數目的物理塊,在進程運行期間不再改變
可變分配:先為每個進程分配一定數目的物理塊,在進程運行期間,可根據情況作適當的增加或減少
局部置換:發生缺頁時只能選進程自己的物理地址塊進行置換
全局置換:可以將操作系統保留的空閑物理塊分配給缺頁進程,也可以將別的進程持有的物理塊置換到外存,再分配給缺頁進程
不存在固定分配全局置換的策略,因為全局置換意味著一個進程擁有的物理塊數量必然改變
其他三種組合存在
固定分配局部置換:系統為每個進程分配一定數量的物理塊,在整個運行期間都不改變。若進程在運行中發生缺頁,並且需要進行頁面置換,則只能從該進程在內存中的頁面中選出一頁換出,然後再調入需要的頁面
缺點:很難在剛開始就確定應為每個進程分配多少個物理地址塊才算合理(採用這種策略的系統可以根據進程大小、優先順序、或是根據程序員給出的參數來確定為一個進程分配的內存塊數
可變分配全局置換:剛開始會為進程分配一定數量的物理塊。操作系統會保持一個空閑物理塊隊列,當某進程發生缺頁時,從空閑物理塊中取出一塊分給該進程;若無空閑物理塊,則選擇一個未鎖定的頁面換出到外存,再將該物理塊分配給缺頁的進程。採用這種策略時,只要某進程發生缺頁,都將獲得新的物理塊,僅當空閑物理塊用完時,系統才選擇一個未鎖定的頁面調出。被選擇調出的頁面可能是系統中任何一個進程的頁面,因此這個被選中的進程擁有的物理塊會減少,缺頁率會增加
只要缺頁就給該進程分配新的物理塊
可變分配局部置換:剛開始會為每個進程分配一定數量的物理塊,當某進程發生缺頁時,只允許從該進程自己的物理塊中選出一個進行頁面置換。如果進程在運行過程中頻繁缺頁,系統會為該進程多分配幾個物理塊,直至該進程缺頁率趨於適當程度;反之,如果缺頁率太低,就是當減少分配給該進程的內存塊數
要根據發生缺頁的頻率來動態增加或減少進程的物理塊
何時調入頁面
從何處調入頁面
對換區:讀寫速度更快,採用連續分配方式
文件區:讀寫速度更慢,採用離散分配方式
抖動/顛簸現象:剛剛換出的頁面馬上要換入內存,剛剛換入的頁面馬上要換出外存,這種頻繁的頁面調度行為稱為抖動/顛簸
主要原因是進程頻繁訪問的頁面數目高於可用的物理塊數(分配給進程的物理塊不夠)
為進程分配物理塊太少會使進程發生抖動現象,為進程分配的物理塊太多會降低系統的並發度降低某些資源的利用率。因此提出了「工作集」的概念
工作集:在某段時間間隔里,進程實際訪問頁面的集合
駐留集:請求分頁存儲管理中給進程分配的內存塊的集合
駐留集不能小於工作集,否則進程運行過程中將頻繁缺頁
❷ 虛擬存儲器的基本原理是什麼其容量主要受到什麼限制
虛擬存儲器的基本特徵是:
①虛擬擴充,即不是物理上而是邏輯上擴充了內存容量;
②部分裝入,即每個作業不是全部一次性地裝入內存,而是只裝入一部分;
③離散分配,即不必佔用連續的內存空間,而是"見縫插針";
④多次對換,即所需的全部程序和數據要分成多次調入內存.
虛擬存儲器的容量主要受到指令中表示地址的字長和外存的容量的限制.
❸ 虛擬存儲器技術主要用於解決什麼問題簡述虛擬存儲器的基本工作原理。
虛擬存儲器技術主要解決電笑磨腦內存不夠的問題,電腦中所運行的程序均需經由內存執行,若執行的姿擾程序佔用內存很大或很多,則會導致內存消耗殆盡。
為解決該問題,Windows中運用了虛擬內存技術,即勻出一部分硬碟空間來充當內存使用。當內存耗盡時,電腦就會自跡升旦動調用硬碟來充當內存,以緩解內存的緊張。若計算機運行程序或操作所需的隨機存儲器(RAM)不足時,則 Windows 會用虛擬存儲器進行補償。
工作原理
1、中央處理器訪問主存的邏輯地址分解成組號a和組內地址b,並對組號a進行地址變換,即將邏輯組號a作為索引,查地址變換表,以確定該組信息是否存放在主存內。
2、如該組號已在主存內,則轉而執行④;如果該組號不在主存內,則檢查主存中是否有空閑區,如果沒有,便將某個暫時不用的組調出送往輔存,以便將這組信息調入主存。
3、從輔存讀出所要的組,並送到主存空閑區,然後將那個空閑的物理組號a和邏輯組號a登錄在地址變換表中。
4、從地址變換表讀出與邏輯組號a對應的物理組號a。
5、從物理組號a和組內位元組地址b得到物理地址。
6、根據物理地址從主存中存取必要的信息。
(3)簡述虛擬存儲技術的工作原理擴展閱讀:
相關概念
1、實地址與虛地址
用戶編製程序時使用的地址稱為虛地址或邏輯地址,其對應的存儲空間稱為虛存空間或邏輯地址空間;而計算機物理內存的訪問地址則稱為實地址或物理地址,其對應的存儲空間稱為物理存儲空間或主存空間。程序進行虛地址到實地址轉換的過程稱為程序的再定位。
2、虛擬內存的訪問過程
虛存空間的用戶程序按照虛地址編程並存放在輔存中。程序運行時,由地址變換機構依據當時分配給該程序的實地址空間把程序的一部分調入實存。
每次訪存時,首先判斷該虛地址所對應的部分是否在實存中:如果是,則進行地址轉換並用實地址訪問主存;否則,按照某種演算法將輔存中的部分程序調度進內存,再按同樣的方法訪問主存。
3、異構體系
從虛存的概念可以看出,主存-輔存的訪問機制與cache-主存的訪問機制是類似的。這是由cache存儲器、主存和輔存構成的三級存儲體系中的兩個層次。cache和主存之間以及主存和輔存之間分別有輔助硬體和輔助軟硬體負責地址變換與管理,以便各級存儲器能夠組成有機的三級存儲體系。
❹ 虛擬內存技術的工作原理
虛擬內存技術的工作原理是什麼?虛擬內存有什麼技術?下面由我來和大家一起了解吧!
虛擬內存技術介紹
虛擬內存別稱虛擬存儲器(Virtual Memory)。電腦中所運行的
程序均需經由內存執行,若執行的程序佔用內存很大或很多,則會導致內存消耗殆盡。為解決該問題,Windows中運用了虛擬內存[2] 技術,即勻出一部分硬碟空間來充當內存使用。當內存耗盡時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。若計算機運行程序或操作所需的隨機存儲器(RAM)不足時,則 Windows 會用虛擬存儲器進行補償。它將計算機的RAM和硬碟上的臨時空間組合。當RAM運行速率緩慢時,它便將數據從RAM移動到稱為“分頁文件”的空間中。將數據移入分頁文件可釋放RAM,以便完成工作。 一般而言,計算機的RAM容量越大,程序運行得越快。若計算機的速率由於RAM可用空間匱乏而減緩,則可嘗試通過增加虛擬內存來進行補償。但是,計算機從RAM讀取數據的速率要比從硬碟讀取數據的速率快,因而擴增RAM容量(可加內存條)是最佳選擇。虛擬內存是Windows 為作為內存使用的一部分硬碟空間。虛擬內存在硬碟上其實就是為一個碩大無比的文件,文件名是PageFile.Sys,通常狀態下是看不到的。必須關閉資源管理器對系統文件的保護功能才能看到這個文件。虛擬內存有時候也被稱為是“頁面文件”就是從這個文件的文件名中來的。[2] 內存在計算機中的作用很大,電腦中所有運行的程序都需要經過內存來執行,如果執行的程序很大或很多,就會導致內存消耗殆盡。為了解決這個問題,WINDOWS運用了虛擬內存技術,即拿出一部分硬碟空間來充當內存使用,這部分空間即稱為虛擬內存,虛擬內存在硬碟上的存在形式就是 PAGEFILE.SYS這個頁面文件。
工作原理
虛擬存儲器是由硬體和 操作系統 自動實現存儲信息調度和管理的。它的工作過程包括6個步驟:
①中央處理器訪問主存的邏輯地址分解成組號a和組內地址b,並對組號a進行地址變換,即將邏輯組號a作為索引,查地址變換表,以確定該組信息是否存放在主存內。
②如該組號已在主存內,則轉而執行④;如果該組號不在主存內,則檢查主存中是否有空閑區,如果沒有,便將某個暫時不用的組調出送往輔存,以便將這組信息調入主存。
③從輔存讀出所要的組,並送到主存空閑區,然後將那個空閑的物理組號a和邏輯組號a登錄在地址變換表中。
④從地址變換表讀出與邏輯組號a對應的物理組號a。
⑤從物理組號a和組內位元組地址b得到物理地址。
⑥根據物理地址從主存中存取必要的信息。
❺ 求頁式虛擬存儲技術的原理。
虛擬存儲器是根據程序的邏輯地址轉換來的,也稱線性地址空間。一般每個進程,甚至每個段都有一個,以32位為例,則每個最大可達4G。 而主存目前一般為百M。因此程序中所指的存儲單元並不能都放到主存中,也就是並不是每個程序所用的存儲單元,都有具體的物理的存儲器單元與之對應。 但由於程序的兩個局部性原理,在一個時刻,程序只在一個比較小的范圍內運行。所以我們把程序可能用到的整個存儲空間分成一個個相同大小的頁(按頁管理硬體上容易實現),只把其中的一些頁放在主存中,而其它的頁則等需要時再建,或放在輔存(磁碟)中。同時建立一個頁表,對應於每一頁,如果該頁在主存中,則頁表記錄它在主存中的地址;如果不在主存中,則在頁表上作不在主存的標記。 這樣,當程序需要調用某個存儲單元的內容時,先根據它的線性地址,算出其所在的頁。查頁表,看是不是在主存中?如果在,則直接存取。如果查到頁表上是不在的標記,那就是一個page fault。要把主存中的某一頁(LRU策略)換到磁碟上,把要訪問的那個單元所在的頁調入主存,再進行存取。 就象一個預計有一萬學生的學校,理論上每個學生都應有一個位子上課(一萬個虛擬位子),而學校只有一千個(物理)位子。但實際上,學校也不會一萬個人同時上課,只要讓上課的同學有位子(在主存中),而其它同學只要留下聯系方法能找到就好。為了降低管理的復雜性,我們採用按學號分班(頁)管理。每個班要麼一起上課(主存),要麼一起呆在寢室(磁碟)。而在學校保留一個動態表(頁表)表明每個班在哪兒(物理地址)上課,或者沒上課(不在主存)。現在假設我們想按學號找一個同學,而且是女同學,只能在教室說話,呵呵。那麼: 先算出來是哪個班的,查動態表,看該班是否在教室。在,直接按位置找到(hit);不在(page fault),要先找個不上課的班趕回寢室,把要找女生所在的班調到教室,再按位置找那個同學。 動態表(頁表)的大小=表項數*每個表項所需的位數。 表項數=虛擬班數=虛擬人數(虛擬地址空間)/每班人數(每頁大小) 每個表項的位數=Log(教室數)+適當控制位數
麻煩採納,謝謝!
❻ 計算機中存儲器Cache的基本原理是什麼虛擬內存的工作原理又是什麼
其實網路里也有~
Cache其有三部分:
Cache存儲體:存放由主存調入的指令與數據塊。
地址轉換部件:建立目錄表以實現主存地址到緩存地址的轉換。
替換部件:在緩存已滿時按一定策略進行數據塊替換,並修改地址轉換部件。
虛擬內存:
別稱虛擬存儲器(Virtual Memory)。電腦中所運行的程序均需經由內存執行,若執行的程序很大或很多,則會導致內存消耗殆盡。為解決該問題,Windows中運用了虛擬內存技術,即勻出一部分硬碟空間來充當內存使用。當內存耗盡時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。若計算機缺乏運行程序或操作所需的隨機存儲器 (RAM),則 Windows 會用之進行補償。它將計算機的RAM和硬碟上的臨時空間組合。當RAM運行速率緩慢時,它便將數據從RAM移動到稱為「分頁文件」的空間中。將數據移入與移出分頁文件可釋放RAM,以便完成工作。 一般而言,計算機的RAM越多,程序運行得越快。若計算機的速率由於RAM可用空間匱乏而減緩,則可嘗試借增加虛擬內存來進行補償。但是,計算機從RAM讀取數據的速率要比從硬碟讀取數據的速率快,因而擴增RAM容量(可加內存條)是最佳選擇。
參考:http://ke..com/view/44274.htm
http://ke..com/view/976.htm