开发一个 Windows 级别的操作系统难度有多大?

在搜索进程相关问题的时候,无意间看到了知乎上面的这个问题,这也是困惑我的问题,只是自己比较懒,没有刨根问底,这次无意间看到了,并且认真看了大神的回答,很受启发,作为记录,贴于此,与各位分享: 来源:知乎  http://www.zhihu.com/question/24960401

问题:

新闻说中科院要研发中国自己的桌面操作系统,由国家投资,1年内做出一个桌面操作系统,3年做出移动操作系统,做出中国人自己的系统来保证信息安全什么的。作为文科生,真的是完全的外行。想知道在不考虑市场占有率,商业运作,产业生态等因素的情况下,举国之力到底能不能开发出跟三大主流系统一样的操作系统?难度有多大?需要多少时间?

回答:

作为一个曾经在国内某大型操作系统研发企业(获得国家核高基支持)工作过的人士表示:国内开发的绝大多数国产操作系统基本都是基于开源操作系统之上,进行二次开发的结果。一般而言,二次开发的代码量(实际属于操作系统范畴的代码)不会超过操作系统总代码量的1/10。且往往远远小于这个数值——不超过1/100。

这里的开发单位包括所有国内企业和绝大多数的科研单位及院校。
而开源操作系统(未必是免费软件),无一例外,都不是国产软件(尽管该软件的开发者中可能包含个别中国藉的开发者)。

在其它评论中 @时国怀 先生及某位 匿名用户 分别从操作系统生态及操作系统本身的技术难度两个方面来探讨国产操作系统开发的困难。无论两位的证明是否充分,个人认为,这两个角度都是合理的。更准确的说,在正常情况下,从零开始制造一个操作系统,在当下中国是不切实际的。当然,在题主所谓的『不考虑市场占有率商业运作产业生态等因素的情况下,举国之力到底能不能开发出跟三大主流系统一样的操作系统』这种极端情况下,基本是没有难度的,但会耗时巨大

下文主要是针对正常情况来讨论。这里主要是清理一些误区。

首先,完全国产操作系统是没有意义的。软件是可以被无限制复制和再利用的资源。在不考虑知识产权的情况下,所有人都可以任意复制一个程序并使用。这一过程和重新建造一个摩天大厦不同,因为我们不需要重新准备数百上千吨钢筋水泥。成本极低。在这个意义上,重新开发一个和别人功能一样的软件,毫无意义。特别是这个软件是开源的免费的,而且往往也比某个封闭机构(企业或科研院所)开发出的更有效率。简单来讲,重新开发一个免费软件和造一架超音速飞机完全是两码事。前者的所有核心技术都可以免费获取,而后者的核心技术被掌握在外国军工企业手中。研发后者可以让我们掌握核心技术,而研发前者我们能获得什么?所以,在软件的语境下,讨论『国产』,和别的制造业中的『国产』,具有不同的意义。

其次,基于免费软件的二次开发有时也可以是一种自主创新,而且也完全可以陪养出一个生态系统。安卓系统就是利用Linux内核进行二次开发的(iOS好像原本也是基于UNIX的)。但我们一般认为安卓系统是由谷歌公司所开发。且已成功被运用到大量移动设备上。它的App Store则是一个庞大的移动生态圈。所以,我们完全可以想象,如果没有安卓,百度凭借它的技术实力,在Linux内核上开发了一个移动操作系统,且像阿里巴巴那样培养出了一个产业链。——这在技术上商业上都是可能的。只不过我们没有国外公司那样的前瞻性,所以每次都错过了这种机会。

第三,还有一种情况,就是操作系统的学术研究。目前,革命性的操作系统研究发生在中国的可能性不大。也就是说,因为技术革命,导致所有操作系统过时,需要推翻包括Linux内核在内的所有操作系统内核,重写一个新一代操作系统的可能性,不太会发生在中国。所以,国产操作系统基本没有任何理由需要重写一个内核。直接使用Linux内核并在其上进行二次开发才是合理(合乎软件工程)的选择。对于操作系统的局部的研究成果(例如某个操作系统模块的改进),就更不需要重写整个内核了。通常研究者也没有这种精力。所以局部的改进只需要开发某个内核模块,且很快会被开源社区采纳,加入到最新版本的Linux内核中。这类改进亦有不少出自中国藉的开发者之手。总之,短期内Linux内核被淘汰掉的可能性不大。即便发生,也不太会由中国某个单位来主导。

最后,作为一个曾经的业内人士,我想说大家都错误的理解了国产操作系统的意义。国产操作系统除了有部分『骗钱』的嫌疑(有时并非真骗,而是因为缺乏市场化,往往不能用最有效率的方式来进行,这在国内是常态)外,主要是为了使现代操作系统的技术能够被完全掌握,而不是真的为了开发出一个能和某某国外系统抗衡的操作系统。例如有能力针对一些国防需要进行深度定制;发现并消除一些可能的安全隐患;政绩工程或项目需要(必须使用国产设备)。此类需求多而杂乱。当然,不排除某些项目就是在骗钱。像问题中的『安全』就有可能只是个由头,也有可能是某些国家部委的需求(记得墙吗?)。所以,在当下中国,民用操作系统的开发是缺乏商业动力的

所以,总结一下:

  1. 从零开始重新开发一个操作系统是没有意义的,请不要用这一标准来定义『国产操作系统』
  2. 我们在技术上商业上具有开发一个(至少在中国)有影响力的操作系统的能力
  3. 从近期看,操作系统的变革不太可能发生在中国,这意味着下一代操作系统依然是国外主导的可能性很大(换而言之,所谓从零开始的操作系统可能还是轮不到我们);
  4. 目前国产操作系统主要还是面向特定领域(国防、政府、国有企业等)的。

最后要再补充一点:技术是无国界的。所以,所谓『国产』本身就错误的理解了现代技术发展。Linux内核就是由世界各地的技术人员开发和维护的。它本质上不属于任何国家。微软、谷歌、苹果这些国际化的大企业也是由来自世界各地的工程师们共同进行技术开发的。同时它们的国际影响力才使得它们的产品普及全球。正常情况下,技术属于一家公司而公司不属于任何国家。所以,我们真正需要的是一个国际化的本土企业。只有这样的企业才能拥有全球的人力资源来进行技术研发,全球的市场来销售它们的产品,以及全球的影响力来培植一个生态环境。没有这样的企业来主导,我们永远不可能开发出一个有影响力的国产操作系统。——这和内核是谁写的,或者有没有生态可能根本没有任何关系。

时间: 2024-07-28 20:30:39

开发一个 Windows 级别的操作系统难度有多大?的相关文章

第一个Windows Phone 8 程序开发之后台音频播放

对于播客的音频应该是连续多个的列表,作为在后台连续播放.在网上搜了一下,通过wp8后台音频代理播放,而且例子都是静态的播放列表,不满足动态生成列表播放. 尝试着将播放列表对象声明为公有静态的,在外部对列表进行操作,发现这个静态的播放列表在agent里和我的操作类不是同一个引用,此方法行不通. 最后在 http://www.devdiv.com/forum.php?mod=redirect&goto=findpost&ptid=199381&pid=960706 找到了思路: 在wp

一个Windows 系统究竟有多复杂?

一个Windows 系统究竟有多复杂? 来源:开发者WEB Microsoft Windows问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统. 下面我们从代码行数.开发难度,参与人员的数量,开发的时间长度等角度来说说,一个windows系统有多复杂. Windows XP 大约40,000,000行代码. Windows Vista 大约50,000,000行代码. Windows 7 大约

【如何快速的开发一个完整的iOS直播app】(播放篇)

前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流url,就能播放直播啦 本篇主要讲解的是直播app中,需要用到的一个很重要的开源框架ijkplayer,然后集成这个框架可能对大多数初学者还是比较有难度的,所以本篇主要教你解决集成[ijkplayer]遇见的各种坑. 很多文章,可能讲解的是如何做,我比较注重讲解为什么这样做,大家有什么不明白,还可以

如何快速理解一个全新的嵌入式操作系统(续)

---基于TI CC254X OSAL的分析 当工具链配置完成后,SourceInsight向你展示一份源码工程,不借助百度和开发文档,能否在一两个小时内理解源码的组成框架和接口,进行快速开发? 上一篇<如何快速理解一个全新的嵌入式操作系统>我们已经分析了如何快速理解OSAL的任务调度和任务间通信(其实OSAL只是酷似多任务操作系统的单任务系统),再理解好OASL的消息产生和处理过程,我们就能够进行快速开发了. 一.消息的来源 嵌入式系统的消息包括两种,一是系统消息,包括低电.热插拔等,由系统

13 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件  queue队列 生产者消费者模型 Queue队列 开发一个线程池

本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池 操作系统发展史 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式. 手工操作程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把

【物联网(IoT)开发】使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关

上篇"[物联网(IoT)开发]Arduino 入门 Hello World(LED闪烁)"只是通过将一段程序烧录到Arduino开发板上控制LEC闪烁,没有任何连网动作,也就是说断开网络提供电源依然还可以工作.本文将介绍如何开发一个应用程序,以便使用适用于物联网 (Internet of Things, IoT) 的技术.我们的应用程序通过串口收集数据,将其存储在一个 Web 服务器上,然后在网页上实时显式结果,并可以在网页上控制LED的开关. 构建一个类似的应用程序的前提条件 对于第

创建第一个windows服务

windows服务应用程序是一种长期运行在操作系统后台的程序,它对于服务器环境特别适合,它没有用户界面,不会产生任何可视输出,任何用户输出都回被写进windows事件日志. 计算机启动时,服务会自动开始运行,他们不要用户一定登陆才运行. 可以通过选择菜单"开始"-〉"控制面板"-〉"管理工具"-〉"服务"来查看现有系统中的服务,如下图: 创建一个windows服务 切换到代码视图修改. using System; using

如何快速理解一个全新的嵌入式操作系统

---基于TI CC254X OSAL的分析 当工具链配置完成后,Source Insight向你展示一份源码工程,不借助百度和开发文档,能否在一两个小时内理解源码的组成框架和接口,进行快速开发? 在笔者过往撰写的博文中,一直在倡导两个嵌入式学习和开发理念:提高嵌入式系统架构和软件层次形成大局观:掌握从需求的角度去理解新系统和技术这个方法论.在软件大局观作为学习新系统的背景知识的基础上,从软件需求的角度入手就能快速理解和掌握一个全新的系统.本文以TI蓝牙BLE CC254x的源码库和工程为例进行

python 开发一个支持多用户在线的FTP

### 作者介绍:* author:lzl### 博客地址:* http://www.cnblogs.com/lianzhilei/p/5813986.html### 功能实现 作业:开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp server上随意切换目录 允许用户查看当前目录下文件 允许上传和下载文件,保证文件一致性 文件传输过程中显示进度条 附加功能