e-day-day wrote:
開發者依然可以寫64位元軟體在leopard上面跑,adobe當然也可以這麼做...(恕刪)
我補充一下,continuumさん是對的,以Adobe的場合來講,CS4不推出64Bit版本的原因,在於CS4所使用的開發平台Carbon不支援64位元,而非OS的效能問題,並非您所宣稱的,有用或沒用的問題。
根據CNET的報導,adobe已經派人開始學Cocoa了,但是要把CS4從Carbon轉移到Cocoa,非一朝一夕的事情。因此Adobe才會決定在這個時間點不推出CS4的64位元版本。
也就是說,就算Snow Leopard推出了,CS4還是不會出64位元版(至少直到CS4完全轉移到Cocoa之前,那時候搞不好差不多是CS5推出的時候了)。
另外關於OSX 10.5到底是不是「真」64bit的作業系統問題,為了盡可能的避免出錯,我參考了中文、英文、日文三份的WIKI解說:
http://en.wikipedia.org/wiki/Mac_OS_X_v10.5
http://ja.wikipedia.org/wiki/Mac_OS_X_v10.5
http://zh.wikipedia.org/w/index.php?title=Mac_OS_X_v10.5&variant=zh-hant
首先:
中文跟英文的wiki,基本的內容差不多,可說是從英文翻譯過來的,重點在這一段話:
Native support by many libraries and frameworks for 64-bit applications, allowing 64-bit Cocoa applications. Existing 32-bit applications using those libraries and frameworks should continue to run without the need for emulation or translation.
對64位元應用程式提供更多函式庫和框架的原生支援,允許64位元Cocoa應用程式執行。現存使用這些函式庫與框架的32位元應用程式不需透過模擬或轉譯而繼續執行.
文中提及「Native support(原生支援)」以及「32位元應用程式不需透過模擬器」等字眼,幾乎快可以肯定OSX 10.5的確是原生的64bit的OS(儘管它仍使用32位元的Kernal)。
但是參考日文版wiki的話,日文版有特別重新編寫過,在這裡看出了一些端倪:
Cocoa及びJava仮想マシンを含むOS全体が64ビットに対応する(ただしCarbonは64ビットに対応していない)。64ビット環境に対応するプロセッサならば、Intel・PowerPCの別を問わず自動的に64ビットに対応し、一つのシステム上で、32bitアプリケーションと64bitアプリケーション、32ビットドライバと64ビットドライバが同時に動作可能である[3]。これを実現するためにカーネルを32bitモードにしており、OS全体が64bitではなくなっている。
OS整體,包括Cocoa以及JAVA虛擬機器在內全部支援64位元環境(但Carbon則無法支援64位元)。當使用64位元的處理程序時 不論是Intel或PowerPC,都會自動對應其64位元模式,而且在同一個系統上,32位元與64位元的應用程式與驅動程式皆可同時運作無誤。為了實現這個功能,OSX使用了32位元模式的Kernel,因此OS全體並非完全都是64位元。
這段文字的參考資料出自:http://www.apple.com/jp/macosx/technology/64bit.html。另外核心為32位元部份,則是透過終端機命令模式,執行「file /mach_kernel」指令確認後的結果。因此可證實您的看法,OSX 10.5仍是32位元核心,但是為何32位元核心可以接受64位元程式跟驅動程式?
根據這份文件指出,OSX 10.5的確是使用32bit來跑64bit的程式,但文中提到,kernel會切換到被稱為「long mode compatibility mode」的模式來執行64位元應用程式。同時,Kernel也運用了intel提供的PAE功能,來讓32位元的Kernel可定址到32GB的記憶體空間。(但似乎再多就不行了)
因此,OSX10.5使用的的確是32位元的Kernel,但是它依然可以完整對應64位元的應用程式(Cocoa跟JAVA的虛擬機器環境)。故一直強調OSX 10.5是「假64位元」似乎是有點過頭了。
另外再根據這段內文:
Leopard's 32-bit kernel has been fitted with enhancements that handle copying between 32 and 64-bit user address spaces, and its syscall and trap handlers are also 64-bit code.
Leopard的32位元Kernel有特別加強過,以便處理32位元與64位元之間的位址拷貝動作。而且syscall(呼叫系統服務的指令)跟trap(系統障礙通知機制)都是原生64位元的。
由此可知,Leopard的32位元Kernel並非只是很單純地叫出一個64位元的環境給程式使用,它本身也有相當的因應措施跟補強。
如果可以同意不應該因為64位元需要較多的資源來跑,就斷定它比較浪費(當處理的資料超過GB等級時,效果就會顯現出來)。那麼也應該沒有理由直接斷定,在混合式的32位元核心底下執行的64位元程式,就是「沒那個效率」或「沒有去開發的意義」。畢竟OSX 10.5確實作到了 FULL SUPPORT 64 BIT,不是半調子。
一點看法,參考看看,有誤也歡迎指正。
