這是微軟的內核工程師 Axel Rietschin在Quora的一個回答。
Windows 10 的code base 和Windows 8.x , 7 , Vista , XP , 2000 和Windows NT的code base 是相同的,當然是演化過來的,其中的每一代都進行了重大的重構,增加了大量的新功能,提升了性能和對硬件,安全的支持,并且保持了高度的向后兼容性。
(注:考慮到Windows的眾多版本和海量應用,這是一個很了不起的成就, 也是一個很大的包袱。)
Windows 的大部分內核(ntoskrnl.exe)是用C語言寫的,你可以在Github上看到泄露的Windows Research Kernel 代碼,自己研究一下,雖然它已經相當過時,非常不完整,但依然能看出一些重要的東西。
代碼庫在這里:
https://github.com/markjandrews/wrk-v1.2
比如說,我們熟悉的注冊表(Registry),在內核中被稱為配置管理(configuration manager,簡稱cm),就在這個目錄下:wrk-v1.2/base/ntos/config
(注:Windows Research Kernel是微軟為教育目的提供的源代碼。高校師生可以修改,編譯,以此來學習OS的原理。在Linux大行其道的時候, 不知道有多少高校在用?)
大部分運行在內核態的代碼都是用C語言寫的,包括大部分的文件系統, 網絡,大部分的驅動, 其中也有一些C++。
如果往上走進入到用戶態,C語言就會變少,C++會逐漸增多。
大多數人都沒有意識到Windows的龐大規模:這是一個真正的史詩般的巨型項目。
在Windows的代碼樹中,有源代碼,測試代碼,還有其他東西(碼農翻身注:可能是圖標,聲音,圖片?),文件數超過400萬,500多G。
僅僅是把這個代碼樹的目錄和文件名都瀏覽一遍,就要花費你一年的時間。這里有50多萬個文件夾,其中的代碼組成了操作系統工作站和服務器的所有版本,相關工具,開發工具包。
如果你想把源代碼都讀一遍,可能要窮盡一生。
下面是一個截圖,描述了Windows源碼的統計信息:
有一次,我有幾周的時間沒有更新我的Git, 等我回來的時候,我發現它已經落后60,000次提交了!
你肯定會說一個人不可能閱讀完每天的代碼提交,更不用說過去三十年積累的代碼了。
如果你看到了Windows 10 “DVD” 并且想知道是什么編程語言創造了光盤上的東西,我猜98%是C和C++, C是大頭。
.NET BCL(Base Class Library) 和其他庫&框架主要是用C#寫的,他們僅僅是C語言海洋(有一點C++小島)小水滴而已。它們來自不同的部門(The developer’s division), 代碼也不是Windows代碼樹的一部分。
學習C/C++編程知識,想要成為一個更加優秀的程序員,或者你學習C/C++的時候有難度,可以來筆者的C++編程學習圈,里面不僅有學習視頻和文件資料,還有更多志同道合的朋友,歡迎轉行也學習編程的伙伴,和大家一起交流成長會比自己琢磨更快哦!
學習C/C++編程知識,想要成為一個更加優秀的程序員,或者你學習C/C++的時候有難度,可以關注+私信小編【C/C++編程】筆者的C語言C++零基礎編程學習圈,里面不僅有學習視頻和文件源碼,還有更多志同道合的朋友,歡迎轉行也學習編程的伙伴,和大家一起交流成長會比自己琢磨更快哦!
注:本文轉載自微信號:iProgrammer
2013 年 10 月,我們在微博(@程序員的那些事 )發過一張信息圖《知名軟件系統代碼庫對比》。
信息圖中提到,Windows XP 和 Windows 7 操作系統的代碼量約 4 千萬行級別。
(信息圖部分截圖,完整版在這里:http://t.cn/EXMs07e )
Windows Vista 源碼體量約 5 千萬行。
所以,Windows 10 源碼體量至少在 5 千萬行咯。
Windows 操作系統是用什么編程語言開發的?
Windows 操作系統這么個量級的代碼庫,用了哪些/哪種編程語言,肯定有人好奇。
這不,就有人在 Quora 發帖問《開發 Windows 10 用了哪種編程語言?》
2019 年 3 月,微軟內核工程師 Axel Rietschin 在 Quora 上回復了這個帖子。
「程序員的那些事」摘編如下:
Axel 說,Windows 10 和 Windows 8.x、7、Vista、XP、2000 和 NT 有著相同的代碼庫,每一代操作系統都經歷了重大的重構,添加了大量的新特性,改進了性能、硬件支持和安全性,同時保持了非常高的向后兼容性。
內核(ntoskrnl.exe)大部分是用 C 語言編寫的。在 Github 可以找到 Windows Research Kernel 的泄露版。
有興趣的童鞋可以看看:github.com/markjandrews/wrk-v1.2
Axel 表示,雖然 WRK 代碼已經過時了,而且很大程度上還不完整,但那些代碼應該會給大家一些深刻的見解。
比如:wrk-v1.2/base/ntos/config 目錄下是大家熟知的注冊表(Registry)的源碼,這個內核組件就是配置管理器(configuration manager,CM)。
在內核模式下運行的大多數程序,也是用 C 語言編寫的(大多數文件系統、網絡、大多數驅動程序……),還有一些 C++。
至于 Window 10 是用什么編程語言寫的,Axel 認為是 C 和 C++,并且 C 占了絕大部分。
.NET BCL 和其他托管庫及框架通常都是用 C# 編寫的,來自不同的部門(開發者部門),并且也不屬于 Windows 源代碼樹。相比散落著 C++ 島嶼的 C 代碼海洋,C# 寫的代碼簡直就是滄海一粟。
Windows 真的真的真的真的真的很大
Axel 提示大家,大多數人沒有意識到 Windows 系統的龐大,真一個具有史詩規模的巨大項目。
Windows 的完整源代碼樹(包括全部代碼、測試代碼等)的大小超過 0.5 TB,涉及 56 多萬個文件夾,400 多萬個文件。
你可以花一年時間深入源代碼樹,鉆入到那些文件中。它們包括了所有組成 OS 工作站和服務器產品,及其所有版本,工具,相關的開發包。
然后你再讀文件名,看看里面有什么,它們是用來做什么的。想做完這些事,一個人(或兩個人)恐怕要窮盡一生咯。
有一次 Axel 離開 Git 分支幾周,他回來時發現落后了近 6 萬次提交。Axel 想有人會說,沒人可以每天把添加到 Windows 的所有代碼都看完,更不用說去讀過去 30 年來編寫的代碼了!