丁香婷婷激情四射|经典成人无码播放|欧美性大战久久久久久久安居码|日韩中文字幕大全|加勒比久久高清视频|av在线最新地址|日本少妇自慰喷水|在线天堂国产免费一区视频社区在线|色欲蜜臀一区二区|偷拍女厕一区二区亚瑟

歡迎訪問漢海網(wǎng),帶你進(jìn)入知識的海洋!

深入了解虛擬內(nèi)存

天下 分享 時間: 瀏覽:0

現(xiàn)代操作系統(tǒng)了提供了一種對主存的抽象概念,叫做虛擬內(nèi)存。它為每個進(jìn)程提供了一個非常大的,一致的和私有的地址空間。這里給大家分享一些關(guān)于深入了解虛擬內(nèi)存,希望對大家能有所幫助。

概述

現(xiàn)代操作系統(tǒng)了提供了一種對主存的抽象概念,叫做虛擬內(nèi)存。它為每個進(jìn)程提供了一個非常大的,一致的和私有的地址空間。虛擬內(nèi)存提供了以下的三個關(guān)鍵能力:

它將主存看成是一個存儲在磁盤空間上的地址空間的高速緩存,主存中只保存活動區(qū)域,并根據(jù)需要在磁盤和主存之間來回傳送數(shù)據(jù)。

它為內(nèi)閣進(jìn)程提供了一致的地址空間,簡化了內(nèi)存管理。

它保護(hù)了每個進(jìn)程的地址空間不被其他進(jìn)程破壞。

虛擬內(nèi)存做為緩存的工具

從概念上來說,虛擬內(nèi)存被組織成為一個由存放在磁盤上的 N 個連續(xù)的字節(jié)大小的單元組成的數(shù)組,也就是字節(jié)數(shù)組。每個字節(jié)都有一個唯一的虛擬地址作為數(shù)組的索引。磁盤上活動的數(shù)組內(nèi)容被緩存在主存中。在存儲器結(jié)構(gòu)中,較低層次上的磁盤的數(shù)據(jù)被分割成塊,這些塊作為和較高層次的主存之間的傳輸單元。主存作為虛擬內(nèi)存的緩存。

虛擬內(nèi)存(VM)系統(tǒng)將虛擬內(nèi)存分割成稱為虛擬頁(Virtual Page,VP)的大小固定的塊,每個虛擬頁的大小為 P = 2 的 p 次方 字節(jié)。同樣的,物理內(nèi)存被分割為物理頁(Physical Page,PP),大小也為 P 字節(jié)(物理頁也稱作頁幀(page frame))。

在任意時刻,虛擬頁面的集合都分為三個不相交的子集:

未分配的,VM 系統(tǒng)還未分配(或者創(chuàng)建)的頁,未分配的頁沒有任何數(shù)據(jù)和它們關(guān)聯(lián),因此不占用任何內(nèi)存空間。

緩存的,當(dāng)前已緩存在物理內(nèi)存中的已分配頁。

未緩存的,未緩存在物理內(nèi)存中的已分配頁。

虛擬內(nèi)存作為內(nèi)存管理的工具

簡化鏈接。獨(dú)立的地址空間允許每個進(jìn)程的內(nèi)存映像使用相同的基本格式,而不管代碼和數(shù)據(jù)實際存放在物理內(nèi)存的何處。

簡化加載。虛擬內(nèi)存使得容易向內(nèi)存中加載可執(zhí)行文件和共享對象文件。將一組連續(xù)的虛擬頁面映射到任意一個文件中的任意位置的表示法稱作內(nèi)存映射(memory mapping)。Linux 提供了一個 nmap 的系統(tǒng)調(diào)用,允許應(yīng)用程序自己做內(nèi)存映射。

簡化共享。獨(dú)立地址空間為操作系統(tǒng)提供了一個管理用戶進(jìn)程和操作系統(tǒng)自身之間共享的一致機(jī)制。一般情況下,每個進(jìn)程都有自己私有的代碼、數(shù)據(jù)、堆棧。這些內(nèi)容不與其他進(jìn)程共享。在這種情況下,操作系統(tǒng)創(chuàng)建頁表,將相應(yīng)的虛擬頁映射到不連續(xù)的物理頁面。

簡化內(nèi)存分配。虛擬內(nèi)存向用戶進(jìn)程提供一個簡單的分配額外內(nèi)存的機(jī)制。當(dāng)一個用戶程序要求額外的堆空間時候,操作系統(tǒng)分配 k 個適當(dāng)?shù)倪B續(xù)的虛擬內(nèi)存頁面,并且將他們映射到物理內(nèi)存的中的 k 個任意頁面,操作系統(tǒng)沒有必要分配 k 個連續(xù)的物理內(nèi)存頁面。

地址翻譯

頁面命中

上圖中展示了頁面命中的場景,CPU 硬件的執(zhí)行步驟:

處理器 生成一個虛擬地址,并把它傳送給 MMU。

MMU 生成 PTE 地址,并從高速緩存/主存中請求這個 PTE 。

高速緩存/主存向 MMU 返回 PTE。

MMU 構(gòu)造物理地址,并把它傳送給高速緩存/主存。

高速緩存/主存返回所請求的數(shù)據(jù)字給處理器。

頁面命中是全部由硬件來處理的,既然有頁面命中,那么就有頁面不命中的場景。

頁面不命中

上圖展示了頁面不命中的場景, CPU 硬件的執(zhí)行步驟:

處理器 生成一個虛擬地址,并把它傳送給 MMU。

MMU 生成 PTE 地址,并從高速緩存/主存中請求這個 PTE 。

高速緩存/主存向 MMU 返回 PTE。

PTE 中的有效控制位為 0 ,所以 MMU 觸發(fā)了一次異常,傳遞 CPU 中的控制到操作系統(tǒng)內(nèi)核中的缺頁異常處理程序。

缺頁處理程序確定出物理內(nèi)存中的犧牲頁,如果這個頁面已經(jīng)被修改了,則把它換出到磁盤。

缺頁處理程序調(diào)入新的頁面,并更新內(nèi)存中的 PTE。

缺頁處理程序返回原來的進(jìn)程,再次執(zhí)行導(dǎo)致缺頁的指令, CPU 將引起缺頁的虛擬地址重新發(fā)送給 MMU ,因為虛擬頁面現(xiàn)在存在主存中,所以會命中,主存將請求字返回給處理器。

地址翻譯的過程執(zhí)行起來太慢了?怎么解決呢?答案你應(yīng)該也猜到了,就是添加緩存。在 MMU 中包含了一個 TLB (Translation Lookaside Buffer)緩存。

TLB 命中

我們來看看 TLB 命中的場景,

第 1 步 CPU 產(chǎn)生一個虛擬地址

第 2 和 3 步 MMU 從 TLB 中取出對應(yīng)的 PTE 。

第 4 步 MMU 將這個虛擬地址翻譯成一個物理地址,并且將它發(fā)送到高速緩存/主存。

第 5 步 高速緩存/主存將所請求的數(shù)據(jù)字返回 CPU。

如下圖所示,當(dāng) TLB 不命中的時候, 多了步驟 3 和 4 ,MMU 必須從 L1 緩存中取出對應(yīng)的 PTE , 新取出的 PTE 存放在 TLB 中,可能會覆蓋一個已經(jīng)存在的 PTE 。

TLB 不命中


虛擬內(nèi)存相關(guān)文章:

★ 如何合理設(shè)置電腦虛擬內(nèi)存,提高電腦運(yùn)行速度

★ 提高內(nèi)存使用效能的幾種方法

★ 介紹幾個妙招加快內(nèi)存運(yùn)行速度

★ 全面釋放C盤被強(qiáng)行占用的空間

★ 讓你的電腦一點(diǎn)都不卡

★ 電腦系統(tǒng)資源不足及解決辦法

★ 電腦技巧

★ 電腦技巧

★ 電腦死機(jī)的常見原因

★ 關(guān)于電腦死機(jī)的原因及解決方法分享

本站部分文章來自網(wǎng)絡(luò)或用戶投稿。涉及到的言論觀點(diǎn)不代表本站立場。閱讀前請查看【免責(zé)聲明】發(fā)布者:天下,如若本篇文章侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。本文鏈接:http://www.256680.cn/dnxx/nczs/45580.html

精選圖文

221381