久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

虛擬存儲(chǔ)器

作者:公平   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年03月14日   【字體:

虛擬存儲(chǔ)器是操作系統(tǒng)中的重要內(nèi)容,也是理解的難點(diǎn)和重點(diǎn),雖然程序員不用直接和虛擬存儲(chǔ)器打交道,但是理解虛擬存儲(chǔ)器能夠更好的理解操作系統(tǒng)的存儲(chǔ)器管理。
虛擬存儲(chǔ)器實(shí)質(zhì)就是硬盤中的一部分存儲(chǔ)器,可以將其作為緩存。

虛擬存儲(chǔ)器的最大好處是實(shí)現(xiàn)在小內(nèi)存系統(tǒng)(較小的物理內(nèi)存)的應(yīng)用。比如一個(gè)linux進(jìn)程的虛擬存儲(chǔ)器大小是4G,其中前3G作為用戶空間,后1G作為內(nèi)存的空間。但是實(shí)際的物理內(nèi)存是一個(gè)2G甚至更小的物理內(nèi)存時(shí)如何處理呢??這時(shí)虛擬存儲(chǔ)器的概念就體現(xiàn)其巨大的優(yōu)勢(shì)。

虛擬地址和物理地址之間又是如何的轉(zhuǎn)換呢?這些都是需要了解的。虛擬地址是由CPU產(chǎn)生,然后虛擬內(nèi)存需要通過(guò)MMU轉(zhuǎn)換為物理內(nèi)存。

虛擬存儲(chǔ)器和物理存儲(chǔ)器的關(guān)系:

虛擬存儲(chǔ)器文件系統(tǒng)將物理存儲(chǔ)器和虛擬存儲(chǔ)器分成等大小的頁(yè)面,比如4K一頁(yè),這樣物理存儲(chǔ)器和虛擬存儲(chǔ)器分解成頁(yè)數(shù)量不同的存儲(chǔ)器頁(yè)。通過(guò)一種叫做頁(yè)表(PTE)的結(jié)構(gòu)體實(shí)現(xiàn)虛擬頁(yè)到物理頁(yè)的聯(lián)系。具體的聯(lián)系就是:
頁(yè)表常住在內(nèi)存中,頁(yè)表的大小一般等于虛擬存儲(chǔ)器的頁(yè)數(shù)。每一個(gè)頁(yè)表由一個(gè)有效位和一個(gè)地址位構(gòu)成。當(dāng)有效位是1事,說(shuō)明虛擬頁(yè)中的數(shù)據(jù)緩存到物理內(nèi)存中的起始地址,而如果有效位為0,后面的地址位為null,則說(shuō)明該虛擬頁(yè)還沒(méi)有分配。如果地址位不為null,則指出了該頁(yè)表中在虛擬存儲(chǔ)器的起始地址,但是還沒(méi)有緩存到物理內(nèi)存中。這樣就通過(guò)了頁(yè)表實(shí)現(xiàn)了虛擬頁(yè)和物理頁(yè)之間的聯(lián)系。因此理解頁(yè)表是很重要的。多級(jí)頁(yè)表結(jié)構(gòu)以及STB等技術(shù)都是為了減少常駐空間或者提速。

虛擬地址由VPN和VPO構(gòu)成,而物理地址由PPN和PPO,其中PPO=VPO,其中VPN是指虛擬存儲(chǔ)器中的頁(yè)號(hào),而PPN是物理存儲(chǔ)器的頁(yè)號(hào),這個(gè)頁(yè)號(hào)的轉(zhuǎn)換關(guān)系與頁(yè)表有關(guān)。VPO和PPO都是在該也中的偏移量。通過(guò)頁(yè)表和偏移量就能實(shí)現(xiàn)具體位置的訪問(wèn)。
具體的加載方法就是將某個(gè)虛擬存儲(chǔ)頁(yè)得數(shù)據(jù)緩存到任意的物理存儲(chǔ)頁(yè),這樣就實(shí)現(xiàn)了在虛擬存儲(chǔ)器中連續(xù)頁(yè),映射到物理內(nèi)存中并不一定是連續(xù)。這樣也減小了對(duì)連續(xù)內(nèi)存的要求。通過(guò)一個(gè)頁(yè)表的引入就能實(shí)現(xiàn)虛擬頁(yè)到物理頁(yè)得映射關(guān)系。

在linux中內(nèi)核為每個(gè)進(jìn)程分配一個(gè)單獨(dú)的頁(yè)表。這樣每個(gè)進(jìn)程都有了相同大小的虛擬存儲(chǔ)空間(4G)。每個(gè)虛擬存儲(chǔ)的空間分配也是相同的,每個(gè)段區(qū)的起始地址也是相同的,這樣就簡(jiǎn)化了共享、加載、鏈接等過(guò)程。
linux采用mmap實(shí)現(xiàn)文件到進(jìn)程虛擬存儲(chǔ)器的加載過(guò)程,加載兩種類型的文件(對(duì)象):普通文件、匿名文件(二進(jìn)制)。

同時(shí)對(duì)象的形式也是多樣的,主要是理解共享對(duì)象和私有對(duì)象,私有對(duì)象又主要理解私有寫時(shí)頁(yè)保護(hù)。
共享對(duì)象是指將一個(gè)共享對(duì)象映射到各個(gè)進(jìn)程的共享段中,然后通過(guò)頁(yè)表將各個(gè)進(jìn)程的共享段加載到統(tǒng)一的物理存儲(chǔ)器中,這樣各個(gè)進(jìn)程都能實(shí)現(xiàn)對(duì)共享,且在物理存儲(chǔ)器中只有一個(gè)對(duì)象的拷貝。各個(gè)進(jìn)程對(duì)共享對(duì)象的寫操作都會(huì)反應(yīng)到其他的進(jìn)程中以及磁盤文件中。

多個(gè)進(jìn)程對(duì)一個(gè)似有對(duì)象的映射比較有意思。私有對(duì)象的開始生命周期的方式與共享對(duì)象相似,即在物理存儲(chǔ)器中只有一個(gè)私有對(duì)象的拷貝,但是設(shè)置訪問(wèn)的權(quán)限為可讀。如果只是讀過(guò)程,所有進(jìn)程對(duì)似有對(duì)象的訪問(wèn)與共享對(duì)象沒(méi)有差別,但是如果是某一個(gè)進(jìn)程試圖對(duì)私有對(duì)象進(jìn)行寫操作就會(huì)引發(fā)保護(hù)故障,然后在故障處理程序中將(內(nèi)存中)被寫的頁(yè)面內(nèi)容也拷貝到一個(gè)新的存儲(chǔ)頁(yè)面中,并設(shè)置好PTE,將新創(chuàng)建的頁(yè)面設(shè)置為可寫。然后對(duì)新創(chuàng)建的頁(yè)面進(jìn)行寫操作,這樣的操作就不會(huì)導(dǎo)致對(duì)私有對(duì)象的寫操作反應(yīng)到磁盤文件中。這種技術(shù)稱之為“寫時(shí)頁(yè)拷貝”。

fork函數(shù)的理解主要就是弄清楚兩種方式的差別。fork中創(chuàng)建了一個(gè)子進(jìn)程,其中子進(jìn)程和父進(jìn)程的內(nèi)容相同,因此開始是兩個(gè)進(jìn)程共享一個(gè)空間,但是兩個(gè)進(jìn)程分別會(huì)試圖寫一些段(data、bss等),這時(shí)發(fā)生了“寫時(shí)頁(yè)拷貝”,將需要寫的頁(yè)內(nèi)容拷貝到另一個(gè)新創(chuàng)建的頁(yè)中,此時(shí)再次發(fā)生寫操作,這也就是為什么打開的一些文本描述符在子進(jìn)程也能找到,就是因?yàn)閮蓚(gè)進(jìn)程對(duì)一個(gè)私有對(duì)象沒(méi)有進(jìn)行寫操作時(shí)是對(duì)一個(gè)物理存儲(chǔ)器的一份拷貝,當(dāng)某一個(gè)進(jìn)程寫操作時(shí),這時(shí)發(fā)生了寫時(shí)頁(yè)拷貝,再次對(duì)新的頁(yè)進(jìn)行操作即可完成且不會(huì)影響別的進(jìn)程。但是本來(lái)的共享區(qū)仍然滿足共享的特征。但是.text等段不會(huì)發(fā)生寫時(shí)頁(yè)拷貝,因此父子進(jìn)程還是共享代碼段。這就是為什么fork函數(shù)后兩個(gè)進(jìn)程是共享代碼段的原因(發(fā)生了私有對(duì)象的寫時(shí)頁(yè)拷貝)。

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 美女福利视频一区 | 久久精品视频一区二区三区 | 97久久久久久| 欧美日韩国产高清 | 欧美一区二区二区 | 精品久久久久久久久久久久久久 | 久久网一区二区 | 久久久久亚洲精品国产 | 亚洲欧美日韩精品 | 国产高清精品一区二区三区 | 欧美一区二区三区在线免费观看 | 日韩av在线播 | 特级生活片 | 男人亚洲天堂 | 国产精品久久久久一区二区三区 | 夜夜夜夜夜夜曰天天天 | 久精品视频 | 午夜日韩视频 | 成人国产综合 | 蜜桃视频在线观看www社区 | 久草免费在线视频 | 免费观看av| 国产一区二区三区免费 | 久久99精品久久久久子伦 | 国产欧美日韩在线播放 | 91私密视频 | 国产成年人视频 | 国产精品国产三级国产aⅴ原创 | 久久久久久国 | 久久99精品久久久久 | 免费激情网站 | 国产精品国产三级国产播12软件 | 久久久久久久亚洲精品 | 在线亚洲免费视频 | 三级在线免费观看 | 99视频在线播放 | 草草视频在线观看 | 日韩精品在线观看免费 | 国产区在线| 中文字幕日韩一区 | 韩日一区二区三区 |