日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

内存学习――为什么需要虚拟内存

發布時間:2025/4/5 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内存学习――为什么需要虚拟内存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載來自:http://blogread.cn/it/article/4494?f=wb


關于虛擬內存,物理內存,我有蠻多概念都是很模糊的,今天下午看了一下虛擬內存,也算是有了一點小收獲,本文就針對為什么需要有虛擬內存的理解寫下來。

????同時,我也希望自己能夠陸續學習linux內存管理的知識,并且寫出一些文章,來記錄自己的一些理解。

???? 如果您覺得有任何問題,可以留下評論,我們一起討論,畢竟越辯越明。

為什么要使用虛擬內存

????之前的計算機系統,是使用物理地址來使用內存的,這樣,CPU就根據某個寄存器中相應的值,直接到物理內存去取值了。

???? 這樣的好處就是非常直接,非常容易理解。

????而缺點是,我們需要知道物理地址的值,每次程序開始執行,也就是執行程序從磁盤被load到物理內存中之后,我們必須告訴CPU,程序是從哪一個地址開始執行的(即PC寄存器的值);還有一個致命的缺點是:程序使用的內存會被物理內存所限制,比如我們的機器上只有512M內存,那我們的程序就不能使用需占1G內存的程序了。這點或許是催生虛擬內存產生的最主要原因。

虛擬內存的概念

????為了解決上面的的問題,就產生了虛擬內存的概念。那什么是虛擬內存呢?這里我先說說自己對存儲器層次結構的理解。

????計算機中有一種存儲器層次的原則。我的理解是,CPU使用的數據都是基于寄存器的,如果我們的寄存器足夠的大和多并且足夠便宜,那么也就沒有后來那么多的東西產生了。而問題就是寄存器足夠快,但其造價卻非常昂貴,因此,考慮到成本,就有了之后的CPU高速緩存,主存(就是我們常說的內存)和硬盤,甚至磁帶等存儲器了。

????那么,計算機是如何讓這些速度快慢不一、容量大小不一的存儲器在一起工作的呢?一個方案就是存儲器層次結構

????對于這個存儲器層次結構,我的理解是:CPU是和寄存器打交道的,但寄存器的容量畢竟有限,因此就需要高速緩存存儲器來作為寄存器的緩存,當有些數據在寄存器中找不到時,CPU就可以去尋找高速緩存這個存儲器中的內容,如果告訴緩存器還沒有這個數據,那我就去主存中再去尋找這個數據,如果主存中也還沒有,那就去磁盤中找吧。

????這也是我對存儲器層次結構的一個理解。

????以上說了一通,但都沒有提到虛擬內存,那虛擬內存究竟是什么?他在這個層次中處于哪個位置呢?

????實際上,按照這種模型去思考的話,就可以這樣理解:虛擬內存就是去解決主存到磁盤這個層次的方案

????沒錯,我認為虛擬內存就是一種方案,而且他是非常重要的,為什么呢?眾所周知,CPU的速度很快,內存就是作為匹配CPU和磁盤之間速度的一個中間層,高速緩存其實也是這樣一個緩存的角色,但問題是,如果高速緩存失效,那么CPU會去訪問內存,這樣的速度只是降低了十倍的數量級;而如果是內存失效,讓CPU去訪問磁盤的話,這樣的速度卻是降低了十萬倍到百萬倍的數量級。

????可見,在寄存器、高速緩存和主存之間緩存的失效,結果還是可以讓人接受的(想想java的volatile關鍵字),但主存和磁盤之間緩存的失效,就會給程序造成比較大的性能影響了,所以我們應該努力避免主存的失效,這也是虛擬內存所必須要解決和面對的問題之一。

總結

????其實可以認為,程序使用的內存,都是用的虛擬內存,因此也就沒有了物理內存的限制(但還是限制于計算機的尋址位數,比如32位和64位,因為虛擬內存系統需要使用到物理內存)。他可以把自己的一部分放在物理內存中,還有一部分當做緩存放到磁盤中。另外,虛擬內存有相應的虛擬地址,因此,他就可以做到對于每一個程序來說,使用的都是相同的虛擬地址,這些虛擬地址,則可以映射到不同的物理地址,也就是說每個程序都可以把自己想象成自己擁有整臺機器的內存。


總結

以上是生活随笔為你收集整理的内存学习――为什么需要虚拟内存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。