五千年(敝帚自珍)

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

共:💬55 🌺42
全看树展主题 · 分页首页 上页
/ 4
下页 末页
家园 随便拿本面向对象编程的书看看就知道你是错误的

功能相似,不一定要求代码一样.

邓小平说,白猫黑猫,过得河就是好猫.

只要实现功能就可以了,要追求代码相似实在是太太太难了.

不知道你编过程序没有,有没有看过很多代码.

有时候我看人家的代码,真是感慨,原来代码是可以这样写的(好坏都这样说,呵呵).

家园 抄FreeBSD没有错

但是拿着国家几百万上千万的科研经费去抄FreeBSD,完了还声称是“完全自主开发”就是不对的乐。

家园 错误可能千差万别,但正确的路并不多。

也许你可以写出各种千奇百怪的代码,但正确的实现功能并且高性能的代码设计思路还是很有限的。

再说我一直说得很清楚,我没有说麒麟没有抄袭freeBSD,只是说证据不足。那位澳大利亚读书的人搞的评测方法我认为是有问题的。上面我用同样的比较方法比较了两段文字,虽然是游戏之作,但我认为还是可以说明问题的,据我所知,麒麟团队邀请了这位作者去交流,说可以参观源代码。这起码反映了一种态度。

我的意见是比较源代码才能有效确认麒麟是否自主开发功能多少,如果通过比较二进制代码的方式,这种比较起码要(1)比较两种以上功能用途相似,级别相当,但被确认各自具备独立知识产权的操作系统,比较结果其相似度低于一定标准;(2)至少两次以上分别比较两种相同渊源的操作系统,其相似度达到同样的标准。如果有一种比较方法能够达到以上要求,在比较麒麟和其他操作系统的相似性我认为才有说服力。

家园 没人用的系统没有安全性的概念
家园 一点看法:在事情还没有水落石出之前,可以质疑,但不宜下结论
家园 既然不想别人知道,还弄web服务器干嘛。。
家园 这样心平气和地讨论问题真让人心情愉快

先贴一个链接:麒麟官方承认非独立研发 采用FreeBSD代码 http://tech.china.com/zh_cn/news/company/892/20060518/13328759.html

熊兄的回复里面第一段是故意为之,您也可以全部引用,最后加一句“都是狗P”,效果是一样的:-)。但是你混淆了一个概念,我们是说麒麟抄袭,而并不在于运行结果。换到这里,就是说您的第一段里面包含了多少我的文字,而不是说你我要表达的意思是否一样。如果你全部或者大部分引用了我的文字,而我的文字是有版权的话(这里我声明放弃这段文字的版权:),您的行为就构成抄袭了,而不在于您最后的意思和我是否一样,您的意思和我不一样并不能否认抄袭的事实。

我原先那句话的意思是,如果是独立开发,即使完成同样的功能,其中代码相似的可能性也是很低的。

Freebsd和linux都是open source的项目,这两者之间源代码的差别是多少呢?以下是我的小实验:

先说工具,comparator是ESR在SCO提出linux里面包含SCO copyright的源代码之后写的一个代码段相似度比较的工具。网站在这里http://catb.org/esr/comparator/,遗憾的是我从国内连不上,还好,我在这里http://www.ibiblio.org/pub/Linux/utils/text/comparator-2.5.tar.gz找到了。

FROM MAN PAGE

LIMITATIONS

comparator does not attempt to do semantic analysis and catch relatively trivial changes like renaming of variables, etc.

This is because comparator is designed not as a tool to detect plagiarism of ideas (the subject of patent law), but as a

tool to detect copying of the expression of ideas (the subject of copyright law). Normalizing the code in excessively

clever ways would trespass into the territory of ideas and tend to produce false positives.

The heuristic for eligible files can be fooled, though this is unlikely.

还有其它的,就不摘抄了,反正大家都可以去下载来看

手边有freebsd 4.4的内核源代码,(平时主要是用linux),4.4有点老了,因此我选了linux-2.4.31作为对照方。

#comparator-2.5/comparator -N line-oriented,remove-whitespace,remove-braces freebsd-4.4 linux-2.4.31

这个比较使用了缺省的设置,shred=3,也就是说3行连续的代码相同即视为matched。在大多数情况下,这个shred的设置属于paranoid型。

输出很长,就不全部贴上来了,看个开头吧

#SCF-B 2.0

Filtering: language

Hash-Method: RXOR

Matches: 6476

Merge-Program: comparator 2.5

Normalization: line-oriented, remove-whitespace, remove-braces

Shred-Size: 3

%%

linux-2.4.31: matches=6476, matchlines=122875, totallines=5551411

freebsd-4.4: matches=6476, matchlines=183934, totallines=1587601

%%

freebsd-4.4/alpha/alpha/alpha-gdbstub.c:564:566:753

freebsd-4.4/alpha/alpha/alpha-gdbstub.c:565:567:753

freebsd-4.4/alpha/alpha/alpha-gdbstub.c:566:568:753

freebsd-4.4/alpha/alpha/alpha-gdbstub.c:567:569:753

freebsd-4.4/alpha/alpha/alpha-gdbstub.c:568:570:753

freebsd-4.4/alpha/alpha/alpha-gdbstub.c:569:571:753

linux-2.4.31/arch/sparc64/solaris/signal.c:51:53:425

%%

这个是第一段match的结果,那么我们看看linux-2.4.31/arch/sparc64/solaris/signal.c里面的这一段到底是什么?

41 long solaris_to_linux_signals[] = {

42 0,

43 SIGHUP, SIGINT, SIGQUIT, SIGILL,

44 SIGTRAP, SIGIOT, SIGEMT, SIGFPE,

45 SIGKILL, SIGBUS, SIGSEGV, SIGSYS,

46 SIGPIPE, SIGALRM, SIGTERM, SIGUSR1,

47 SIGUSR2, SIGCHLD, -1, SIGWINCH,

48 SIGURG, SIGPOLL, SIGSTOP, SIGTSTP,

49 SIGCONT, SIGTTIN, SIGTTOU, SIGVTALRM,

50 SIGPROF, SIGXCPU, SIGXFSZ, -1,

51 -1, -1, -1, -1,

52 -1, -1, -1, -1,

53 -1, -1, -1, -1,

54 };

请注意51-53行。

那么freebsd-4.4/alpha/alpha/alpha-gdbstub.c里面这段match的代码是什么?

553 static int gdb2tf[NUM_REGS] = {

554 /* integer registers */

555 FRAME_V0, FRAME_T0, FRAME_T1, FRAME_T2,

556 FRAME_T3, FRAME_T4, FRAME_T5, FRAME_T6,

557 FRAME_T7, FRAME_S0, FRAME_S1, FRAME_S2,

558 FRAME_S3, FRAME_S4, FRAME_S5, FRAME_S6,

559 FRAME_A0, FRAME_A1, FRAME_A2, FRAME_A3,

560 FRAME_A4, FRAME_A5, FRAME_T8, FRAME_T9,

561 FRAME_T10, FRAME_T11, FRAME_RA, FRAME_T12,

562 FRAME_AT, FRAME_GP, FRAME_SP, -1,

563 /* float registers */

564 -1, -1, -1, -1,

565 -1, -1, -1, -1,

566 -1, -1, -1, -1,

567 -1, -1, -1, -1,

568 -1, -1, -1, -1,

569 -1, -1, -1, -1,

570 -1, -1, -1, -1,

571 -1, -1, -1, -1,

572 /* misc registers */

573 FRAME_PC, -1,

574 };

575

显然这两者功能完全不一样,所谓match也不过是语法上的相同,完全不能说是freebsd里面有linux的代码,或者linux里面有freebsd的代码。comparator的报告我碍于手上的工作,没有仔细去对比,方法都在上面,如果有兴趣大家可以自己试试,看看到底哪些地方的代码是×有意义×的相似。

元宝推荐:铁手,
家园 讨论总是令人愉快的,特别是与你这样认真而从技术角度出发的

首先,关于这段文字,我的看法是由于我们关注的领域相同,所以在牵涉到对同一领域的事物的描述肯定有相同的词汇。但是我使用这些词汇的次序、语境与您的的大不相同。所以您不能通过对我使用的词汇与您使用的词汇断定我是抄袭您的文章,即便您不放弃您的版权,也不可能从法律上和实际意义上告我侵权。

麒麟操作系统开发组承认在系统服务层引用、改造了freeBSD5.3的代码,与您引用的文章中声称麒麟不是独立研发的,完全是从freeBSD5.3改造的含义完全不同。

我一直强调,目前无法证实麒麟的整个开发都是盗版行为。如果要想证明这一点,目前看来只有通过完整的比较源码才有效。

仅仅依靠对二进制代码进行对比是远远不能说明问题的。根本在于比较的方式,你可以看到这篇比较作者的原文,在不同的比较方式下麒麟与freeBSD5.3的相似度可以在12%到61%之间,如果加上作者的推论,还可能达到90%以上,跨度这么大,你如何断定比较的有效性?如果仅从二进制代码对比,我是否可以因为大家都是01串的不同排列而认为从代码片断“0”和“1”的引用情况断定其相似度为100%?任何软件对比都是这个结果。这有没有意义?

该文作者自己承认,在使用同样的方法对比两种明确有血缘关系的windows时得出的相似性是很弱的。我认为这充分说明了这种方法的局限性,我个人对使用这种方法得出的结论是持保留态度的。

顺便说一下,看到麒麟网站上介绍,麒麟的开发组是邀请这位质疑人士访问长沙的,并许诺可以看源代码,看项目组工作,但被这位作者婉拒。

家园 换了我也不会去的

1) 没有人说麒麟是整体盗版,我只是认为麒麟应该诚实。做了多少工作就是多少,没必要胡吹(当然为了骗国家的银子除外),有多少所谓的863项目在闷声大发财(兄弟我也曾经担任过一个863计算机软件项目子课题的负责人,算是知道咋回事),麒麟偏偏既得利,还想得名,既做了那什么还想立那什么,跳出来自然要被大家扁。章博士也没有因为做了LVS就号称开发了“自主知识产权”的服务器系统内核,反过来说,LVS如果不是借助了open source社区的力量,今天也不会有这么大的发展和影响力。

2) dancefire的比较不是binary比较,而是反汇编后的asm代码比较,谈不上01串,毕竟是有上下文的。

3) 如果麒麟项目组愿意使用comparator比较一下源代码,把结果公布出来,也还可以当个盾牌。这是正确的回应的办法,linux就是这么回应SCO的。如果不造假,这也很方便,不费项目组什么力气,不暴露任何“保密”内容,也很有说服力;当然麒麟也可以造假(但是以我的恶毒心理,这玩意要造假也够累的,要无中生有很多文件名,文件名还不能瞎编,结果不能随便写,要造假就累S丫的:-)。捂住盖子造假容易,但是一旦掀开盖子,哪怕是很小的一点缝,造假的成本就会成倍上升了。

4)

麒麟操作系统开发组承认在系统服务层引用、改造了freeBSD5.3的代码,与您引用的文章中声称麒麟不是独立研发的,完全是从freeBSD5.3改造的含义完全不同。

麒麟没有说明所谓的“基本内核层”完成了哪些功能,而“系统服务层”又干了些啥。回答这段话我还是直接引用dancefire的原文吧。

首先,麒麟的官方说明中提到“主要是由具有Mach 风格的基本内核层、具有BSD 风格的系统服务层和具有Windows 界面风格的桌面环境组成,前两层在核态运行。”采用Mach微内核层+FreeBSD内核服务层的做法是其一个亮点。微内核构架加上一个成熟操作系统的服务层,是目前比较流行的一个做法,Mac OS X就是这样。在对Mac OS X的xnu内核源代码分析过程中,就可以看到其中的两层内核结构,很清晰。不过在我们反汇编麒麟操作系统内核的分析过程中,竟然连一个与Mach相关的内核函数都没有看到,许多关键的模块也基本上和FreeBSD相同而看不到Mach的身影,因此我们对于麒麟操作系统内核是否真如官方说明所宣称的那样, “具有Mach 风格的基本内核层”,还是抱有很大疑问的。

5)

顺便说一下,看到麒麟网站上介绍,麒麟的开发组是邀请这位质疑人士访问长沙的,并许诺可以看源代码,看项目组工作,但被这位作者婉拒。

坦率的说,麒麟项目组这么做真是傻:如果麒麟真的是“国防科研项目“,国防科研项目的保密要求是什么?凭什么一个在澳大利亚的中国人可以去看源代码?这样的行为是否直接违反了保密要求,允许dancefire去看而不让我看到的依据又是什么?如果不是”国防科研项目“,为什么又总用这个遮羞布遮着。

家园 铁老大此言差矣,每个人都可以有自己的结论

并且为自己的结论辩护。声音如果足够大,上达天听,直到影响到政府介入进行调查,给个它自己的结论,供大家评判。舆论不就是这么影响决策者的吗?投票,听证会都是表达个人意愿的机会,只是俺们没有这样的机会,只好在网上发发牢骚。

我对政府没什么乐观的,陈进现在依然逍遥,天天开着宝马到交大继续上班。

家园 同意

过去科研投入得太少了,人才流失非常严重。现在加大了投入,虽然的确出现了很多不正常的现象,不过学会花钱本来就是需要一个过程的。而且现在的社会环境如此,不可能科研人员中不出现一些败类,不能一杆子打掉一船人。

家园 我瞎猜一下

强调实时性可能是为了应用到一些军事设备的控制系统上面。

家园 其实,到csdn,cu,等一些专业论坛去看看

就知道咋样了。

家园 我来说说

有人的想法是,

用了2进制就是错误的! 最好用3进制,比洋人大一号。

家园 OS这玩意,把内核都搞透了,再做点小改动,称自主知识产权

是没有问题的,称完全自主开发,就有点过了。

完全重写内核,既没有必要,也不会获得全面的性能提升,有源码,在需要的地方做优化就可以了。

这世上私有的OS林林总总,绝大多数都是这么改巴改巴改出来的。

当然了,要是商业上用的,得有办法避开商业风险,如果是国防用途的,能抄出来就得算本事了。

全看树展主题 · 分页首页 上页
/ 4
下页 末页


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

Copyright © cchere 西西河