Win 10 源码一览:0.5T 代码、400 万文件、50 万文件夹
开发四年只会写业务代码,分布式高并发都不会还做程序员?
Windows 操作系统本身是不开源的,但是近日微软内核工程师 Axel Rietschin 发表了一篇博客,带大家一窥了 Windows 10 内核的魅力。
Axel 介绍,Windows 10 与 Windows 8.x、7、Vista、XP、2000 和 NT 的代码库是相同的,其中每一代都在之前的基础上进行重大的重构,并增加大量新功能,改进性能和硬件支持,此外还有安全性的提升,同时保持非常高的后向兼容性。
目前在 GitHub 上其实可以找到 Windows 内核研究的泄露副本,虽然这些代码已经过时且很不完整,但它们还是具有很高的研究价值。比如 wrk-v1.2/base/ntos/config 源码实现了一个大名鼎鼎的内核组件配置管理器 Registry,也就是注册表,它在内部称被为 Cm。
其实 Axel 这个博客是在回答一个问题:“Windows 10 是由什么语言写就的?”
他介绍,ntoskrnl.exe 内核大部分是使用 C 编写的,在内核模式下运行的大多数内容也是用 C 编定的,包括文件系统、网络与驱动程序等。其中也包含一些 C++ 代码,而越靠近用户模式、越接近新的源码时,C 的使用变得越来越少,反之 C++ 变多。
具体看一下 Windows 10“DVD”的源码,作者猜测其中 98% 由 C 和 C++ 写就,而 C 占据大比例。
此外,.NET BCL 与一些相关库和框架通常都是用 C# 编写的,“但它们也只不过是带有几座 C++ 小岛的 C 汪洋大海的一栗”,它们来自不同的部门,代码并不属于 Windows 源码树。
作者惊呼:Windows 源码的规模巨大,这是一个真正史诗般的巨型项目。
完整的源码树包含所有代码,如上图所示,测试代码与一起构成“Windows 源码”的所有内容加起来有超过 400 万个文件、50 万个文件夹、大小超过 0.5 TB,其中包含了构成 OS 工作站、服务器和所有版本的工具、相关开发工具包的每个组件的代码。
源码的规模有多恐怖呢?作者估计完全查看这些源码的文件名,并试图理解源码具体是用来干什么的,需要花上一生的时间。他还举了一个例子:有一次,我离开了一个 Git 分支几个星期,当我回来时,已经落在了将近 60 000 次 commit 之后。
博客原文:
- https://www.quora.com/Which-programming-language-is-used-for-making-Windows-10/answer/Axel-Rietschin
Win 10 源码一览:0.5T 代码、400 万文件、50 万文件夹相关推荐
- Win 10 源码一览:0.5 T 代码、400 万文件、50 万文件夹
Windows 操作系统本身是不开源的,但是近日微软内核工程师 Axel Rietschin 发表了一篇博客,带大家一窥了 Windows 10 内核的魅力. Axel 介绍,Windows 10 与 ...
- win 10 源码安装 Davinci
win 10 源码安装 Davinci Davinci 源码大概分为三部分: 采用 React 的前端工程 采用 Spring Boot 的后端工程 采用 Jekyll + Minmal Mistak ...
- Windows 10源码一览!
Windows 操作系统本身是不开源的,但是微软内核工程师 Axel Rietschin 发表了一篇博客,带大家一窥了Windows 10 内核的魅力. Axel 介绍,Windows 10 与 Wi ...
- 【Android 10 源码】healthd 模块 HAL 2.0 分析
Android 9 引入了从 health@1.0 HAL 升级的主要版本 android.hardware.health HAL 2.0.这一新 HAL 具有以下优势: 框架代码和供应商代码之间的区 ...
- 课表网页完整的php代码,练手Lab课程表小程序源码v1.0.0 Thinkphp 前后端分离
练手Lab课程表小程序源码是一个基于Thinkphp系统进行开发的前后端分离系统. 源码功能介绍 1.情侣功能 2.情侣间留言 3.情侣间互相设置课程表背景 4.自己日.周课程表背景设置 5.教务系统 ...
- Windows 10 使用WSL2下载和编译安卓10源码
一.背景介绍 对于想要在Windows OS上学习和使用Android源码的同学来说,视乎这不太友好,因为Android基于Linux内核,需要在Linux环境下编译. 对于只需要查阅源码同学来说 ...
- Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南
Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南 实验环境 下载Android源码树 在pixel3上安装手机驱动版本 编译Android源码 Android ...
- 编译Android源码(9.0)
参考了官方文档和前辈们的编译经验,但还是遇到了不少坑,在这里记录一下过程. 官方文档地址:https://source.android.google.cn/source/downloading 下面写 ...
- 【Android 10 源码】深入理解 Omx 初始化
MediaCodec 系列文章: [Android 10 源码]深入理解 MediaCodec 硬解码初始化 [Android 10 源码]深入理解 Omx 初始化 [Android 10 源码]深入 ...
最新文章
- 异步复位,同步释放的理解
- LightOJ - 1179 Josephus Problem(约瑟夫环)
- redis的事务总结
- Message和handler传递对象
- POJ 3666 Making the Grade (DP滚动数组)
- 修改文字处理布局及文字绘制,一个字的感受:太糙
- ckpt下载 deeplabv3_Ubantu下 用deeplabV3+训练自己的数据集 你可能遇到的所有坑都在这了...
- PHP带头大哥的百宝囊!
- SPC控制图的样品子组大小为什么建议为5
- ACM题目推荐(刘汝佳书上出现的一些题目)
- 96PIN直插DIP千兆四口网络变压器 千兆交换机路由器网络滤波器
- 使用OpenOffic在线转换文档错误
- 淘宝下架苹果iOS充值业务,马云或在为支付宝扫除障碍
- 某网站提供的免费香港虚拟主机测试
- 实现炫酷的卡片式动画!
- 为什么我们求职 找工作 一定要写好简历?
- Scratch之小猫酷跑我设计
- 关于ROS功能包里package.xml和CMakeList.txt的源码分析
- 音乐专业又和计算机有关的吗,计算机音乐专业介绍
- PHP实现微信公众号H5支付
热门文章
- 田志刚:写文章的两个好处
- ArcGIS Server 9.3 beta 体验一 -- 安装
- document对象详解
- html照片4张 9张布局,css实现朋友圈照片排列布局
- html.partial mvc,MVC Html.Partial or Html.Action
- 超融合服务器虚拟化优缺点,超融合是什么 意思?为什么必须是软硬件一体?...
- python not函数_python 函数
- linux查看文件隐藏字符,Linux使用cat命令显示隐藏字符的方法
- mysql init file_关于MySQL的init-file选项的用法实例
- MATLAB中深度学习的数据集合