ycweng wrote:
有些部分其實我並不贊同,
1. Flat memory model對於程式設計師來說是一個比較直覺方便的model,必要時也比較容易把程式移植到其他的平台上,而不用因為大部分其他處理器/OS沒有 selector:offset的模式而大幅改寫。4GB的虛擬空間,99%以上的程式已經很夠用了(剩下的1%,或許有一半如資料庫應用是真的不夠用,另一半則是軟體公司打混或急就章趕上市,程式沒有好好最佳化,例如最近的一些3D Game),對於32-Linux/Unix來說此限制也一樣,再說Linux也是使用Flat memory model。
2. 把硬體 Mapping 到高位址,是在OS被載入前BIOS就已經先對應了,對於Linux跟Windows來說啟動後都面臨一樣的問題,但Linux 32-bit/Win server 2003可以完全利用超過4GB上的實體記憶體沒有問題,而XP/Vista很明顯是被微軟人為限制的。
3. DOS並沒有虛擬記憶體,Windows/Linux都有,DOS的定址空間就像個大西部,沒什麼虛擬位址實體位址之分,惡意程式或是寫得不好的程式愛怎麼寫入就怎麼寫入,而Windows/Linux都是在保護模式下,實體記憶體跟各應用程式獨有的虛擬定址空間是分開的。
4. Intel/AMD的PAE跟DOS時代的HMA有本質上的根本不同,兩者不太能相提並論
5. AWE是作業系統正式開放的API,並非旁門左道,讓應用程式必要時可以享有超過user space空間(一般情況是2GB)的記憶體,且不會被OS swap出去,缺點是只能存放資料,不能放程式碼本體。
1. 嚴格來說,效率考量. 在程式設計上,除了部份情況下的 C 跟組合語言外,Flat address 對寫程式的影響很小,尤其是現在。
有跨平台需求的,每一平台還是要有自己的 compilier lib. 比較有利?可以忽略了.
被嫌棄的原因,還是因為比起以前的 segement ,要再多經過一層轉換,得犧牲效能,但是真的會犧牲很多效能嗎?不會比 switch CPU mode 更浪費吧。
2. 我說這就是 IBM PC 整體留下來的問題,包括 DOS 也算是禍首。硬體映射為何不排前面排後面?還不是當初這樣,後來不得不。
3. DOS extender 是啥?DOS 虛擬記憶體的實做我也小玩過,很累人的工作沒錯,不過也沒那麼神秘。x86 會有 real mode、v86 還不是為了 DOS....XD
4. 卻是異曲同工啊,PAE 只讓我想起 A20....XD
5. 只能放資料不能放程式,還真像以前 DOS 的 UMA 跟 EMS....:p




























































































