精华内容
下载资源
问答
  • Windows 10是用什么语言写的?有多少行代码?

    万次阅读 多人点赞 2019-04-23 08:36:00
    Windows内核主要C写的, 有500多G。作者:Axel Rietschin编译:码农翻身这微软的内核工程师 Axel Rietschin在Quora的一个回...
        

    Windows内核主要是C写的,   有500多G。

    作者:Axel Rietschin

    编译:码农翻身

    这是微软的内核工程师 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源码的统计信息:

    640?wx_fmt=png

    有一次,我有几周的时间没有更新我的Git Branch , 等我回来的时候,我发现它已经落后60,000次提交了!

    你肯定会说一个人不可能阅读完每天的代码提交,更不用说过去三十年积累的代码了。

    如果你看到了Windows 10 "DVD” 并且想知道是什么编程语言创造了光盘上的东西,我猜98%是C和C++, C是大头。

    .NET BCL(Base Class Library) 和其他库&框架主要是用C#写的,他们仅仅是C语言海洋(有一点C++小岛)小水滴而已。它们来自不同的部门(The developer's division), 代码也不是Windows代码树的一部分。

    原文地址:

    https://www.quora.com/Which-programming-language-is-used-for-making-Windows-10


    你可能会喜欢

    我是一个线程

    我是一个Java Class

    CPU阿甘

    面向对象圣经

    TCP/IP之大明邮差

    CPU阿甘

    负载均衡的原理

    一个故事讲完HTTPs

    编程语言的巅峰

    Java:一个帝国的诞生

    JavaScript:一个屌丝的逆袭

    我逛了JDK一条街,发现不少好东西

    640?wx_fmt=jpeg

    展开全文
  • Windows 10 的code base 和Windows 8.x , 7 , Vista , XP , 2000 和Windows NT的code base 相同的,当然演化过来的,其中的每一代都进行了重大的重构,增加了大量的新功能,提升了性能和对硬件,安全的支持,...

    这是微软的内核工程师 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语言编程学习基地

    展开全文
  • 稍显枯燥的,它们和Windows内核无关,纯C语言与汇编语言的关系的字节。如果读者已经精通汇编语言,并能顺利阅读汇编代码,请直接跳进本部分。 第1章 汇编指令与C语言 1.1 上机建立第一个工程 1.1.1 Visual ...
  • 通常,要求运行效率高的子程序是用汇编语言编写的。 2 强大 运用汇编语言,你能得到不受限制的权力。相对的,高级语言则有种种限制,在实现某些特定的要求时变得困难。 3 体积小 汇编语言程序通常比其他语言程序...
  • rust一个很牛逼的语言,在stackoverflow上连续三年被评为最受欢迎的语言。但是,真正起来的酸爽也只有的人自己知道。简单个hello world,当然不会遇到什么挑战。但是工作中,尤其实现复杂业务逻辑的时候,...

    rust是一个很牛逼的语言,在stackoverflow上连续三年被评为最受欢迎的语言。但是,真正用起来的酸爽也只有用的人自己知道。
    简单写个hello world,当然不会遇到什么挑战。但是工作中,尤其是实现复杂业务逻辑的时候,是不是好用,很大程度上和IDE有关,尤其是debug。这是本人的体会。windows平台的开发环境设置,我试了几次,都磕磕绊绊的。
    本文记录了我在一台华为开发本上的环境搭建过程,以备将来参考。


    一、软件列表:

    1. rust官方安装包(https://www.rust-lang.org/learn/get-started)
    2. eclipse for rust(https://www.eclipse.org/downloads/packages/release/2020-06/r/eclipse-ide-rust-developers)
    3. gdb安装包(https://astuteinternet.dl.sourceforge.net/project/tdm-gcc/GDB/gdb-7.9.1-tdm64-2.zip)


    二、安装rust官方包


    首先,下载RUSTUP-INIT.EXE (64-BIT)](https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe)
    此安装包依赖Visual Studio的C++。如果在安装rust时,没有安装Visual Studio,会有提示。可以根据提示信息安装后,再继续。我选择的是 Visual Studio 2019 Community,安装的组件是C++桌面开发。如下图所示:

    b95bafab167b1cdc7d16bbfa3fcc1e9f.png
    Visual Studio Installer


    在rustup-init.exe的安装界面,注意要选择2定制,不要默认安装。

    ca811fa6dcd2dc90d819c39c77e35993.png


    选择2)Customize installation。然后在提示语: Default host triple?下面,输入:x86_64-pc-windows-gnu
    这是关键的一步。后面的,都可以直接回车。再次回到上边的选择页面时,直接回车,开始安装。
    安装完毕后,简单运行: rustup --version。如看到版本信息,则说明此步安装成功。


    三、下载并安装eclipse for rust


    我下载的是2020-06的版本。eclipse需要java环境运行。如果没有,需要安装。建议安装jdk8。
    将下载的eclipse压缩包解压到一个目录,即可。直接双击exlipse.exe文件,就能运行。


    四、安装gdb包


    根据stackoverflow上大牛们的建议,直接下载TDM版的GDB。原文链接在此:https://stackoverflow.com/questions/33570021/how-to-set-up-gdb-for-debugging-rust-programs-in-windows
    简单讲,下载下来的zip文件,解压到一个固定的目录即可。


    五、启动eclipse,完成最后的设置


    新建一个rust项目。在main.rs文件中混乱写两行代码,加个断点。开始debug。
    eclipse提示有错误。查看详细信息。看到提示“rls --version”没有相应。解决办法,开个命令行,执行命令:rustup component add rls --toolchain x86_64-pc-windows-gnu
    之后,关闭eclipse,再重启。进入项目的debug设置界面,再debugger页面,选择前面下载的tdm gdb的可执行文件的位置。如图所示:

    be45ae8f2412b25dbe8a75855d5be479.png


    再此debug,成功!
    有图有真相:

    f14b5d3fd5e0382a1750983aa5a50956.png

    后记,N年没有使用eclipse了。这次,因为rust,再此拥抱eclipse,多少勾起了一些当年Java开发的回忆。
    哈哈哈

    展开全文
  • windows 程序设计

    2011-07-24 21:16:30
    我们在1985年为Windows 1.0程序的方法,它今天仍写作Windows程序的有效方法。 API和内存模式 对于程序作者来说,操作系统由本身的API定义的。API包含了所有应用程序能够使用的操作系统函数呼叫,同时...
  •  这几天看汇编语言时,很多人都推荐王爽老师的《汇编语言》,老师的书的确写的很好,但是讲的ms的汇编,但是总不能为了简单的几行汇编代码,就让我装个windows吧,win10几乎没有什么用处,win7有点大,winxp也太...

      坐起来非常容易,找到这条路确实非常曲折,为了后来的同志们不再纠结,特记录如下:

      这几天看汇编语言时,很多人都推荐王爽老师的《汇编语言》,老师的书的确写的很好,但是讲的是ms的汇编,但是总不能为了简单的几行汇编代码,就让我装个windows吧,win10几乎没有什么用处,win7有点大,winxp也太老了。自己好歹也是用linux近20年了, 这点还难不到我。主要如下步骤就可以轻松搞定linux下的masm编程,而且具有书上的一切环境,也可以使用linux下的各种工具。

      一、首先安装软件:

      pacman -S dosemu

      二、准备工具软件,debug.exe  edit.com  link.exe  masm.exe,如果需要的话,看这里链接: https://pan.baidu.com/s/1dF3p8YH 密码: jk8c

      下载后,放到自己home目录下的一个文件夹中,例如我放到了/home/munication/WORKM/AsmStudy/中,

      三、启动dosemu,出现一个黑乎乎的dos样的窗口

      四、在dosemu窗口中输入命令:

        1、d:                        //切换到目录d盘,dosemu自动将linux下的home目录挂载为D盘了

        2、cd WORKM/AsmStudy/               //切换到对应的目录

        3、赶紧编写一个程序试试看吧,连edit.com和debug都有了

      五、剩下的就是跟着王爽老师的教材疯狂学习了

      六、对我来说,也可以更近的距离查看windows和gnu的汇编的不同,对同一个可执行文件,使用反编译可以不同的平台查看下,哈哈哈,完工,希望能解决一部分人的需要。

        

    转载于:https://www.cnblogs.com/guochaoxxl/p/7082083.html

    展开全文
  • 什么是实用技巧,就是那种能经常得着的值得收藏起来的应用方法。本文 中笔者就将向大家介绍35种Windows操作系统技巧,招招实用,招招值得你把 他保存到你的电脑中或者把这篇文章的地址收藏到收藏夹里。  1、...
  • 14.1 Windows什么会崩溃 845 14.2 蓝屏 846 14.3 崩溃转储文件 849 崩溃转储的生成 852 14.4 Windows错误报告 853 14.5 在线崩溃分析 854 14.6 基本的崩溃转储分析 855 Notmyfault 855 基本的崩溃转储分析 856 ...
  • 此处提供的是Windows 程序设计(第5版)(上、下册)随书光盘 该版本提供了下册详细目录可以快速查阅(当然已经提供详细书签) 基本信息 原书名: Programming Windows (Fifth Edition) 原出版社: Microsoft ...
  • 2020-10-24

    2020-10-24 22:04:20
    debug.exe这个东西可能在几年前还是win的系统上自带的,但是现在而言,至少我的电脑上没有的,如果在网上去找,还是可以找到的,但是还是没有什么用,因为不兼容呀。推荐还是使用vs2019,再装个插件具体细节可以看...
  • 1.5.2,sizeof(int)*p 表示什么意 思?........................................................................18 1.4,signed、unsigned 关键 字...........................................................
  •  其中采用的大多具有代表性的示例,这本Petzold著作为使用 Windows 95、Windows 98或 Windows NT的各级windows程序员提供了最基本的参考和指导。没有经验的开发人员也可以从中获取大量的新知识。     作译者 ...
  • Miniblink保持了10M左右的极简大小,所有同类产品最小的体积,同时支持windows xp、npapi。为什么要做miniblink?市面上作为嵌入的组件的可用的浏览器内核,不外乎这几个:webkit、cef、nwjs、electron。cef:优点...
  • 上篇基本上第一版的修订,只是做了一个调整,那便在兼顾 Windows和Linux两方面用户的基础上,默认在Linux下建立开发环境来编写我们的操作系统。至于这样做的原因,在本书第 2章有比较详细的说明。当然,开发环境...
  • 上篇基本上第一版的修订,只是做了一个调整,那便在兼顾 Windows和Linux两方面用户的基础上,默认在Linux下建立开发环境来编写我们的操作系统。至于这样做的原因,在本书第 2章有比较详细的说明。当然,开发环境...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、...
  • 一种非常简单的语言。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。 PHP虽然很...
  • 在最后:之前发布的Your Uninstaller V7.0.2010.10,用到今天出现注册反弹,无法在重新注册不知道为什么,可能原来的注册码过期了,还是出现其他问题?Your Uninstaller v7.0.2010.30绿色版不知道会不会出现类似...
  • 可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,一篇比较全面的介绍文章。首先有两点需要肯定的:  第一:XML肯定未来的...
  • 14.3 是什么使类成为集合:IEnumerable 392 14.3.1 foreach和数组 392 14.3.2 foreach和IEnumerable 393 14.3.3 foreach循环内不要修改集合 396 14.4 标准查询操作符 397 14.4.1 使用Where()来...
  •  第10STL中的通用算法处理数据  10.1 STL算法中的“四大帮派”  10.2 容器元素的查找与遍历  10.2.1 for_each()算法遍历容器中的数据元素  10.2.2 find()和find_if()算法实现线性查找  10.3 容器元素...
  • 疯狂的程序员

    热门讨论 2012-07-18 18:05:32
    ”其实在学校外头激光打印,每张A43毛钱,到那家公司,就是6块钱,不过因为他代理,就给他算4块钱。这时他才知道,有时候生意就是亏着本也得做。一个月下来,绝影陪了15块钱。土匪他们卖掉100多根笔芯。绝影...
  • 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测 量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称 闸门时间为1 秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的...
  • 但Qt Creator 默认是用动态链接的, 就是可执行程序在运行时需要相应的.dll 文件。我们点击生成的.exe 文件,首 先可能显示“没有找到mingwm10.dll,因此这个应用程序未能启动。重新安装 应用程序可能会修复此问题。...
  • Nehe的OpenGL教程电子书

    2018-04-07 12:25:03
    你将理解两种着色模式,在左图中,三角形光滑着色,四边形平面着色。 注意三角形上的颜色如何混合的。 颜色为OpenGlL 工程增加很多。通过理解平面着色(flat coloring)和平滑着色(smooth coloring),...
  • LINGO软件的学习

    2009-08-08 22:36:50
    一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。 2.3 模型的集部分 集部分是LINGO模型的一个可选部分。在LINGO模型中使用集之前,必须在集部分事先定义。集部分以关键字“sets:...
  • 微软推出的Windows Phone平台微软在移动互联网时代的一个重量级产品,微软对于WindowsPhone7的推广力度非常大,因此很多公司也开始进行Windows Phone7产品的研发,2011年下半年Windows Phone7开发人员的需求将会...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 174
精华内容 69
关键字:

windows10是用什么语言写的