14 虛擬內(nèi)存概述

傳統(tǒng)存儲(chǔ)管理方式的特征

常規(guī)存儲(chǔ)管理方式具有以下共同的特征:

1) 一次性

作業(yè)必須一次性全部裝入內(nèi)存后,方能開始運(yùn)行。這會(huì)導(dǎo)致兩種情況發(fā)生:

  • 當(dāng)作業(yè)很大,不能全部被裝入內(nèi)存時(shí),將使該作業(yè)無法運(yùn)行;
  • 當(dāng)大量作業(yè)要求運(yùn)行時(shí),由于內(nèi)存不足以容納所有作業(yè),只能使少數(shù)作業(yè)先運(yùn)行,導(dǎo)致多道程序度的下降。

由于內(nèi)存成本很高,針對(duì)以上問題,較為有效的解決方案是從邏輯上擴(kuò)充內(nèi)存容量,也就是虛擬存儲(chǔ)技術(shù)需要解決的問題。

2) 駐留性
  • 作業(yè)被裝入內(nèi)存后,就一直駐留在內(nèi)存中,其任何部分都不會(huì)被換出,直至作業(yè)運(yùn)行結(jié)束。運(yùn)行中的進(jìn)程,會(huì)因等待I/O而被阻塞,可能處于長期等待狀態(tài)。

許多在程序運(yùn)行中不用或暫時(shí)不用的程序(數(shù)據(jù))占據(jù)了大量的內(nèi)存空間,而一些需要運(yùn)行的作業(yè)又無法裝入運(yùn)行,顯然浪費(fèi)了寶貴的內(nèi)存資源。

局部性原理

要真正理解虛擬內(nèi)存技術(shù)的思想,首先必須了解計(jì)算機(jī)中著名的局部性原理。髙速緩存技術(shù)極大地影響了計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)。

局部性原理表現(xiàn)在以下兩個(gè)方面:

1) 時(shí)間局部性

如果程序中的某條指令一旦執(zhí)行,不久以后該指令可能再次執(zhí)行;如果某數(shù)據(jù)被訪問過,不久以后該數(shù)據(jù)可能再次被訪問。產(chǎn)生時(shí)間局部性的典型原因,是由于在程序中存在著大量的循環(huán)操作。

2) 空間局部性

一旦程序訪問了某個(gè)存儲(chǔ)單元,在不久之后,其附近的存儲(chǔ)單元也將被訪問,即程序在一段時(shí)間內(nèi)所訪問的地址,可能集中在一定的范圍之內(nèi),這是因?yàn)橹噶钔ǔJ琼樞虼娣?、順序?zhí)行的,數(shù)據(jù)也一般是以向量、數(shù)組、表等形式簇聚存儲(chǔ)的。

時(shí)間局部性是通過將近來使用的指令和數(shù)據(jù)保存到高速緩存存儲(chǔ)器中,并使用高速緩存的層次結(jié)構(gòu)實(shí)現(xiàn)??臻g局部性通常是使用較大的高速緩存,并將預(yù)取機(jī)制集成到高速緩存控制邏輯中實(shí)現(xiàn)。虛擬內(nèi)存技術(shù)實(shí)際上就是建立了 “內(nèi)存一外存”的兩級(jí)存儲(chǔ)器的結(jié)構(gòu),利用局部性原理實(shí)現(xiàn)髙速緩存。

虛擬存儲(chǔ)器的定義和特征

基于局部性原理,在程序裝入時(shí),可將程序的一部分裝入內(nèi)存,而將其余部分留在外存,即可啟動(dòng)程序執(zhí)行。在程序執(zhí)行過程中,當(dāng)所訪問的信息不在內(nèi)存時(shí),由操作系統(tǒng)將所需要的部分調(diào)入內(nèi)存,然后繼續(xù)執(zhí)行程序。

另一方面,操作系統(tǒng)將內(nèi)存中暫時(shí)不使用的內(nèi)容換出到外存上,從而騰出空間存放將要調(diào)入內(nèi)存的信息。這樣,系統(tǒng)好像為用戶提供了一個(gè)比實(shí)際內(nèi)存大得多的存儲(chǔ)器,稱為虛擬存儲(chǔ)器。

之所以將其稱為虛擬存儲(chǔ)器,是因?yàn)檫@種存儲(chǔ)器實(shí)際上并不存在,只是由于系統(tǒng)提供了部分裝入、請(qǐng)求調(diào)入和置換功能后(對(duì)用戶完全透明),給用戶的感覺是好像存在一個(gè)比實(shí)際物理內(nèi)存大得多的存儲(chǔ)器。虛擬存儲(chǔ)器的最大容量為:min(內(nèi)存+外存,2^n) 。n為計(jì)算機(jī)的地址總線位數(shù)。

虛擬存儲(chǔ)器有以下三個(gè)主要特征:

  • 多次性,是指無需在作業(yè)運(yùn)行時(shí)一次性地全部裝入內(nèi)存,而是允許被分成多次調(diào)入內(nèi)存運(yùn)行。
  • 對(duì)換性,是指無需在作業(yè)運(yùn)行時(shí)一直常駐內(nèi)存,而是允許在作業(yè)的運(yùn)行過程中,進(jìn)行換進(jìn)和換出。
  • 虛擬性,是指從邏輯上擴(kuò)充內(nèi)存的容量,使用戶所看到的內(nèi)存容量,遠(yuǎn)大于實(shí)際的內(nèi)存容量。

虛擬內(nèi)存技術(shù)的實(shí)現(xiàn)

虛擬內(nèi)存中,允許將一個(gè)作業(yè)分多次調(diào)入內(nèi)存。釆用連續(xù)分配方式時(shí),會(huì)使相當(dāng)一部分內(nèi)存空間都處于暫時(shí)或“永久”的空閑狀態(tài),造成內(nèi)存資源的嚴(yán)重浪費(fèi),而且也無法從邏輯上擴(kuò)大內(nèi)存容量。因此,虛擬內(nèi)存的實(shí)需要建立在離散分配的內(nèi)存管理方式的基礎(chǔ)上。虛擬內(nèi)存的實(shí)現(xiàn)有以下三種方式:

  • 請(qǐng)求分頁存儲(chǔ)管理
  • 請(qǐng)求分段存儲(chǔ)管理
  • 請(qǐng)求段頁式存儲(chǔ)管理

不管哪種方式,都需要有一定的硬件支持。一般需要的支持有以下幾個(gè)方面:

  • 一定容量的內(nèi)存和外存。
  • 頁表機(jī)制(或段表機(jī)制),作為主要的數(shù)據(jù)結(jié)構(gòu)。
  • 中斷機(jī)構(gòu),當(dāng)用戶程序要訪問的部分尚未調(diào)入內(nèi)存,則產(chǎn)生中斷。
  • 地址變換機(jī)構(gòu),邏輯地址到物理地址的變換。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 繼續(xù)來學(xué)習(xí)內(nèi)存管理之虛擬內(nèi)存管理 傳統(tǒng)存儲(chǔ)管理方式同時(shí)將多個(gè)進(jìn)程保存在內(nèi)存中以便允許多道程序設(shè)計(jì)。 一次性作業(yè)必須...
    KevinCool閱讀 1,688評(píng)論 0 1
  • 8.1虛擬存儲(chǔ)的需求背景 虛擬內(nèi)存是非連續(xù)內(nèi)存分配的一個(gè)延續(xù),非連續(xù)內(nèi)存分配在存儲(chǔ)空間內(nèi)可以連續(xù)也可以不連續(xù)。虛擬...
    龜龜51閱讀 6,254評(píng)論 2 6
  • word直接復(fù)制來了,格式就不改了。至于這門課怎么復(fù)習(xí),只要平時(shí)實(shí)驗(yàn)都認(rèn)真完成、報(bào)告認(rèn)真寫,平時(shí)分都很高;考試的話...
    Jozhn閱讀 4,889評(píng)論 0 8
  • 存儲(chǔ)器管理 存儲(chǔ)器的層次結(jié)構(gòu) 存儲(chǔ)器的層次結(jié)構(gòu):寄存器-高速緩存-主存-磁盤緩存-磁盤-可移動(dòng)存儲(chǔ)介質(zhì) 可執(zhí)行存儲(chǔ)...
    顏洛濱閱讀 1,050評(píng)論 0 2
  • 掀起蚊帳,我視眼空曠,我的世界色彩斑斕,可成群的蚊總能輕而易舉的讓我遍體鱗傷。扎好蚊帳,我視眼狹隘,我的世界寂靜無...
    岑子辛閱讀 170評(píng)論 0 0

友情鏈接更多精彩內(nèi)容