在搜索进程相关问题的时候,无意间看到了知乎上面的这个问题,这也是困惑我的问题,只是自己比较懒,没有刨根问底,这次无意间看到了,并且认真看了大神的回答,很受启发,作为记录,贴于此,与各位分享: 来源:知乎  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. java随笔——HashMap与红黑树

    前言: hashmap是一种很常用的数据结构,其使用方便快捷,接下来笔者将给大家深入解析这个数据结构,让大家能在用的时候知其然,也知其所以然. 一.Map 首先,从最基本的讲起,我们先来认识一下map ...

  2. nginx反向代理后abp的webapi host如何获取客户端ip?

    dotnet core 跨平台是微软伟大的创举,脱离iis后服务器成本都降低了. 问题 这不,采用abp搞了个小项目,部署到centos后发现审计日志里面的ip信息不对. 解决 这个问题在.net 4 ...

  3. ASP.NET Core根据环境切换NLog配置

    1.新建NLog配置文件,名称分别为nlog.config和nlog.debug.config <?xml version="1.0"?> <nlog xmlns ...

  4. php—Smarty-缓存2(26)

    一个页面中,有些数据缓存,有些数据不缓存,就是局部缓存 l  $smarty->assign(“var”, “value”, true) 第三个参数:表示是否不缓存 l  {$var nocac ...

  5. 【Oracle 12c】CUUG OCP认证071考试原题解析(35)

    35.choose the best answer View the Exhibit and examine the description of the EMPLOYEES table. Evalu ...

  6. linux防火墙(五)—— 防火墙的规则备份与还原

    一.第一种备份还原用法,使用工具 iptables-save >/opt/iprules.txt iptables-restore < /opt/iprules.txt #注意导入的文件必 ...

  7. Java常见错误及解决方案

    1.类定义未找到:java.lang.NoClassDefFoundError java类文件没有上传:上传了,服务器没找到,建议将JSP页面重新更新或重启服务器. 2.

  8. mysql随机取出若干条记录的实用方法

    1.常见的方法 ; 这种方法可以随机取得数据,但是如果表比较大,数据量很多的时候会很耗时. 2.优化后的方式 ) as t ); 分析,首先根据条件筛选出要选的数据,然后随机排序取出要的条数的id , ...

  9. 核心API的使用(给定一个字符串,统计每个字符出现的次数)

    /** * 给定一个字符串,统计每个字符出现的次数. 如:abdaewrwqask435a1aasd */public class ReplaceString { static int length; ...

  10. 部署到docker容器后图片验证码显示不出来

    Dockerfile如下: FROM openjdk:8-jre-alpineARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["java&qu ...