標籤:

除了ramdisk plus,哪個ramdisk軟體能利用「未識別內存」(或叫unmanaged內存?

ramdisk plus最新版我沒找到能用的破解,同時也是希望有同類軟體進行比較,目前看了好多軟體,(我的情況是WIN7 32位,內存4G,只識別了3G,想利用這1G給firefox或者什麼的),說是ramdisk plus和gavotte ramdisk支持利用未識別內存,可是後者我安裝後沒有找到利用未識別內存的選項,能力有限,大家說說還有其他有次功能的產品么?


這東西我以前研究過,給你貼下之前在遠景寫的帖子吧:

終於知道ramdisk 4g是如何使用4G以上內存了,慎用!-遠景論壇

真想用4G內存,建議還是裝64位系統。要麼啟用PAE(這個屬於黑系統了)。

以下為原帖:

========================================

之前帖子詢問了下,沒什麼結果,不過我自己找到結果了.

真的能突破4g限制嗎?ramdisk 4g使用成功的同學能看下嗎?-遠景論壇

我找到的是MS做kernel內存管理的developer,所以應該是最權威的了. 目前驅動程序唯一能達到訪問4gb以上地址內存的方法是通過一個ddk api: MmMapIoSpace. 其實這個api本來是用來給設備驅動程序進行特殊的地址映射用的,並非用來管理內存.

簡單地說, bios會把可用的內存映射到一個並不一定連續的物理地址空間中,比如0地址開始的一段空間需要留給bios自己所以無法映射內存, 3gb-4gb範圍內的地址有可能留給各種pci設備,也不能用作內存,這也是為什麼win7 32bit在4gb地址線下看不到全部4gb內存的原因.

當然如果bios支持memory remap,那麼多餘的內存會比map到4gb以上的地址空間,而由於目前win7 32bit強行忽略掉了這部分mapping,所以即使bios map了也不會被使用.

ramdisk 4g的原理就是使用MmMapIoSpace來強行讀寫4gb以上的地址空間,注意是跳過操作系統的強行讀寫,把這段地址當作是io設備來操作,而並不一定是內存.

這種做法,主要有兩個問題:

第一: 作為驅動程序,你是無法確切地知道究竟哪段物理地址空間裡面是映射的你的多餘的內存,目前的bios架構中,只有通過中斷int 25, function 0xE820才能獲知, 而這個bios中斷只能在實模式下調用,也就是說windows啟動之後,驅動程序是無法調用這個中斷去獲知的. 那麼,ramdisk驅動就只能靠猜, 比如說他可以知道你裝了4gb內存,而目前只認了3.5gb, 那麼多出來的512m應該在4g-4.5g這個物理地址段.

但是,這個只是猜測,bios並不一定會把多出來的內存映射到那裡, 也可能是4.1g-4.6g區間,甚至不一定是連續的空間. 而且,各種奇怪的硬體設備也有可能自己佔用特殊的物理地址空間,比如假設有一塊硬體佔用了4g開始的16m空間,那麼顯然這段地址裡面就不再是內存了.

好吧,那麼如果ramdisk強行去讀寫錯誤的地址空間會如何呢? 簡單地說: cpu不會報錯, 但是結果是不可預料的, 比如如果這段地址空間根本是一個memory hole,那麼往裡面寫東西就是白寫,讀操作返回的有可能都是0xFFFFFFFF, 這樣地話,作為一個虛擬磁碟而言,其結果就是數據損壞.

更為嚴重的是:如果有一塊特殊的硬體的io空間映射在4g以上的一段地址,而ramdisk強行去寫入數據,就會直接對那塊硬體進行io操作,有可能會損壞硬體或者發生更奇怪的事情,比如該設備莫名其妙開始工作了等等.

第二: 即使你的運氣很好,bios把多餘的內存正好連續地映射在4g開始的空間,也就是ramdisk完全猜對了的情況,還有一個問題是,ramdisk無法保證有沒有其他任何代碼也會去讀寫這段地址空間. 因為ramdisk是跳過os的內存管理直接進行io的,其他驅動程序也有可能做相同的事情,這樣的結果一樣是數據損壞. 比如ramdisk先往裡面寫了一個文件的內容,之後另一個驅動程序也在相同地址寫了一些其他數據,那麼ramdisk再讀出來的時候就拿不到原來的數據了.

綜上,在你無法100%確保以上兩點肯定沒事的情況下,使用ramdisk還是有風險的,最壞情況是用戶數據丟失甚至硬體設備損壞.

其實真的要用超過4g內存,還是有其他更安全的辦法的,比如換64位系統,或者用server版本(完全支持pae的),或者直接patch kernel (這個在上面的帖子裡面有鏈接,可以在vista 32位裡面直接用到128g內存)

如果真的一定要用ramdisk,請在設置好之後一定要做一個測試: copy一個可以撐滿ramdisk大小的真實文件(比如電影之類),然後再從ramdisk裡面copy出來,再用fc /b和原始文件進行二進位比較.多做幾次測試,以確保正確性.每一個使用ramdisk的機器都應該做這樣的測試,因為每台機器bios映射的方式可能不一樣.

當然這個只能基本確保第一個問題不存在,還是無法排除第二個問題的可能性.萬一有個驅動突然想起來往4g以上某個地址寫點東西的話,你的文件就壞了.

ps. 如果有人知道如何聯繫ramdisk作者的話,請替我轉發下. 希望作者在發布這樣一個好工具的同時,一定要詳細說明可能造成的後果極其原因.


推薦閱讀:

軟體質量到底誰來把關?
win8 8寸平板有什麽應用推薦?
VASPKIT0.60重大版本更新
建築尺寸如何選擇?

TAG:軟體 | RamDisk |