偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

虛擬內(nèi)存技術(shù)的來龍去脈

存儲
虛擬內(nèi)存是操作系統(tǒng)配合硬件實現(xiàn),它是隱藏自動地工作著,不需要程序員進(jìn)行任何干涉。虛擬內(nèi)存給予應(yīng)用程序強(qiáng)大的能力,應(yīng)用程序可以創(chuàng)建和銷毀內(nèi)存片,應(yīng)用程序可以將內(nèi)存片映射到磁盤文件中,應(yīng)用程序可以與其它進(jìn)程共享內(nèi)存。

1、虛擬內(nèi)存簡介

每個現(xiàn)代計算機(jī)系統(tǒng)都配有高速可隨機(jī)訪問存儲器,稱為主存儲器、物理內(nèi)存或者直接稱為內(nèi)存。內(nèi)存是用于存放代碼和數(shù)據(jù)的硬件,它是處理器能直接尋址的存儲空間,內(nèi)存由半導(dǎo)體器件制成,特點是存取速率快。

程序被執(zhí)行前需要先將程序放到內(nèi)存中才能被CPU處理,我們平常使用的程序,如:操作系統(tǒng)、辦公軟件、游戲軟件等,通常是安裝在硬盤等外存上,軟件需要運行時,必須把它們調(diào)入內(nèi)存中運行,才能真正被執(zhí)行。

內(nèi)存的承載實體通常是隨機(jī)存取存儲器(RAM),CPU可以直接與RAM交換數(shù)據(jù)。RAM在工作狀態(tài)下,可以隨時從任何一個指定的地址寫入(存入)或讀出(取出)信息。

高效的內(nèi)存管理系統(tǒng)是操作系統(tǒng)的重要功能之一,現(xiàn)代操作系統(tǒng)提供了一種內(nèi)存管理技術(shù):虛擬內(nèi)存。虛擬內(nèi)存是計算機(jī)系統(tǒng)最重要的概念之一,它幾乎涉及計算機(jī)系統(tǒng)的所有層面,在硬件層面,編譯器層面,文件層面,進(jìn)程層面扮演重要角色。

虛擬內(nèi)存是操作系統(tǒng)配合硬件實現(xiàn),它是隱藏自動地工作著,不需要程序員進(jìn)行任何干涉。虛擬內(nèi)存給予應(yīng)用程序強(qiáng)大的能力,應(yīng)用程序可以創(chuàng)建和銷毀內(nèi)存片,應(yīng)用程序可以將內(nèi)存片映射到磁盤文件中,應(yīng)用程序可以與其它進(jìn)程共享內(nèi)存。

2、物理尋址和虛擬尋址

(1)物理尋址

計算機(jī)系統(tǒng)的內(nèi)存被組織成一個N個連續(xù)字節(jié)單元組成的數(shù)組,每個字節(jié)有且僅有一個唯一的物理地址(PA)。第一個字節(jié)的物理地址為0,接下來的一個字節(jié)的物理地址為1,再下一個字節(jié)的物理地址為2,依此類推。CPU訪問內(nèi)存最自然的方式時使用物理地址,這種訪問方式稱為物理尋址。

早期的PC使用物理尋址,目前數(shù)字信號處理器,嵌入式微控制器(單片機(jī))任然繼續(xù)使用這種尋址方式。下圖展示了一個物理尋址的示例:

上圖示例了一條加載指令,它讀取物理地址4處開始的4字節(jié)。當(dāng)處理器執(zhí)行這條加載指令時,處理器會生成一個物理地址4,內(nèi)存總線將物理地址4傳遞到內(nèi)存的地址端口,內(nèi)存取出物理地址4處的連續(xù)4個字節(jié)數(shù)據(jù)輸出到內(nèi)存數(shù)據(jù)總線上,傳遞給處理器,處理器會將這4字節(jié)數(shù)據(jù)存放在寄存器中。

(2)虛擬尋址

物理尋址最直接,效率高,但是這種尋址方式明顯缺點:不支持運行比物理內(nèi)容量大的應(yīng)用程序;不支持編寫與機(jī)器無關(guān)的代碼,代碼需要和物理內(nèi)存配置有對應(yīng)關(guān)系?,F(xiàn)代計算機(jī)系統(tǒng)使用的是一種稱為虛擬尋址的尋址方式。

虛擬尋址的尋址過程是:CPU通常生成一個虛擬地址(VA)來訪問主存,這個虛擬地址被加載到內(nèi)存之前,需要先轉(zhuǎn)換成物理地址(PA),最終CPU間接的訪問了內(nèi)存的這個物理地址(PA)。將虛擬地址轉(zhuǎn)換成物理地址的過程叫做地址翻譯。CPU芯片內(nèi)部有一個叫做內(nèi)存管理單元(MMU)的專用硬件,內(nèi)存管理單元利用查詢表來動態(tài)完成地址翻譯。

下圖展示了一個物理尋址的示例:

上圖示例了一條加載指令,它讀取虛擬地址88處開始的4個字節(jié)。當(dāng)處理器執(zhí)行這條加載指令時,處理器會生成一個虛擬地址88給MMU,MMU查表得到虛擬地址88對應(yīng)的物理地址4,內(nèi)存總線將物理地址4傳遞到內(nèi)存的地址端口,內(nèi)存取出物理地址4處的連續(xù)4個字節(jié)數(shù)據(jù)輸出到內(nèi)存數(shù)據(jù)總線上,傳遞給處理器,處理器會將這4字節(jié)數(shù)據(jù)存放在寄存器中。

3、內(nèi)存管理技術(shù)發(fā)展

(1)人工操作

最早期的計算機(jī)并沒有操作系統(tǒng),而是采用人工操作方式處理任務(wù)。程序員將用機(jī)器語言編寫好的程序和數(shù)據(jù)。通過穿孔的方式保存在紙帶上,然后將穿孔紙帶裝入到機(jī)器的輸入機(jī),隨后通過控制臺開關(guān)啟動程序。計算器完成計算后,通過打印機(jī)輸出計算結(jié)果。操作員取走結(jié)果并卸下紙帶后,才能開始操作下一個程序(紙袋)。
紙袋識別原理:采集器是一組探針和一組對應(yīng)的探針座, 紙帶經(jīng)過探針組,有孔的地方探針會接觸導(dǎo)通,而沒孔的地方則不會導(dǎo)通,勻速拖動紙帶這樣計算機(jī)就能夠識別紙帶編碼,進(jìn)而進(jìn)行計算。

?探針有兩種類型:信號探針和同步探針。信號探針讀取的是程序代碼和數(shù)據(jù),同步探針就是產(chǎn)生同步信號,同步信號的作用就和現(xiàn)代計算機(jī)中時鐘信號,每一個同步信號都會觸發(fā)計算機(jī)執(zhí)行一條指令。

人工操作方式的缺點非常明顯:

1、計算機(jī)的高速與手工操作的低速之間矛盾巨大,人機(jī)速度極不協(xié)調(diào),資源浪費嚴(yán)重。

2、一個程序獨占全機(jī),導(dǎo)致資源的利用率低。

特點:最早期的電子計算機(jī)并沒有操作系統(tǒng),沒有內(nèi)存,也沒有內(nèi)存管理,人工操作。

(2)單道批處理機(jī)制

20世紀(jì)50年代后期,為了克服手工操作的慢速度和計算機(jī)的高速度之間的矛盾,出現(xiàn)了單道批處理系統(tǒng),即在計算機(jī)上加載一個系統(tǒng)軟件,在系統(tǒng)軟件的控制下計算機(jī)能夠自動地、成批地處理一個或多個用戶的作業(yè)。

單道批處理系統(tǒng)的目的是減少作業(yè)間轉(zhuǎn)換時的人工操作,從而減少CPU的等待時間。批處理就是將作業(yè)按照它們的性質(zhì)分組(或分批),然后再一個接一個地提交給計算機(jī)系統(tǒng),由計算機(jī)自動完成后再輸出結(jié)果,從而減少作業(yè)建立和結(jié)束過程中的時間浪費。這種工作模式就像是工廠里面的流水線一樣。

?單道批處理系統(tǒng)的特征是內(nèi)存中只允許存放一個作業(yè),即當(dāng)前正在運行的作業(yè)才能駐留內(nèi)存,作業(yè)的執(zhí)行順序是先進(jìn)先出,即按順序執(zhí)行。這種模型下用戶進(jìn)程總是加載到同一個固定內(nèi)存地址上運行,用戶進(jìn)程使用的地址就是物理地址。

這種系統(tǒng)有兩個致命的缺點:1、系統(tǒng)只能運行比物理內(nèi)存容量小的應(yīng)用程序,不支持運行比物理內(nèi)存容量大的應(yīng)用程序。

2、系統(tǒng)只能運行一個應(yīng)用程序,不支持運行多個應(yīng)用程序。

接下來的計算機(jī)歷史,就是計算機(jī)先驅(qū)們一步一步克服這兩個問題的歷史。本節(jié)我們來看看計算機(jī)先驅(qū)們是怎樣征服這兩個BOOS的。

(3)多道批處理機(jī)制

由于在單道批處理系統(tǒng)中,一個作業(yè)單獨進(jìn)入內(nèi)存并獨占系統(tǒng)資源,直到運行結(jié)束后下一個作業(yè)才能進(jìn)入內(nèi)存,當(dāng)作業(yè)進(jìn)行I/O操作時,CPU只能處于等待狀態(tài),因此CPU利用率較低。

直到20世紀(jì)60年代中期,多道程序設(shè)計技術(shù)出現(xiàn),正式進(jìn)入多道批處理系統(tǒng)階段。 1964年,IBM生產(chǎn)了第一臺小規(guī)模集成電路計算機(jī)IBM 360,為該機(jī)開發(fā)的OS/360 操作系統(tǒng)是第一個能夠運行多道程序的批處理系統(tǒng)。

多道程序設(shè)計技術(shù)可同時把多個程序放入內(nèi)存,并允許它們交替在CPU中運行,共享系統(tǒng)中的各種硬、軟件資源。當(dāng)一道程序因I/O(輸入/輸出)請求而暫停運行時,CPU便立即轉(zhuǎn)去運行另一道程序。多道批處理不是多個程序同時運行,而是多個程序在內(nèi)存中準(zhǔn)備運行,只有當(dāng)正在運行的的那道程序因為某種原因(比如,等待輸出或輸出數(shù)據(jù))而暫時無法繼續(xù)運行的時候,系統(tǒng)將自動地啟動另一道程序運行。

即在內(nèi)存中可同時存在若干道作業(yè),作業(yè)執(zhí)行的次序與進(jìn)入內(nèi)存的次序無嚴(yán)格的對應(yīng)關(guān)系,因為這些作業(yè)是通過一定的作業(yè)調(diào)度算法來使用CPU的。一個作業(yè)在等待I/O處理時,CPU調(diào)度另外一個作業(yè)運行,因此CPU的利用率顯著地提高了。

由于多道程序能交替使用CPU,提高了CPU及其他系統(tǒng)資源的利用率,同時也提高了系統(tǒng)的效率。多道批處理系統(tǒng)的缺點是延長了作業(yè)的周轉(zhuǎn)時間,用戶不能進(jìn)行直接干預(yù),缺少交互性,不利于程序的開發(fā)與調(diào)試。

多道批處理系統(tǒng)的優(yōu)點也很明顯:系統(tǒng)內(nèi)可同時容納多個作業(yè)。這些作業(yè)放在外存中,組成一個后備隊列,系統(tǒng)按一定的調(diào)度原則每次從后備作業(yè)隊列中選取一個或多個作業(yè)進(jìn)入內(nèi)存運行,運行作業(yè)結(jié)束、退出運行和后備作業(yè)進(jìn)入運行均由系統(tǒng)自動實現(xiàn),從而在系統(tǒng)中形成一個自動轉(zhuǎn)接的、連續(xù)的作業(yè)流。

多道批處理系統(tǒng)的缺點也很明顯:在系統(tǒng)運行過程中,不允許用戶與其作業(yè)發(fā)生交互作用,即作業(yè)一旦進(jìn)入系統(tǒng),用戶就不能直接干預(yù)其作業(yè)的運行。

(4)覆蓋機(jī)制

多道批處理系統(tǒng)解決了運行多個應(yīng)用程序的問題,但是系統(tǒng)仍然不支持運行比物理內(nèi)容量大的應(yīng)用程序,這種限制產(chǎn)生了一種覆蓋機(jī)制。覆蓋機(jī)制通過覆蓋應(yīng)用程序不再需要的地址空間,來達(dá)到重用內(nèi)存的目的。例如,一旦系統(tǒng)加載完成并開始運行,系統(tǒng)初始化的代碼內(nèi)存就可以回收給程序使用,這種軟件覆蓋機(jī)制需要應(yīng)用程序開發(fā)人員做額外的編程操作。覆蓋技術(shù)釋放了無用代碼空間,讓可用的內(nèi)存空間變大。

覆蓋技術(shù)通俗的講就是將程序分為多個段,經(jīng)常會被執(zhí)行的段就放在固定區(qū),調(diào)入后除非運行結(jié)束,否則是不會被調(diào)出的。而不常用則放在覆蓋區(qū),只有要用到的時候才能載入內(nèi)存,否則就會被調(diào)出被其它程序覆蓋。

如下圖所示,假如我們有一個程序A,8k的main經(jīng)常會被執(zhí)行,那么內(nèi)存就會為其分配一個8k的固定區(qū)。而對于B、C這兩個指揮被A段偶爾調(diào)用的地方,內(nèi)存就會取這兩個段的最大值也就是10k的空間作為這兩段的覆蓋區(qū)。DEF同理??梢钥闯龈采w技術(shù)僅用30k的內(nèi)存空間,解決了52k的程序加載到內(nèi)存的問題。

(5)交換機(jī)制

內(nèi)存同時容納少數(shù)幾個進(jìn)程,每個進(jìn)程被加載到一個連續(xù)的物理內(nèi)存中,系統(tǒng)為內(nèi)存中的這些進(jìn)程提供分時服務(wù)。如果要運行其它進(jìn)程,系統(tǒng)就需要選擇內(nèi)存中的一個進(jìn)程交換出去,系統(tǒng)會把選中的進(jìn)程復(fù)制到磁盤上的特定交換分區(qū)中。然后將需要運行的其它程序加載到內(nèi)存中運行。

交換一個進(jìn)程時,操作系統(tǒng)會保證交換的內(nèi)存大小,保存進(jìn)程時,不僅僅是保存進(jìn)程的數(shù)據(jù),同時還會保存處理器的運行狀態(tài),當(dāng)被保存進(jìn)程得到恢復(fù)時,進(jìn)程將會從被暫停的位置繼續(xù)執(zhí)行。

交換機(jī)制,使得物理內(nèi)存容量“變大”,系統(tǒng)可使用的內(nèi)存就可以遠(yuǎn)遠(yuǎn)大于物理內(nèi)存的容量。

內(nèi)存變得更大更強(qiáng)。

(6)按需分頁機(jī)制

按需分頁機(jī)制需要由操作系統(tǒng)和分頁硬件共同完成。在按需分頁系統(tǒng)里,物理內(nèi)存和進(jìn)程的地址空間都被劃分成固定大小的頁,數(shù)據(jù)以頁為單位加載和釋放出內(nèi)存。物理內(nèi)存中的頁通常稱為頁框或者物理頁。
在任意時刻內(nèi)存中可以活動多個進(jìn)程,但是每個進(jìn)程可能只有部分頁在物理內(nèi)存中,進(jìn)程的地址是虛擬的,虛擬的地址包含頁號和頁內(nèi)偏移。在操作系統(tǒng)和硬件的配合下,程序的虛擬地址被轉(zhuǎn)換成物理地址,并訪問對應(yīng)的物理內(nèi)存。在按需分頁機(jī)制中,所有頁都是在需要的時候才加載到內(nèi)存中。

(7)虛擬內(nèi)存機(jī)制

內(nèi)存虛擬技術(shù)并非單一的新技術(shù),而是結(jié)合多種技術(shù)形成的技術(shù)。內(nèi)存虛擬使用的虛擬地址技術(shù),分頁機(jī)制,交換機(jī)制。
虛擬內(nèi)存機(jī)制是一種綜合的內(nèi)存管理技術(shù)。

4、虛擬內(nèi)存解決問題

虛擬內(nèi)存是計算機(jī)系統(tǒng)最重要的部分之一,虛擬內(nèi)存可以實現(xiàn)以下功能:

1、運行比物理內(nèi)存容量大的程序。如64位計算機(jī)系統(tǒng)有256T的虛擬內(nèi)存,理論上可以運行約256T大小的程序,而當(dāng)今主流的64位計算機(jī)的物理內(nèi)存大小約4G。因此使用虛擬內(nèi)存理想情況下可以運行任意大小的程序。
2、程序運行時只需要加載部分。因為虛擬內(nèi)存使用了分頁機(jī)制,程序被分割成了多段,降低了程序啟動時間,降低了物理內(nèi)存使用率。
3、支持多個程序同時在內(nèi)存中運行。每個程序只有部分段在物理內(nèi)存中,使得物理內(nèi)存能同時容納多個程序。
4、支持代碼與機(jī)器無關(guān),代碼和物理內(nèi)存不需要有對應(yīng)關(guān)系。
5、支持重定位的程序,重定位程序可以存儲在內(nèi)存中的任何位置,并且位置可以在執(zhí)行時改變。
6、支持內(nèi)存共享。
7、不需要應(yīng)用程序的程序員直接參與物理內(nèi)存的分配和管理

5、虛擬內(nèi)存模型

虛擬內(nèi)存是硬件異常,硬件地址翻譯器,主存,磁盤,內(nèi)核軟件共同協(xié)作實現(xiàn)。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2019-03-20 14:29:46

Linux虛擬內(nèi)存

2010-06-10 17:12:23

Linux 內(nèi)存監(jiān)控

2019-12-26 08:45:46

Linux虛擬內(nèi)存

2009-06-26 08:21:57

微軟Windows 7操作系統(tǒng)

2023-10-18 13:25:00

操作系統(tǒng)進(jìn)程

2020-04-14 16:03:31

Linux虛擬內(nèi)存操作系統(tǒng)

2020-11-06 07:11:40

內(nèi)存虛擬Redis

2014-01-14 10:52:06

Linux vmsta虛擬內(nèi)存

2022-08-21 16:52:27

Linux虛擬內(nèi)存

2019-03-14 09:29:02

Linux系統(tǒng)內(nèi)存

2021-06-01 08:20:55

Linux虛擬內(nèi)存命令

2010-07-05 08:57:48

SQL Server虛

2010-06-02 11:33:26

Linux 內(nèi)存監(jiān)控

2021-05-31 10:03:52

虛擬內(nèi)存管理

2020-08-10 07:44:13

虛擬內(nèi)存交換內(nèi)存Linux

2011-03-23 13:00:22

SQL Server虛擬內(nèi)存

2010-07-06 09:27:01

SQL Server

2020-11-02 07:05:54

虛擬內(nèi)存Go

2022-08-21 10:21:07

Linux虛擬內(nèi)存

2009-10-14 08:44:52

Windows 7虛擬內(nèi)存設(shè)置
點贊
收藏

51CTO技術(shù)棧公眾號