Windows 為什麼可以兼容那麼多不同電腦的不同的硬體?
不同的電腦、不同的生產廠商生產了這麼多不同的硬體,為什麼windows都可以兼容?windows的內核中採用了什麼特殊的機制來解決操作系統的通用性問題?
當一件事情形成標準了,就進入了良性循環。如果你生產出來的硬體在 Windows 下用不了,不用 Microsoft 說你自己就要著急了。同樣的問題還有,為什麼 C 語言在幾乎所有 CPU 上都有 compiler?如果你做 CPU 的做不出來一個 C compiler 也就甭混了。
首先是 @Tim Chen 說的,Windows里有HAL、驅動體系和開發工具,實現上層和硬體隔離。所有穿透的行為都得經過驅動。這樣上層只要把Windows做好,下層廠商把驅動提供好,理論上就能支持各種設備。
第二是其實即便如此,仍然很依賴於廠商驅動。很多廠商驅動的質量非常差,測試也不完備,以至於在一些並非不常見的情況下也會崩潰。這時候就需要在驅動外面再包一層,把具體特定硬體/驅動的bug給繞開或者hack掉。這樣做很暴力,但沒辦法。微軟對廠商驅動無控制權。重災區是PCIE。幾乎每一個硬體/驅動都有嚴重bug,以至於Windows的PCIE子系統里包含了一個資料庫,內含上萬條針對不同vendor ID/device ID做出的hack方法。在別的帖子我也說過,高通的顯卡驅動里有個bug,dxgkrnl不得不在41個地方做了修補,然而他們漏了一處,正好被我趕上了,呵呵。
第三是目前的趨勢來看,驅動模型內的組成也在修改,把廠商驅動壓得更底層,不同廠商之間共享的部分又微軟完成。例子之一是顯卡驅動里的顯存分配。XP時代這是廠商驅動完成的,NVIDIA做的不錯,AMD就是稀爛一坨,分配效率不高還經常出錯。Vista+的WDDM裡面,顯存分配由dxgkrnl完成,廠商驅動只需要實現返回顯存大小和標記是否佔用之類的介面就行。一開始惹了很多麻煩,過了和廠商的磨合期之後,穩定性和性能都比以前有提升。3D列印驅動更徹底。廠商驅動就剩下噴和不噴的控制了。噴頭路徑規劃、voxelization之類全都由微軟的3D列印驅動完成。不是Windows兼容硬體而是硬體去兼容Windows。
簡單得說,Windows建立了一套硬體驅動程序的架構體系和相應的開發工具。硬體廠商按照這個體系編寫相應的驅動程序,就能通過IO埠,中斷,DMA等方式和它的硬體進行交互。
Windows的安裝鏡像裡面自帶了很多常見硬體的驅動,所以用戶感覺就是裝好windows直接就能用了。現在更是能夠在線尋找更新驅動。
除了微軟在hal層的努力外其實還有就是一些列的標準
acpi,pcie,等等intel負責硬體標準,ms負責軟體標準。各個廠家照著標準做軟硬體就好了手機市場因為基本沒有pnp這種換硬體的需求。所以相關標準也沒什麼人做首先是 PC 兼容機統一了電腦市場
- windows映像里預先存好了一大堆設備驅動。
- 微軟網站上有更多的驅動,本機找不到會自動上去找。
- 很多設備不需要專用驅動,比如大部分的USB鍵鼠。
- 沒有驅動的硬體,本身通常都存在某種「預設」模式,提供最低程度的可用性。比如顯卡,即使沒驅動也能顯示出東西來,只不過只有低解析度、沒有3D加速能力而已。
- 而且windows也不支持太多的平台啊,應當只有x86、x86-64、ARM、安騰。
Windows 兼容的硬體架構一隻手能數得過來啊…… 這問題是在黑嗎?
經輪子哥提醒,題主問的是硬體,不是架構……(逃
開始,喬布斯和人合夥締造了微型計算機,不僅負責設計硬體,還負責設計軟體。
後來,IBM看有利可圖,便開始設計IBM PC。PC不是商品名,而是商標,無非沒有註冊而已。IBM找到了Intel來負責CPU,好像Bill的老媽是IBM董事會成員,所以Bill拿到了操作系統的開發合同,轉手買了一個西雅圖的小公司做的DOS,改了改,變成MSDOS,交給IBM,作為操作系統。IBM並沒有像蘋果一樣嗜好專利,相反公開了IBM PC的系統構架,於是IBM PC兼容機大行其道。MS一直是給IBM做配套的,當然MS的操作系統可以運行在所有IBM兼容機上,但是無法運行在蘋果的機器上,也無法運行在大部分的手機上。
所以樓主的問題本身是偽命題。
由於IBM兼容機一統江湖,蘋果思考再三,最後還是將自己的系統改成了IBM PC構架,從此可以裝Windows,據說而已,我沒有用過蘋果的產品。
對於不同的設備,Unix開創了驅動程序這個概念,讓硬體設備商自己開發跟自己設備有關的代碼,Windows繼承了這個機制。話說十年前有個中國公司號稱驅動程序這個概念太落後,他們要創新,他們的創新是PC上裝一個hexin,設備上裝一個hexin,這樣就不需要驅動程序了。不過到現在我也沒有見過hexin操作系統,倒是不經意間發現某個證券交易軟體的程序名叫hexinwindows自帶基礎驅動,各廠家兼容這個基礎驅動。。。然後各廠家推出再自己產品的驅動。。。。。。
前面已經有人說了,大體意思就是並不是windows 兼容所有硬體,而是所有的硬體都是按照Microsoft 的標準去生產的,你看arm系列的處理器就不兼容,不過現在也在開發了
樓上的高手們回答的很好,驅動 驅動 驅動 重說三
微軟最大的習慣就是制定標準,並且從一開始的初衷就是大家都要按照我制定的標準和遊戲規則來玩。
.....問題反了
因為那些東西都是基於windows設計的吧。。。。。。說反了,不是Windows 可以兼容那麼多硬體,而是這麼多硬體都想適配Windows 。
推薦閱讀:
※關於內存管理(虛擬內存的分段與分頁實現),Intel Pentium完成哪些功能,Windows/Unix OS完成哪些功能?
※如何看待微軟向沒有預約過的 Windows 7/8 用戶推送、後台自動安裝 Windows 10?
※離線的Windows平台下,有什麼軟體可以集成「待辦」、「日程」以及「筆記」?
※如何評價 2015 年 3 月 18 日 WinHEC 發布會的內容?
※為什麼 Windows 沒有形成成熟的軟體包和升級體系?
TAG:MicrosoftWindows | 硬體兼容 |