这是微软的内核工程师 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是用什么语言写的?到底有多少行代码?的更多相关文章

  1. Notepad2(C语言+Windows消息写的,24592行代码)

    C语言+Windows消息写的,24592行代码 http://www.flos-freeware.ch/

  2. 电脑小知识-win10

    设置开机自启 一直想设置几个软件开机自启,尤其是文件搜索类和截图软件,不然每次打开电脑都要双击好几个工具,下面就记录一下如何设置开机自启. 1.先打开咱们的任务管理器,看看都有什么是开机自启的: 可以 ...

  3. windows 小知识---windows下生成公钥和私钥

    首先Windows操作系统需要安装git. 安装完成后,再到任意的文件夹内,点击右键.选择git bash here 打开之后,输入ssh-keygen,一路按enter键. 全部结束后,再到C:\U ...

  4. 先定一个小目标:10天自学C语言编程,教你如何改变一生

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  5. Tinyhttpd for Windows(学习型的项目,才500多行代码)

    前言 TinyHTTPd是一个开源的简易学习型的HTTP服务器,项目主页在:http://tinyhttpd.sourceforge.net/,源代码下载:https://sourceforge.ne ...

  6. Windows 10 如何在桌面上显示“此电脑”和“控制面板”

    新电脑安装好 Windows 10 系统,默认在桌面上是不显示 "此电脑" 和 "控制面板" 图标的. 如果是 Windows 10 家庭版,桌面一般只显示&q ...

  7. 【Windows 10 IoT - 1】Window 10系统安装(树莓派 Pi2)

    一.硬件准备 (1).树莓派Pi2 (2).8G 10速Micro SD卡 (3).LCD显示器(如果是VGA接口,需要加一个HDMI转VGA模块) (4).鼠标 (5).安装Windows 10的P ...

  8. 背水一战 Windows 10 (50) - 控件(集合类): ItemsControl - 基础知识, 数据绑定, ItemsPresenter, GridViewItemPresenter, ListViewItemPresenter

    [源码下载] 背水一战 Windows 10 (50) - 控件(集合类): ItemsControl - 基础知识, 数据绑定, ItemsPresenter, GridViewItemPresen ...

  9. 电脑出现问题如何修复Windows 10

    也许Windows 10无法启动.或者它可能会靴子,但会崩溃很多.在任何一种情况下,您都需要在使用PC之前解决问题.以下是修复Windows 10的几种方法. 方法1:使用Windows启动修复 如果 ...

随机推荐

  1. css z-index的层级关系

    定义和用法 z-index 属性设置元素的堆叠顺序.拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面. 注释:元素可拥有负的 z-index 属性值. 注释:Z-index 仅能在定位元素上奏 ...

  2. CSS Sprites精灵图(雪碧图)

    简介 CSS精灵图,是一种网页图片应用处理方式.允许将一个页面涉及到的所有零星图片都包含到一张大图中 利用CSS的"background-image","backgrou ...

  3. mysql 常见使用场景

    场景1:表中多条相同账户数据,根据创建日期排序取第一条. select * from cms_client_rpq rpq where id = ( select id from cms_client ...

  4. c++ 随机生成带权联通无向图

    提示 1.请使用c++11编译运行 2.默认生成100个输出文件,文件名为data1.in到data100.in,如有需要自行修改 3.50000以下的点1s内可以运行结束,50000-300000的 ...

  5. 【学习】从.txt文件读取生成编译代码。

    string code = null; String projectName = Assembly.GetExecutingAssembly().GetName().Name; // 1. 生成要编译 ...

  6. Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件

    Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件 前言 公司有购买的监控软件北塔系统监控,由于购买的版权中只包含了有限台数据库服务器的监控,所以只监控了比较重要的几台服务器. 后边 ...

  7. 【JS代码压缩】使用YUI Compressor对js文件进行压缩处理

    概述 在使用html5开发Hybird APP的时候,可能会引入大量的js包,另外对于一些核心的js文件,进行一些特殊的处理, 如压缩和加密就显得很重要了,YUI Compressor就是这样一个用于 ...

  8. Java应用服务器之tomcat部署

    一.相关术语简介 首先我们来了解下tomcat是什么,tomcat是apache软件基金会中的一个项目,由apache.Sun 和其他一些公司及个人共同开发而成.主要作用是提供servlet和jsp类 ...

  9. Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines 论文研读

    摘要 本文提出了一种用于训练支持向量机的新算法:序列最小优化算法(SMO).训练支持向量机需要解决非常大的二 次规划(QP)优化问题.SMO 将这个大的 QP 问题分解为一系列最小的 QP 问题.这些 ...

  10. 【译】GraalVM—下一代JVM介绍

    原标题:GraalVM – an introduction to the next level JVM 随着Red Hat宣布Quarkus作为- 为GraalVM和HotSpot量身定制的下一代Ku ...