科普 什麼是SysWow64

2022-02-20 15:02:48 字數 2676 閱讀 9833

wow!什麼是wow64

今天有個同事,被syswow64搞暈了。這裡簡單介紹一下。

64位的windows並不是簡單地把所有東西都編譯成64位就萬事大吉的。關於64位的cpu應該做成什麼樣子,intel和amd曾有各自的打算。amd的回答直接了當:新的64位處理器,應該能在提高更高處理能力的同時,保持對32位應用程式的相容性。而intel則希望藉此機會,把下一代的處理器,設計得更完美。於是,就有了amd的x86-64(後被稱為amd64)的處理器和intel的ia-64(安騰)處理器。和amd64不一樣的是,安騰處理器並沒有很好地提供對32位應用程式的支援。具體資訊,讀者在網上應該很容易找到,也就不多說了。

windows作為乙個作業系統,自然希望使用者在執行64位作業系統時,也能像以前一樣,執行各種32位應用程式。這一點,在amd64處理器上,相對容易做到。而安騰,幾乎是另外一回事。(後來intel也生產了相容amd64的處理器,但那是後話。)

雖然我說「相對」容易做到,但也不是空手套白狼。當作業系統執行在64位時,怎麼才能保證已經存在的32位應用程式以為自己仍然執行在32位系統上呢?微軟的解決方案是:wow64,全稱是32bit windows on 64bit windows(64位windows上的32位windows)。

你也可以這樣理解,雖然整個系統是執行在64位模式,但如果乙個應該程式是32位的,windows會在64位的基礎上,載入乙個「32位的windows」。這樣,這個32位應用程式就以為自己是執行在32位的系統之上的。

於是,你也可以想象,這就意味著,64位的windows,不但帶有64位作業系統應有的系統檔案,還帶有32位系統應有的系統檔案。

我們都知道的是,windows系統的主要系統檔案都是放在乙個叫做system32的資料夾中的。為了能同時放下兩套系統檔案,windows會在64位的系統上,增加了乙個資料夾,叫syswow64。

這便有了乙個問題,system32和syswow64裡面,哪個放的是64位的系統檔案,哪個放的是32位的系統檔案呢?

如果你還記得wow64指的是64位windows上的32位windows,那麼,你就能會想到,syswow64裡放的是32位的系統檔案。但你也可能會問,為什麼乙個明明叫system32的資料夾裝的是64位的系統檔案,而乙個明明叫syswow64的資料夾裝的卻是32位的系統檔案呢?既然是64位的系統,為什麼不能有system64和system32這樣的資料夾呢?

這個問題問得很好。答案也很簡單:人在江湖,身不由己。

相容性

如果我問你,可曾有多少機會接觸過安騰處理器呢?我想,對於一般人來講,應該是沒有的。那為什麼amd64會大行其道,而安騰處理器卻鮮為人知呢?還是因為乙個軟硬體設計上的關鍵概念:相容性。

正是因為安騰處理器,沒有做好對已有的32位系統提供良好的支援,便其一直處於市場的邊緣。這和你不會買一台看不了模擬訊號頻道的高畫質電視是乙個道理。

之前我們談到的相容性,是指在64位windows上,相容已經有的32位應用程式。現在考慮另一種相容性。

如果你寫了乙個很牛的32位的應用程式,現在,你想把它變成64位的應用程式,以更充分地利用64位處理器所帶來的新的處理能力。你肯定覺得,這不就是讓64位編譯器編譯一遍就完了的事兒麼?可能你發現,這並不是骨感的現實。你突然發現,你的程式裡,為了某些你已經想不起來的原因,把system32這個資料夾,寫死在了你的程式裡。而這個system32中的32,讓你很不安。你嘗試著執行了你的程式,卻發現一切正常。為什麼呢?因為這是windows系統的另乙個相容性方面的努力:讓乙個已有的32位應用程式,不加修改或者盡可能少地加以修改,便可以被編譯成64位應用程式並在64位windows上執行。其實,把system32這樣的路徑,寫死在程式裡,並不是乙個個案。所以,為了保證這些應用程式可以順利地過渡到64位,windows最後還是決定讓64位的系統檔案放在system32的資料夾下。而讓32位的系統檔案,搬到了syswow64中去。

你肯定會想,那讓32位搬到syswow64中去以後,那些寫死在32位應用程式中的system32怎麼辦?答:windows會給他們轉向到syswow64中去。那讓64位中的system32轉向到system64不也是一樣麼?真的一樣麼?不一樣麼?真的一樣麼?不一樣麼?真的不一樣。

作為64位windows作業系統,當然是希望能充分發揮64位處理器的潛力,讓應用程式更有效率地執行。如果在執行64位應用程式時,總要檢查是否需要轉向,勢必影響程式執行效率。所以,不能給64位應用程式做沒有必要的轉向,如果說必須要轉,那就只能轉32位應用程式了。是的,沒有辦法,在64位作業系統中,32位應用程式要做一些小的犧牲。

此外,為了保證32位應用程式不與64位應用程式相衝突,除了system32資料夾外,登錄檔也需要為32位和64位提供兩套,也需要讓32位的應用程式在必要時重定向。

結論

所以syswow64資料夾,是64位windows,用來存放32位windows系統檔案的地方。

後記

相容性是乙個重要的事情。當然,也是乙個很有意思的事情。如果你在windows 7中執行"winver",你就會發現,windows 7原來是windows 6.1。為什麼呢?事情是這樣的,windows xp是windows 5.2,windows vista開始變成了6.0,結果,很多應用程式只是檢查作業系統版本號的頭一位,發現不是5,於是就提示使用者說:「我們不支援windows xp以前的系統」。這也是從windows vista的不成功中,學習到的一課。也許,以後永遠都沒有windows 7.0也未可知啊。

SysWOW64是個什麼資料夾

wow64 windows on windows 64 bit 是乙個windows作業系統的子系統,能夠執行32 bit 應用程式,並且在所有的64 bit 版本的windows上都存在 包括 在windows server 2008 r2上,這是乙個可選元件.wow64被設計用來處理許多在32 ...

什麼是64位?

什麼是64位計算?在計算機發展史上,人類歷經了從8位計算到16位計算 從16位計算到32位計算兩次飛躍,32位計算是目前伺服器市場的主流。64位計算是相對於32位計算的新一代高效能計算標準,就象高速公路與山間小路的區別,相比於32位計算,64位提供更大的計算頻寬,從而帶來更高的效能,使很多過去根本無...

科普 什麼是TLS1 3

tls1.3是一種新的加密協議,它既能提高各地網際網路使用者的訪問速度,又能增強安全性。我們在訪問許多網頁的時候,常常會在瀏覽器的位址列上看到乙個鎖的圖示,並使用 https 代替傳統的 http 這裡的 s 代表著安全。當你連線到乙個https站點時,你和該站點之間的通訊會被加密,這會顯著提高瀏覽...