电脑小知识:Windows 10是用什么语言写的?到底有多少行代码?
这是微软的内核工程师 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++交流Q群951726787,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。
微信公众号:C语言编程学习基地
电脑小知识:Windows 10是用什么语言写的?到底有多少行代码?的更多相关文章
- Notepad2(C语言+Windows消息写的,24592行代码)
C语言+Windows消息写的,24592行代码 http://www.flos-freeware.ch/
- 电脑小知识-win10
设置开机自启 一直想设置几个软件开机自启,尤其是文件搜索类和截图软件,不然每次打开电脑都要双击好几个工具,下面就记录一下如何设置开机自启. 1.先打开咱们的任务管理器,看看都有什么是开机自启的: 可以 ...
- windows 小知识---windows下生成公钥和私钥
首先Windows操作系统需要安装git. 安装完成后,再到任意的文件夹内,点击右键.选择git bash here 打开之后,输入ssh-keygen,一路按enter键. 全部结束后,再到C:\U ...
- 先定一个小目标:10天自学C语言编程,教你如何改变一生
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- Tinyhttpd for Windows(学习型的项目,才500多行代码)
前言 TinyHTTPd是一个开源的简易学习型的HTTP服务器,项目主页在:http://tinyhttpd.sourceforge.net/,源代码下载:https://sourceforge.ne ...
- Windows 10 如何在桌面上显示“此电脑”和“控制面板”
新电脑安装好 Windows 10 系统,默认在桌面上是不显示 "此电脑" 和 "控制面板" 图标的. 如果是 Windows 10 家庭版,桌面一般只显示&q ...
- 【Windows 10 IoT - 1】Window 10系统安装(树莓派 Pi2)
一.硬件准备 (1).树莓派Pi2 (2).8G 10速Micro SD卡 (3).LCD显示器(如果是VGA接口,需要加一个HDMI转VGA模块) (4).鼠标 (5).安装Windows 10的P ...
- 背水一战 Windows 10 (50) - 控件(集合类): ItemsControl - 基础知识, 数据绑定, ItemsPresenter, GridViewItemPresenter, ListViewItemPresenter
[源码下载] 背水一战 Windows 10 (50) - 控件(集合类): ItemsControl - 基础知识, 数据绑定, ItemsPresenter, GridViewItemPresen ...
- 电脑出现问题如何修复Windows 10
也许Windows 10无法启动.或者它可能会靴子,但会崩溃很多.在任何一种情况下,您都需要在使用PC之前解决问题.以下是修复Windows 10的几种方法. 方法1:使用Windows启动修复 如果 ...
随机推荐
- 关于前端数据&逻辑的思考
最近重构了一个项目,一个基于redux模型的react-native项目,目标是在混乱的代码中梳理出一个清晰的结构来,为了实现这个目标,首先需要对项目的结构做分层处理,将各个逻辑分离出来,这里我是基于 ...
- Win10+YOLOv3完整安装过程(亲测可运行)
最近了解并尝试在Win10安装YOLOv3,参考了十几篇文章,发现每个人都有自己的安装方式,最初尝试用cmake编译,虽然安装完成,但无法使用GPU,坑非常多,经2天努力终于安装成功,分享并记录自己的 ...
- 华山论剑(没有上司的舞会)——树形dp
华山论剑(没有上司的舞会) 题目描述 一日,小策如往常一般打开了自己的传奇,刚上线不久,就收到了帮主的私信.原来帮派里要召开一次武功比拼,让他来邀请各帮派人员,因为有些侠客还是萌新,所以需要小策挨个选 ...
- 实战SpringCloud通用请求字段拦截处理
背景 以SpringCloud构建的微服务系统为例,使用前后端分离的架构,每个系统都会提供一些通用的请求参数,例如移动端的系统版本信息.IMEI信息,Web端的IP信息,浏览器版本信息等,这些参数可能 ...
- 【高并发】面试官问我如何使用Nginx实现限流,我如此回答轻松拿到了Offer!
写在前面 最近,有不少读者说看了我的文章后,学到了很多知识,其实我本人听到后是非常开心的,自己写的东西能够为大家带来帮助,确实是一件值得高兴的事情.最近,也有不少小伙伴,看了我的文章后,顺利拿到了大厂 ...
- Ethical Hacking - Web Penetration Testing(7)
VULNS MITIGATION 1. File Upload Vulns - Only allow safe files to be updated. 2. Code Execution Vulns ...
- Guava集合--新集合类型
Guava引入了很多JDK没有的.但我们发现明显有用的新集合类型.这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念.作为一般规则,Guava集合非常精准地遵循了JDK接口契约 ...
- ant design pro 实战 : 使用 ztree
应当指出,antd 是有 ztree 组件的,但是太简单,无法满足复杂的业务需求. 所以我还是决定使用zTree. 用 npm | cnpm 或者 yarn | tyarn 安装,这一步略. 在 js ...
- Captura - 免费好用还开源的录屏软件
首先下载这个软件,国内下载很慢这里提供一个国内下载UCloud-OSS 软件打开后默认英文,现在我们切换到中午模式 在录制屏幕的同时获取声音
- 设计模式:command模式
目的:将命令设计成类的形式,并可以组织成队列 优点: 在需要的情况下,可以比较容易地将命令记入日志 可以容易的实现对请求的撤销和重做 由于新的具体命令类不影响其他的命令类,因此增加新的具体命令类很容易 ...