编写Windows操作系统的工作量有多大?

-安小彡-


我们来看一张图表吧,看了以后你就知道为什么操作系统要叫操作系统,为什么这么多年以来中国在操作系统这样的底层研究领域未能取得重大的进展或者突破了。

从规模、研发投入等方面来看

windows 7操作系统,据微软官方给出的数据,就有超过5000万行代码,并且这套操作系统是微软的平均约40人的25个研发小组历时三年研发出来了,这还只是常规固定的研发团队,但据微软的数据,其实参与到这项工作中,并且是主力研发人员和支持工程师其实已经超过了2500人,研发投入超过了20亿美金,要知道在windows之前已经有了windows XP和windows vista的技术积累,而且windows很多核心代码其实并没有推到windows vista等技术重建。

windows10,macOS,Linux等等代码量、研发资金投入、研发人员投入也是非常大的。Linux发行版Debian的代码量超过了6500万行,macOS的代码量更是超过了8200万行,可以说这个代码量已经很可怕了。

所以这个研发成本是很大的,这里面涉及到人员、资金、时间等等众多的方面,这其中还要走不少的弯路,纠错,可以说每一项都是大工程。

宏观上看,其实投入更大

宏观上看,其实不简简单单的是用了多少人、多少资金、多长研发周期的问题,这样的超级项目,为什么叫做系统工程?

首先你得有一群系统工程师,这群工程师几乎是行业内领域内最好的研发人员,培养这群工程师不过是教育、还是企业都得花太多的成本,而且这是一个周期性的研发+维护性项目,既要保证好兼容性,还要能有新的创新支持新的技术。

除此之外对于windows、macOS、Linux这样级别的生态维护,这都是需要投入非常大的,系统工程为什么说是系统工程,一个系统级别的软件产品涉及到方方面面。我们来看一下微软的windows7研发团队的小组组成。

大到系统架构、底层生态的维护、内核架构、驱动程序、媒体程序、网络应用、开发者生态、应用平台、文件系统、交互体系、图形界面等等,每一项都是大工程、大项目。

我们国家在操作系统、处理器芯片、开发者生态搭建、人工智能领域基础理论等等,很多基础研究领域,我们的差距还很大。我们还需要更完善的教育人才培养体系、更多愿意研发投入的企业、更多愿意从事基础研究的科学家和工程师、以及更多的耐心等等。但是值得惊喜的是,在人工智能领域、应用研发领域我们已经是世界领先,相信以后我们会做得越来越好。


EmacserVimer


举例来说,微软的Windows XP系统有4000万行的代码,Windows Vista和Windows 7 则达到了50000000行代码,接近1000个人参与共同开发,他们分成25个小组每个小组就有约40人,耗时在3年左右。

几千万行代码的工作量是个什么概念?举个参照系吧,很多人在用的金山的WPS代码行数约有150万行,而金山软件公司重写这个级别的办公软件WPS,用了3年时间。现在我们耳熟能详的Windows等操作系统,都是几十年技术积累的产物,绝非凭空冒出来的。

当然,操作系统代码行数并非是越多越好,而是在相同功能的情况下,保障代码越精简越好,比如像塞班的系统代码行数突破3500万行,却因代码的臃肿,对代码的维护性和扩展性都造成了负面影响。

写完代码又是一个费时费力的巨大的工作。如何始终反复的精简代码,保证系统的功能的最优化,值得推敲

想要开发操作系统最难的工作就是你要做一个系统的内核,而系统内核分成很多模块,每个模块的划分、协调不仅要考虑有效性、效率高低、可维护性,还要注重代码的控制、项目的管理、算法的效率、多任务的调度算法、软件架构设计等的方面,是非常复杂的一项工作,需要有非常深厚的技术积累,技术门槛也比较高。

在资金方面,一个成熟的操作系统的开发是很烧钱的,往往延续数年,比如微软在4年前的研发成本超过100亿美元,在开发Windows Vista的所花费的研发费用更是超过了恐怖的200亿美元。Linux内核开发根据人员投入的规模测算,也耗资数有十亿美元。

作系统有一种属性叫做用户粘性,当用户习惯了某一个特定操作系统后,比如Windows,你让他换一种操作系统,甚至同一个OS换一个版本都会难以接受。这也是目前XP也有很大市场占有率的原因。

,都要从新学起,很多人就觉得很麻烦,这也是为什么微软已经发展到Windows 10了,Windows XP在中国依旧有庞大的


快科技问答


形象点说,如果是编写Windows10,把BAT的高手集合起来写5年也写不好,编写操作系统主要是两点,一点是要有非常厉害的大牛负责整体架构的设计,一个是大量的编码工作,负责如此大的软件工程是非常难的,还有测试工作。

你可以看下Windows8的架构,包含非常多的,有些答案说内核是最难的,其实并不是,这么说的人一定是不懂软件的。操作系统的核心非常重要,但是并不是最难的,操作系统的内核有很多开源的,Linux kernel还有freeBSD等都可以参考,Windows10的内核也是非常厉害的,个人认为比Linux kernel还厉害。

最难的问题建立在内核上的各种服务还有接口,工作量巨大还需要长期的完善,据说Windows 7 的代码量达到了5000万行,直接参与人员有1000人,分成了25个小组,耗时3年。要知道这是建立在微软这么多年操作系统开发经验的基础上的,不是随随便便找几个大牛就可以的。


萌哈科技


其实,Windows系统的编写工作量并不大,但是想要成型,工作量就很大了!


编写Windows系统?不如说是编写Windows核心!

对于一个系统而言,就和盖房子是一样的,只要打好地基,就很容易向上累积,所以实际上,Windows系统的内核才是这个系统剥去外衣后真正的样貌。

所以,编写Windows系统的关键和难点就在于编写Windows系统的内核,所幸,Windows XP之前的系统内核(比如win95,98)并不是微软编写的,它使用的是DOS系统内核,我们可以把它看做是使用Linux内核的安卓系统或者是Ubuntu,内核系统在计算机学范畴上实际上指的是最基础的可以利用各种代码调用硬件的接口的微型系统,比如在DOS下,虽然没有文件管理器这个界面,但我们依然可以使用各种DOS命令完成这一任务。

但是我们尚不知道在比尔·盖茨买下DOS系统更改为MS-DOS之前,DOS系统到底编写了多久,但我们可以参照Linux的发展来看看到底有多难。

Linux的过去,Unix仅由几人开创

Linux是基于Unix内核的修改版,可以看做类似于Windows的系统发展史,而Unix基本内核第一版仅由Unix之父Ken Thompson(左)和其同事Dennis Ritchie(右)共同利用汇编语言编写而成。

到了1973年的时候,Ken Thompson 与Dennis Ritchie感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版,对于当时完全以汇编语言来开发程序的年代,他们的想法算是相当的疯狂。一开始他们想尝试用Fortran,可是失败了。后来他们用一个叫BCPL(Basic Combined Programming Language)的语言开发,他们整合了BCPL形成B语言,后来Dennis Ritchie觉得B语言还是不能满足要求,于是就改良了B语言,这就是今天的大名鼎鼎的C语言。

于是,Ken Thompson 与Dennis Ritchie成功地用C语言重写了Unix的第三版内核。至此,Unix这个操作系统修改、移植相当便利,为Unix日后的普及打下了坚实的基础。而Unix和C完美地结合成为一个统一体,C与Unix很快成为世界的主导。

之后就不算是内核的重写,而是系统的开枝散叶了,不再做介绍。

既然如此,那为什么现在做不到重写一个Windows10?

小编一开始就说过,系统内核是系统的灵魂部分,但这不代表只要有灵魂这个系统就能活起来,作为地基,想要正常的居住就必须在上面无数次迭代更新建房子,仅微软为了Windows 7(64位版本)重写的核心(从这一版系统开始出现小范围64位),就耗费了数万微软程序员的心血,另外XP升级到vista的内核,也造成了显而易见的问题,抛弃之前成熟系统内核带给了Vista效率下降50%以上的问题,直到Windows 7才有所好转,这也就说明,地基不是想重做就重做的!

想写一个Windows10对于个人而言是不可能完成的事情,为什么Windows98的系统还要占0.8G左右的空间,归根结底是因为除了MS-DOS的系统内核以外,还有数以万计的各类扩展库(DLL)和应用程序(EXE),这些东西的作用是将复杂的DOS命令简单化,让其他高级语言的使用者可以直接调用系统API从而更高效的完成应用,比如C语言里想要使用图片显示在DOS窗格,就要调用系统GUI参数才可以做到,所以个人或许可以重写一个系统内核,但是没有相应的扩展库和调用接口,就不能产生大量的生态软件,这就是为什么微软的移动系统会失败的原因。


aliquis


编写Windows 操作系统的工作量是大于阿波罗登月计划的!


首先说说代码量,假如一个桌面级的操作系统代码规模在千万行数量级,如果加上配套软件,总规模应该超过一亿行,如果再加上一个完整的软件生态系统,那么总规模应该不少于十亿行。这还是成熟的系统,再加上调试精简前更多。再加上各个功能之间需要兼容性,可维护性,可管理性等这些随着代码的越来越多可推敲,需考虑的问题也会越来越多,是项技术难度非常大的工作!

再说一个直观一点的道理吧:是不是说会盖5层楼房,只要投入2倍的人力物力财力就可以盖出10层楼房?显然不可能仅仅是2倍。或者盖5层楼房需要一年,那么投入两倍的资源,是不是半年就可以搞定?显然也不会是2倍这么少。 同样的,能开发一个软件,和开发一个完整的操作系统的难度相比困难也在这里。 可惜很多人都认识不到这一点,把软件开发当成是1+1=2这么简单的事情了,随着系统的越来越复杂,臃肿,开发难度也越来越大!

微软,一个公司就有将近10万员工,当年有Windows95、Windows98等系统的技术积累的情况下,依旧集中了5000余名程序员开发历时两三年才开发出Windows XP。


热门笑话百科


就目前开发工具来说,重新开发一个操作系统有难度,但并非你们说得难到中国人做不到;之所我们没有,那是因为专利壁垒和系统生态环境,微软不允许任何人开发出兼容Windows软件的操作系统,你要开发自己的操作系统,你就必须自己打造你的上下游生态链,这才是最难的,因为你不这样做就没有人为你的系统开发应用软件,没有应用软件谁来用你的系统呢,Linux在桌面系统市场很小就是因为这个原因,它只能走服务器道路;现在Windows在移动端市场很小也是因为安卓系统和苹果系统的生态系统比他强大所致。中国也有自己的操作系统,但都是专用的,比如超算中心用的,还有华为有些路由器用的,等等


wooo2


简单来说下,软件开发的工作量一般以一个程序员工作一年为单位即“人年”,像微软公司开发xp的初期版本为三千到四千人年,这还是xp的内核只是个升级版,不包括系统测试人员,也不包括开发工具等配套软件。

所以一个像MacOS和windows可以产生完整生态的系统,工作量以几万人年起步,如果我国从头开始开发国产操作系统,保守估计工作量在五万人年,发展到成熟稳定的版本没有十万人年下不了线。


玩鲕2oo8


只能说这么多行代码水分很多。比如用VC,写个简单的HELLO WORLD,IDE自动为你生成的代码就至少数百行。再比如IF一行,刮号一行等等,个人觉得要除10才能基本体现代码量


immortalknight


算法才是软件的灵魂,写出简洁实用高效的算法很费劲,关系到软件的成败。操作系统也是软件,把01的基础语言改进成图形化多样(元)化的接口去管理着硬件。同时,也有去适应新的网络功能,硬件功能,新的应用领域的程序应用开发和兼容。应用越广越通用,编写越复杂。比如,手机上的APP都是各类软件,要界面丰富并不断增加实用功能就要不断去开发测试到升级,APP的容量也不断增大。操作系统要适应各种硬件,外接设备,应用行业,学科领域,就要不断增加‘自我学习’。


九M


所以,经常看到有人问为什么中国不能出自己的操作系统,这真的是一项极为艰巨的工作。这方面老美的企业确实是先驱,几十年连续那么大量的投入和维持盈利的商业模式,基本上属于私营企业行为,生态系统越来越完善和庞大,如今即使别人想去颠覆都很难。


分享到:


相關文章: