虛擬存儲(chǔ)技術(shù)原理 |
發(fā)布時(shí)間: 2012/7/10 14:17:54 |
虛擬主機(jī)存儲(chǔ)器是根據(jù)程序的邏輯地址轉(zhuǎn)換來(lái)的,也稱線性地址空間。一般每個(gè)進(jìn)程,甚至每個(gè)段都有一個(gè),以32位為例,則每個(gè)最大可達(dá)4G。
而主存目前一般為百M(fèi)。因此程序中所指的存儲(chǔ)單元并不能都放到主存中,也就是并不是每個(gè)程序所用的存儲(chǔ)單元,都有具體的物理的存儲(chǔ)器單元與之對(duì)應(yīng)。 但由于程序的兩個(gè)局部性原理,在一個(gè)時(shí)刻,程序只在一個(gè)比較小的范圍內(nèi)運(yùn)行。所以我們把程序可能用到的整個(gè)存儲(chǔ)空間分成一個(gè)個(gè)相同大小的頁(yè)(按頁(yè)管理硬件上容易實(shí)現(xiàn)),只把其中的一些頁(yè)放在主存中,而其它的頁(yè)則等需要時(shí)再建,或放在輔存(磁盤)中。同時(shí)建立一個(gè)頁(yè)表,對(duì)應(yīng)于每一頁(yè),如果該頁(yè)在主存中,則頁(yè)表記錄它在主存中的地址;如果不在主存中,則在頁(yè)表上作不在主存的標(biāo)記。 這樣,當(dāng)程序需要調(diào)用某個(gè)存儲(chǔ)單元的內(nèi)容時(shí),先根據(jù)它的線性地址,算出其所在的頁(yè)。查頁(yè)表,看是不是在主存中?如果在,則直接存取。如果查到頁(yè)表上是不在的標(biāo)記,那就是一個(gè)page fault。要把主存中的某一頁(yè)(LRU策略)換到磁盤上,把要訪問(wèn)的那個(gè)單元所在的頁(yè)調(diào)入主存,再進(jìn)行存取。 就象一個(gè)預(yù)計(jì)有一萬(wàn)學(xué)生的學(xué)校,理論上每個(gè)學(xué)生都應(yīng)有一個(gè)位子上課(一萬(wàn)個(gè)虛擬主機(jī)位子),而學(xué)校只有一千個(gè)(物理)位子。但實(shí)際上,學(xué)校也不會(huì)一萬(wàn)個(gè)人同時(shí)上課,只要讓上課的同學(xué)有位子(在主存中),而其它同學(xué)只要留下聯(lián)系方法能找到就好。為了降低管理的復(fù)雜性,我們采用按學(xué)號(hào)分班(頁(yè))管理。每個(gè)班要么一起上課(主存),要么一起呆在寢室(磁盤)。而在學(xué)校保留一個(gè)動(dòng)態(tài)表(頁(yè)表)表明每個(gè)班在哪兒(物理地址)上課,或者沒(méi)上課(不在主存)。現(xiàn)在假設(shè)我們想按學(xué)號(hào)找一個(gè)同學(xué),而且是女同學(xué),只能在教室說(shuō)話,呵呵。那么: 先算出來(lái)是哪個(gè)班的,查動(dòng)態(tài)表,看該班是否在教室。在,直接按位置找到(hit);不在(page fault),要先找個(gè)不上課的班趕回寢室,把要找女生所在的班調(diào)到教室,再按位置找那個(gè)同學(xué)。 動(dòng)態(tài)表(頁(yè)表)的大小=表項(xiàng)數(shù)*每個(gè)表項(xiàng)所需的位數(shù)。 表項(xiàng)數(shù)=虛擬主機(jī)班數(shù)=虛擬主機(jī)人數(shù)(虛擬主機(jī)地址空間)/每班人數(shù)(每頁(yè)大小) 每個(gè)表項(xiàng)的位數(shù)=Log(教室數(shù))+適當(dāng)控制位數(shù) 教室數(shù)=實(shí)際可以上課的人數(shù)(物理地址空間)/每班人數(shù)(每頁(yè)大小) 虛擬主機(jī)地址換算: 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |