西西河

主题:【原创】关于麒麟操作系统内核,还想说两句 -- 闲云野熊

共:💬55 🌺42 新:
全看树展主题 · 分页 下页
家园 【原创】关于麒麟操作系统内核,还想说两句

国防科大公布了其自称是完全自己研制的操作系统麒麟2.0,引起了很多质疑,有的人还创造性地搞出了一种对二进制代码进行比较鉴定两种操作系统是否相似的方法(也许我孤陋寡闻,不知道有没有其他人使用过类似方法比较过其它功能相同的软件),并由此得出结论,这个操作系统就是将开源的freeBSD系统汉化而已。随后国防科大课题组承认了其中的系统调用层是基于freeBSD改造的。于是有很多人就感到心里非常难受,并且肆意攻击这些科研人员。心里颇有感慨。想说上一两句。

首先,关于这个麒麟操作系统是不是纯粹抄袭,或者就是freeBSD汉化,我不知道。因为我接触到的有分量的资料太少。我对操作系统的实现细节懂得也很少,没有什么资格评判。本文也不是试图辨别麒麟是否涉嫌抄袭。我仅仅想对操作系统的功能,完成一项技术性科研(不是基础性研究),还有对一些评论提一点自己的看法。有人愿意指教出我的错误我非常感谢。

关于操作系统的内核,我的浅薄的知识是这样的:几乎所有的操作系统内核,需要实现的功能就是进程调度,内存分配,文件系统、IO及IO调度,安全管理。我想不出还有什么可以创新的功能,同时,在硬件相似的环境下,要考虑与其它操作系统兼容,除了安全管理和文件系统,这些功能的实现几个主流操作系统在功能和算法上也是相差无几。文件系统要考虑兼容,所以主要的文件系统大家也都得实现和支持。我没有比较过,但我认为几种主要用途相近的操作系统,相同之处远远大于不同之处。尽管在界面上可能长得很不一样,很多命令的名称也不同,但本质应该是相近的或一致的。我大胆的猜想其内核的二进制代码会有多大差异,例如AIX与HP-UX、Solaris之间?有没有人比较过?

其次,技术型的科研与基础研究不同,基础研究一般不会去做别人做过的事,但技术型科研很可能出现仿制和改进,这似乎不能影响作为自主知识产权的称号。例如我国的FC-1歼击机,似乎没有人指责这种飞机其实是米格21的改型,也没有人因为出口巴基斯坦的FC-1使用了俄罗斯的RD91发动机而被认为是剽窃俄国人的设计,与俄国米格在百分之多少上相似(大家都知道发动机对于一种飞机的重要性)。

在IT界,你做的东西如果与别人都不兼容,基本上是死路一条。所以作为一个想要投入使用的产品,必须与主流产品兼容,所谓兼容,肯定要相似,甚至部分借用。

最后,说道源代码的问题,有人指责说为什么不公布源代码,是否欺骗公众。我想作为一种国防科研产品,是不是要让所有人都看到都得到是个问题,有些人没有看到是否等于没有人能看到。评判是由随便什么人来进行还是由专家(尽管这个词现在不好听)进行,我原本是清楚的,现在糊涂了。望方家有以教我。

关键词(Tags): #麒麟#真假#freeBSD#抄袭#科研
家园 agree with you
家园 说两句

AIX与HP-UX、Solaris之间

肯定完全不同,因为不同CPU指令集,机器码一级就不一样。

在IT界,你做的东西如果与别人都不兼容,基本上是死路一条。所以作为一个想要投入使用的产品,必须与主流产品兼容,所谓兼容,肯定要相似,甚至部分借用。

兼容应当是符合相同的标准,遵守相同的协议。结构特别是代码的相似不是必要条件。

仿造本来主要是专利问题,但在这个例子中并不是很严重。

我认为最重要的是诚信问题。如果国家立项,分配资金、人力要做的就是自主设计的操作系统,而实际是一个大部分仿制的操作系统,那么这些资金和人力到底做了什么?安全上的漏洞、系统的弱点是否在切实掌握之中?最少课题组的负责人和验收人员心里要有数。

家园 不公布代码问题不大

因为FreeBSD采用的授权方式是BSD,而不是GPL。如果对不了解这些概念,可以大概看一下这个

外链出处)。骐驎的问题是,拿钱、评奖的根据在哪里,科技拨款和评价应该在何种程度上公开与透明(其实作为通用操作系统,保密的理由实际上不成立),反映的是公众对上述过程的不信任。具体到这个项目,衡量工作其实很简单,把基于FreeBSD之上自己打的patch拿出来就行了。

家园 兄弟也来说两句

兄弟对操作系统的认识,可以说还没有入门,说错了请老兄不要见怪。

不错,几乎所有的操作系统都是内核都是处理进程调度,内存分配,文件系统、IO及IO调度,安全管理等事情,但是实现起来,真的可以说千差万别。因为硬件不同,底层的指令一定不同,这个就不必说了。我比较一下window的内核函数和Linux的内核函数,发现就是名字,参数也有不少区别,window里面怎么实现就不知道了,不过应该和Linux是不大一样的。

如果能证明麒麟操作系统的内核不但和freeBSD相似,还和其他操作系统相似,那么就证明了所有的操作系统都是实现这功能的,这不能算是抄袭。否则,和其他操作系统不相似,就是单单和开源的freeBSD相似,怎么说都有点说不过去。

家园 让我比较困惑的是,为什么要弄“自主的”操作系统

开源软件因为开源的缘故,任何人都可以免费使用。就使用的角度上来说,并不会有什么限制。

如果说安全性方面。就目前而言,安全的重点,似乎已经不再是在代码那一层上,而更多的是使用、配置上面的漏洞。更主要的是,因为是开源的软件,如果系统本身的代码有问题,每时每刻都会有人有可能找出漏洞来,这种漏洞,也会随时被人修正。在这样的模式下,很难说“自主开发”的操作系统会比开源的操作系统有安全上的优势。

家园 不然怎么写报告要钱呢?

说自己是改的能要到7000万?

家园 我来说两句吧

首先,我不是操作系统的专家,对操作系统的经验主要限于操作系统里面网络部分的内核,--曾经在8位微处理平台上写过一个比较完整的从网卡驱动到socket层的stack。过程中主要参考了alan cox的net3源码,一开始想从那里起步来往小里改,但是后来发现因为资源差别太大,还不如从头自己写。以我的经验,各操作系统的具体实现差别可以很大,即使大家都是实现同样的tcpip协议。与你说的相反,往往是界面上相似(这个往往是有标准的),但内部差别很大。兼容问题也是一样,再次与你想的正相反。兼容需要的只是界面的兼容,内部实现可以千差万别。

那篇分析相似性的文章我又找来看了一遍,可以看出作者有一定基础,也花了很大功夫。我对于他的方法有一些保留,因为他的去噪和排序造成的副作用值得推敲。一般比较被接受的方法是程序结构分析,也就是各函数间的调用关系图和各函数内部的流程分析,不过这些手段对于操作系统往往是太复杂了,是个相当工作量的项目。另外内核编译选项非常之多,源码内还常有各种#ifdef界定的码块可以有选择的编入,很难复制出同样的编译参数。

但是我更看重他文中附录里对函数名的分析。以我对改内核的经验,直觉上麒麟主要是有选择的对原freebsd已有函数内容进行改动,以方便把国防科大的web服务器和一些实时方面的改进整合进来。这样的手法最快最经济。新增加的70几个函数,除去web服务器的,不知道还剩下多少?

又仔细读了一遍报道原文,来推敲一下“自主研发的基本内核层和基于FreeBSD(一种Unix操作系统)改造的系统服务层组成”。系统服务层一般在操作系统概念里都是属于内核的,所以从这里看来似乎麒麟内核有“基本内核层”和“非基本内核层”的说法。那么什么是基本内核层呢?从通用的操作系统架构出发,一般os最基本的功能就是scheduler。结合原文特别提到麒麟实时功能更好,似乎可以推测麒麟的scheduler是自己的,可能还有相关的中断处理。

关于仿,一般是这样的。如果被仿的是对方花大力气保密无处可抄的东西,那么你做出来是你的本事,这个叫“reverse engineering”,业界都是尊重的。但是如果仿的东西原版是公开的东西,那么就应该清楚地说明什么是你改进的,什么是原来的。这个是对原版作者知识产权的起码尊重。如果根本不提原作者,那么当然是赤裸裸的剽窃。如果提了,但是有意模糊改进部分和原作的界限,还是遮遮掩掩的剽窃。即使不公开源码(我个人感觉还是认为原因是不敢),公布个白皮书仔细描述一下哪些部分是改进就这么难吗?

“完全自主研发”在今天的中国科技界被用得太滥了。不错,我相信当初对于母板是openbsd还是freebsd这个决定是“完全自主”决定的。同样不错,bsd license非常松,这样做不会有法律上的问题。但是用这个和不明具体比例的少量改动来大张旗鼓宣传“完全自主”“局面将被改变”就早已超出了搞技术的人尊重事实的基本职业操守。

至于“专家”,恐怕也快是个骂人的词了吧。汉芯的事这么快就忘了?

元宝推荐:懒厨,懒厨,

本帖一共被 1 帖 引用 (帖内工具实现)
家园 有一点不明白

为什么麒麟要突出实时功能?难道不想做通用系统?而且对于Web服务,通用系统应该是可以承受的。莫非要搞大的Data Center?

凑个热闹,也啰嗦几句,现代操作系统的功能只是在理论上一致,具体的实现可能会有很多的不同。单就线程调度来说,基本的思想和教科书上讲的大概一致,但实现起来就五花八门了:数据结构可能不同,队列管理方式可能不同,具体设几个队列也可能不同。这些不同在二进制代码中的区别将会很明显的,尤其是用相同或近似的编译器时。最简单的如果优先级的设置比以前更细致了,比较和跳转应该会相应增加。

就我所知,Windows和Linux的内核实现区别很大,就连Vista和2000之间的差异也是明显的。印象中,Linux和FreeBSD至少在Net Stack上的差距是不小,而Linux内核2.4和之前的版本也有相当的不同。

家园 这位兄台的发言总是很有力量,鄙人敬仰一下

尽管我们在具体意见上可能还有一些分歧。关于操作系统。下面的兄弟有些人提到由于CPU和硬件不同,所以代码肯定不同。这一点我是有异议的。因为UNIX操作系统是用高级语言写的,应该是硬件无关的,至于与硬件有关的部分应该集中在HAL层。

你提到的区别也是在驱动一层,一般操作系统的驱动都会分为两部分,与硬件相关的部分(媒体访问层)和与硬件无关的(协议驱动层)部分。与硬件相关的部分肯定差异较大。在协议实现上可以差别很大,但也可以差别不大。这取决于你的意图。

但是无论实现是否存在算法的差异,但调用的函数,函数经过编译,然后再经过反编译,其结果能不能看出差异,我是持怀疑态度的。例如,所有的IO处理不外乎是从某个地址读一段数据到某个地址。如果指令集相同,你认为会有多大差异?在你能够读懂全部指令的情况下或许你能比较出差异,在你只能一段一段猜测的情况下你读到的相同之处应该多于不同之处。

关于你和那位分析员对麒麟内核的分析,我认为恰恰应该考虑由于麒麟明确声明利用改造了freeBSD的系统服务层,我认为这里面肯定有兼容性的考虑。可以肯定这些函数名称,包括调用方式的一致性。

关于公开源码,我认为你的考虑过于单纯从技术角度出发了,你可以了解一下为什么微软拒绝向我国公布全部windows源码。为什么与其他国家不同对待。

家园 最安全的系统是别人不知道的系统

一开始大家都认为开源的系统不可能留后门,所以更安全。但是随着人们对开源软件的广泛使用,发现问题并不是那么简单。开源软件的模块更新受到的约束较少,更新速度较快,很难经过系统的检验。因此存在漏洞的可能性并不小。开源的特性更使得人们可以更方便的研究这些系统,与商业系统不同的是,这些漏洞被报告的机会并不多,得到重视和有效更新、测试的机会也难说。

家园 你这话就错大了

我认为几种主要用途相近的操作系统,相同之处远远大于不同之处。尽管在界面上可能长得很不一样,很多命令的名称也不同,但本质应该是相近的或一致的。我大胆的猜想其内核的二进制代码会有多大差异,例如AIX与HP-UX、Solaris之间

别说操作系统了,同是c语言,即使最简单的一个语句“a=b+c;”用不同的编译器编译出来的二进制可执行文件都不相同。

家园 嘿嘿,外行看热闹

有些东西不是想当然的.

家园 科研经费太多了

现在国家是钱多的,随便一个项目,几百万几千万的,想用钱砸出一个科技进步。

不说是“自主的”,要这个科研经费就名不正言不顺。

科研开始了“大跃进”,与“人有多大胆,地有多高产”有异曲同工之处。

家园 大胆假设,小心求证

嘿嘿。

全看树展主题 · 分页 下页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河