在搜索进程相关问题的时候,无意间看到了知乎上面的这个问题,这也是困惑我的问题,只是自己比较懒,没有刨根问底,这次无意间看到了,并且认真看了大神的回答,很受启发,作为记录,贴于此,与各位分享: 来源:知乎  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内核就是由世界各地的技术人员开发和维护的。它本质上不属于任何国家。微软、谷歌、苹果这些国际化的大企业也是由来自世界各地的工程师们共同进行技术开发的。同时它们的国际影响力才使得它们的产品普及全球。正常情况下,技术属于一家公司而公司不属于任何国家。所以,我们真正需要的是一个国际化的本土企业。只有这样的企业才能拥有全球的人力资源来进行技术研发,全球的市场来销售它们的产品,以及全球的影响力来培植一个生态环境。没有这样的企业来主导,我们永远不可能开发出一个有影响力的国产操作系统。——这和内核是谁写的,或者有没有生态可能根本没有任何关系。

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

  1. 开发一个不需要重写成Hive QL的大数据SQL引擎

    摘要:开发一款能支持标准数据库SQL的大数据仓库引擎,让那些在Oracle上运行良好的SQL可以直接运行在Hadoop上,而不需要重写成Hive QL. 本文分享自华为云社区<​​​​​​​​​ ...

  2. 使用 WPF 开发一个 Windows 屏幕保护程序

    最近有小伙伴问我如何可以让 Windows 静置一段时间不操作之后,显示一个特殊的界面.我想了想,屏幕保护程序可以做到这一点,而且,屏幕保护程序的开发也是非常简单的. 本文将介绍如何为 Windows ...

  3. Windows Phone 8初学者开发—第3部分:编写第一个Windows Phone 8应用程序

    原文 Windows Phone 8初学者开发—第3部分:编写第一个Windows Phone 8应用程序 原文地址: http://channel9.msdn.com/Series/Windows- ...

  4. 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务

    [源码下载] 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后 ...

  5. 与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室

    原文:与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...

  6. 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室

    原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...

  7. 开发一个 app 有多难?

    171 个回答 默认排序​ 道衍天机 有事情的加微信1293190838找我 1,150 人赞同了该回答 ----------------------------------------------- ...

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

    原文转自:袁峥Seemygo    感谢分享.自我学习 前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkpl ...

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

    ### 作者介绍:* author:lzl### 博客地址:* http://www.cnblogs.com/lianzhilei/p/5813986.html### 功能实现 作业:开发一个支持多用 ...

随机推荐

  1. ASP.NET 生成缩略图片类分享

    /// <summary> /// 生成图片缩略图 指定文件路径生成 /// </summary> public static void SaveImage(String fu ...

  2. CSharp读取json配置文件内容

    步骤 读取配置文件转换成字符串,代码如下 string contents = System.IO.File.ReadAllText("config.json"); 注意:该语句会抛 ...

  3. 在VC++中执行VBS代码

    此代码来自https://blog.csdn.net/zhu2695/article/details/13770671 作者: zhu2695   时间:2013年10月31日 13:08:41 #i ...

  4. Java50道经典习题-程序14 求日期

    题目:输入某年某月某日,判断这一天是这一年的第几天?分析:(1)以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天 (2)特殊情况,闰年2月份的天数是29天,否则是28天 impo ...

  5. KVM到KVM之v2v迁移

    1.源KVM虚拟主机node1 (1).查看源KVM虚拟主机上的虚拟机列表,本文计划将oeltest01虚拟机迁移到其它KVM虚拟主机中. (2).查看oeltest01虚拟机磁盘文件位置/data/ ...

  6. 关于OI中简单的常数优化

    有些东西借鉴了这里qwq 1.IO(istream/ostream) 输入输出优化 之后能,在赛场上常见的几种输入输出: 输入: $1.cin$ 呵呵,不说什么了,慢的要死.大概$1e8$个数要读1分 ...

  7. jmeter+ant+jenkins+mac报告优化(二):添加90% Line和QPS

    一.优化内容 1.Summary中只标红Failures数 2.Pages页面按Average Time倒序排序 3.Average Time超过2s标黄显示 4.Pagelist 模块中针对错误和超 ...

  8. 使用X-Pack插件来进行权限控制

    1.为elasticsearch安装X-Pack插件.进入 elasticsearch根目录,执行: bin/elasticsearch-plugin install x-pack杀掉进程,重启es, ...

  9. [CISCO] 简单配置 Telnet 服务

    [CISCO] 简单配置 Telnet 服务 一.Introduction Telnet 协议是一种应用层协议,使用于网际网路及区域网中,使用虚拟终端机的形式,提供双向.以文字字串为主的互动功能.属于 ...

  10. java_对象序列化

    对象序列化(serializable) 序列化读:ObjectInputStream  ois=new ObjectInputStream(new FileInputStream("./gg ...