當前位置: 華文問答 > 數位

Windows 內核和 Linux 內核誰更復雜?

2019-11-19數位

沒有可比性的,Windows是混合內核,Linux是單核心,二者的結構都不一樣,Linux本身可以在內核裏整合大量驅動,Windows內核檔,也就是那個ntoskrnl.exe很小。

當然即使是ntoskrnl,這個程式碼規模也並不小,網上有泄露的WIN2K/NT4的源碼,同時還有相容Windows內核API的開源的ReactOS的源碼,可以看到即使是Windows的內核,程式碼規模也是非常巨大的。籠統的講,ntosknrl肯定比Linux內核要小很多。

如果把所有可以執行在內核態的程式碼(通常也就是驅動)都算上,這個就很難界定了,在桌面領域Windows的驅動必然是比Linux要多的,應用程式也更多(很多應用程式都需要驅動配合),但非桌面領域,Linux的驅動也不少。

但是,程式碼規模不等同於復雜度,同時,對於工程上的程式碼,一般來說,復雜度高是缺點不是優點,因為復雜的程式碼維護性會比較差。

對於題主的問題,可以準確回答出來的是:

  1. Windows的純粹內核部份的程式碼規模比Linux要小;
  2. Windows和Linux工作在內核態的程式碼規模都很大,但分別屬於不同領域無法比較;
  3. 復雜度沒有一個明確的定義(實際上是有的,透過軟體工具分析,但Windows不開源),所以沒辦法比較。

動不動就說內核的人,其實對內核是什麽都搞不清楚,而且Windows能成功,跟內核關系不大,有人開發驅動,有人開發生態環境,這比內核重要多了。