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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

虚拟存储器(虚拟内存Vitual Memory)

發布時間:2024/4/13 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 虚拟存储器(虚拟内存Vitual Memory) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為Redis 是基于內存的操作,我們先從內存開始說起。

虛擬存儲器(虛擬內存Vitual Memory)

名詞解釋:主存:內存;輔存:磁盤(硬盤)

計算機主存(內存)可看作一個由M 個連續的字節大小的單元組成的數組,每個字節有一個唯一的地址,這個地址叫做物理地址(PA)。早期的計算機中,如果CPU 需要內存,使用物理尋址,直接訪問主存儲器。

這種方式有幾個弊端:

1、在多用戶多任務操作系統中,所有的進程共享主存,如果每個進程都獨占一塊物理地址空間,主存很快就會被用完。我們希望在不同的時刻,不同的進程可以共用同一塊物理地址空間。

2、如果所有進程都是直接訪問物理內存,那么一個進程就可以修改其他進程的內存數據,導致物理地址空間被破壞,程序運行就會出現異常。

為了解決這些問題,我們就想了一個辦法,在CPU 和主存之間增加一個中間層。CPU不再使用物理地址訪問,而是訪問一個虛擬地址,由這個中間層把地址轉換成物理地址,最終獲得數據。這個中間層就叫做虛擬存儲器(Virtual Memory)。

具體的操作如下所示:

在每一個進程開始創建的時候,都會分配一段虛擬地址,然后通過虛擬地址和物理地址的映射來獲取真實數據,這樣進程就不會直接接觸到物理地址,甚至不知道自己調用的哪塊物理地址的數據。

目前,大多數操作系統都使用了虛擬內存,如Windows 系統的虛擬內存、Linux 系統的交換空間等等。Windows 的虛擬內存(pagefile.sys)是磁盤空間的一部分。

在32 位的系統上,虛擬地址空間大小是2^32bit=4G。在64 位系統上,最大虛擬地址空間大小是多少?是不是2^64bit=1024*1014TB=1024PB=16EB?實際上沒有用到64 位,因為用不到這么大的空間,而且會造成很大的系統開銷。Linux 一般用低48 位來表示虛擬地址空間,也就是2^48bit=256T。

cat /proc/cpuinfo

address sizes : 40 bits physical, 48 bits virtual

實際的物理內存可能遠遠小于虛擬內存的大小。

總結:引入虛擬內存,可以提供更大的地址空間,并且地址空間是連續的,使得程序編寫、鏈接更加簡單。并且可以對物理內存進行隔離,不同的進程操作互不影響。還可以通過把同一塊物理內存映射到不同的虛擬地址空間實現內存共享。

?

總結

以上是生活随笔為你收集整理的虚拟存储器(虚拟内存Vitual Memory)的全部內容,希望文章能夠幫你解決所遇到的問題。

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