2009年7月29日 星期三

多工緩衝處理程式子系統應用程式發生問題,必須關閉

http://qa.pcuser.com.tw/modules/newbb/viewtopic.php?topic_id=24296&forum=50
http://support.microsoft.com/default.aspx?scid=kb;zh-tw;324757
http://support.microsoft.com/default.aspx?scid=kb;zh-tw;810894
以上三個連結將有助於處理此一問題

2009年7月17日 星期五

製作數位浮水印

http://picmarkr.com/index.php
這應該也算雲端運算的一種吧XD

2009年7月15日 星期三

IObit SmartDefrag 1.20 免安裝中文版

很不錯又簡便的Windows磁區重組軟體

2009年7月9日 星期四

Windows支援4GB的迷思

這個問題...說真的...即使是正在念資訊科系的,搞不清相關理論跟實務背景資訊的,所在多有,絕對不要用2^N次方這種計概所學的基本二進位算數來解釋N位元作業系統能夠管理的實體記憶體的問題...廿幾年前的16位元DOS為何能夠管理1MB(2^20)的空間,而不是只有2^16=64KB?最早版本、基於(也是16位元)80286處理器的OS/2作業系統,為何能夠管理16MB(2^24)的實體記憶體?

2^32=4GB是IA-32作業系統在Flat定址模式下每個執行中的process所能擁有的虛擬定址空間上限,拿來解釋IA-32作業系統能夠管理的實體記憶體總量?一整個張冠李戴....32位元Linux、FreeBSD、Solaris、Windows Server 2003/2008 enterprise版這些身心健全的IA-32作業系統,都可以管理到遠超過4GB、最高到64GB的實體記憶體,這些並非全部都是伺服器作業系統。

32-bit XP SP1雖然安全性極差,但純就能管理的記憶體來說,在啟動PAE以及Memory re-mapping的情形下,絕對可以管理超過4GB以上的實體定址位址,不信的人弄一版親自裝裝看作個實驗吧!沒試過就不要急著否定!從32位元XP SP2之後一直到最新的Win 7 beta,才都被微軟加上了一道只能管理4GB實體位址的封印。

這是之前回給audiofan兄解釋類似問題的一些資料:

http://www.mobile01.com/topicdetail.php?f=174&t=926985&p=9#10202809
=============================================================
我想問題來自於您似乎把PAE視為伺服器作業系統專用的模式,跟IA-32架構是分開來看的,但是從PAE作為IA-32架構的重要延伸被定義出來後一直到今天,早已經比從IA-32誕生到PAE被定義還來得久了(沒有PAE的386、486、Pentium、Pentium MMX,有PAE的Pentium Pro、Pentium II、Pentium !!!、Pentium M、Pentium 4、Core Duo、Core 2 Duo、Core 2 Quad、i7、Xeon家族),另外從AMD Athlon處理器也早早就提供了PAE模式,所以今天幾乎都不特別強調是"Intel" PAE mode了。

另外您似乎認為今天的作業系統大多還預設處在IA-32最原始的32條位址線實體定址、而啟用PAE模式是很稀有的事。事實上PAE模式的運用也比您認為的來得普及,在今天最普遍、絕大多數人在用的主流32位元XP/Vista系統上,PAE模式都已經預設被啟用了,這是因為目前所有的處理器幾乎都支援eXecute Disable(XD, Intel)/No eXecute(NX, AMD)功能,配合從XP SP2開始提供的Data Execution Prevention(DEP),提供軟硬體協同的防止緩衝溢位攻擊安全防護。

但是對於處理器來說,在IA-32模式下要提供硬體XD/NX支援,處理器本身必須先被設定處於PAE模式。而從XP SP2以後到Vista SP1,預設值都是啟動軟硬體協同DEP(安全性功能應該沒人不要吧!),因此除非您刻意從BIOS關閉XD功能,不然作業系統都會預設先啟用PAE模式。您去看絕大多數人的Windows XP系統基本資訊那一頁,就算只有512MB記憶體,也幾乎都會看到"實體位置延伸"字樣,這表示XP/Vista已經處於PAE模式了。

問題來了:既然PAE已經被預設啟動了,為何32位元XP/Vista還是定址不到4GB以上的實體位址?這是微軟自己本身刻意的技術性市場區隔,事實上處理器跟晶片組都已經被XP/Vista設定為能夠處理36條位址線實體定址的狀態(PAE啟動),只是XP/Vista卻又很彆扭的拒絕去處理任何定址在4GB以上的實體定址位址。前面才會有網友提到利用Gavotte RAMdisk這種自力救濟方案。既然處理器跟晶片組已經處於能夠處理36條位址線定址的狀態,但是XP/Vista鬧彆扭,那就讓Gavotte去存取那些XP/Vista拒絕承認、被定址在4GB以上實體位址的記憶體做成RAMdisk,以物盡其用。

Gavotte已經有很多網友快樂的使用中了,因此不用懷疑在32位元模式下絕對是可以存取到超過4GB的實體記憶體的。另一個範例是微軟幾乎刻意絕口不再提起的XP SP1,啟動PAE後,也是可以定址到4GB以上的實體位址。您想想看,XP SP1是哪一年推出的?另一個知名的商業軟體SuperSpeed RAMdisk Plus,也已經提供類似Gavotte的功能了。

因此問題出在微軟對於已經預設啟動PAE模式的消費性32位元XP/Vista、卻又加上一道額外的封印,並非PAE本身是什麼奇怪、非正規的模式。即使是64位元的Vista、理論上可以管理多到目前主機板上插不下的記憶體,其Basic版也被限制在"只能"用8GB的實體記憶體。而同樣充分支援PAE的32位元Windows Server作業系統,低階版本能夠管理的記憶體也被微軟刻意限制在4GB,而中高階版可以管理到64GB的實體記憶體。

綜合上述,PAE早就是IA-32架構以及IA-32作業系統密不可分的一部份了,因此不用將IA-32跟PAE刻意分開來看

關於PAE啟動後的效能損失,也不用刻意去放大它,因為如前面所提,PAE預設幾乎都是會被啟用的,不需要去改什麼boot.ini,就算PAE有效能損失,微軟也已經幫你預設打開了。但是有所失必有所得,啟動PAE後存取多一層分頁表的效能損失(啟動PAE後,分頁表的查詢由兩層變三層,而64位元Vista/Win7的分頁表的查詢,原本便是三層,如果要講效能損失,32/64一樣都是三層),透過如Gavotte這種應用方式,由於能夠被充分運用的記憶體變多了、因而少去存取硬碟這種相對慢很大的儲存媒體,絕對能夠將其彌補回來。已經很多網友將Page file、Temp folder、Internet temp files...指向Gavotte作出的RAMdisk,用過的人絕大多數對效能改進都是滿意的。

同理,如果32位元XP/Vista沒有被封印,能夠自力管理的記憶體因預設開啟PAE變多了、 因而能少去硬碟存取page file、多將程式保持在記憶體中不swap出去到硬碟、多一些記憶體作為SuperFetch的快取,也是能夠將多存取一層分頁表的效能損失彌補回來。

今天問題根源在於微軟的心態,而非PAE有何原罪....

文章來源:http://www.mobile01.com/topicdetail.php?f=300&t=939023&m=f&p=3#21