西西河

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

共:💬55 🌺42 新:
全看分页树展 · 主题 跟帖
家园 我来说两句吧

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

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

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

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

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

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

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

元宝推荐:懒厨,懒厨,

本帖一共被 1 帖 引用 (帖内工具实现)
全看分页树展 · 主题 跟帖


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

Copyright © cchere 西西河