FreeBSD 與中國麒麟作業系統 (Kylin)
這叫做 OS 的基因譜系分析嗎 ?
剛看到 jserv 那邊提到一篇有趣的文章,分析了傳說中 中国独立研发成功的、具有完全自主知识产权的服务器操作系统
,也就是 麒麟作業系統 Kylin
。類似的問題,差不多去年的這個時候也有人提過,不過當時做的只能算是定性分析,而今天看到的這個則可以算是定量分析了。
他做的這個分析,我的感覺是和生物學上面的基因比對或是建立物種間的遺傳譜系的感覺很像,把 kernel 的 object 檔拿出來 dis-assemble 成組合語言碼,然後經過適當的整理後進行比對,用相似程度來判斷兩個 kernel 間的血緣關係。在真正分析 Kylin 之前,他首先要證明這個血緣比對的方法是有意義的,怎麼證明呢 ? 他先拿 FreeBSD 的不同版本 (5.0、5.1、5.2、5.2.1、5.3、5.4、5.5、6.0) 來比,用以解釋版本演進時的相似程度變化;接著拿 FreeBSD、OpenBSD、NetBSD 來比較,也可以約略看得出三者間的分支關係;最後的主菜就是拿 Kylin 出來比,發現 Kylin 和 FreeBSD 的 5.x 版間的血緣關係很濃,這兩者的相似性比 OpenBSD 和 NetBSD 的相似程度還高 (大家都知道 OpenBSD 是從 NetBSD 分出來的吧… ?),這和先前的猜測很接近,顯然有進一步了解的必要。
在進一步的分析中,用 Kylin 的各版本和 FreeBSD 5.x 的各版本來做比較,發現 Kylin 2.0.0 和 FreeBSD 5.3、5.4 的相似度相當高,約接近 60%;而在對 FreeBSD 的 kernel 重新 config、加進 Linux 和音效的支援後,它和 Kylin 間的相似度有了小幅的上揚;另外,作者也比較了 FreeBSD 同一版本但是不同 config 所編出來的 kernel 有可能會有多大的差異,藉此了解可能產生的誤差。
在結語的地方,他提出了一個假設:他認為 Kylin 可能是一個 FreeBSD 加上 kernel-based web server,或許還有一些其他的 patch,另外還加掛了很多 module (例如音效支援)。另外,在附註的地方,他還做了 function name 的分析,FreeBSD 5.3 共 14101 個 function、Kylin 2.0 共 14399 個 function,而他發現 FreeBSD 5.3 有而 Kylin 2.0 沒有的 function 共 4 個、Kylin 2.0 有而 FreeBSD 5.3 沒有的 function 共 302 個 (但是其中有 223 個有出現在 source code 裡面,可能是因為 config 不同所以沒進到 kernel 中)、最終只有 79 個是 真的只有 Kylin 2.0 獨享的
。不過他也說了,function name 相似和 logic 相似是兩回事,雖然說 79 vs. 14399 是相當驚人的比例,但是這個的重要性遠不如本文裡面的程式相似度分析,故放在附註以供參考。
我自己的感想喔… 我是覺得,這有可能是 上海交大漢芯事件
的翻版,一個搞硬體一個搞軟體 XD 再加上今天的另一則新聞,好像有點讓我對自己的猜測更有信心 XD
Comments
Pingback from free :: FreeBSD 與中國麒麟作業系統 (Kylin)–國生三年才開始 :: April :: 2006
Date: 2006/04/29, 8:31 上午
[...] 原文:國生三年才開始 這叫做 OS 的基因譜系分析嗎 ? 剛看到 jserv 那邊提到一篇有趣的文章,分析了傳說中 “中国独立研发成功的、具有完全自主知识产权的服务器操作系统”,也就是 “麒麟作業系統 Kylin“。類似的問題,差不多去年的這個時候也有人提過,不過當時做的只能算是定性分析,而今天看到的這個則可以算是定量分析了。 他做的這個分析,我的感覺是和生物學上面的基因比對或是建立物種間的遺傳譜系的感覺很像,把 kernel 的 object 檔拿出來 dis-assemble 成組合語言碼,然後經過適當的整理後進行比對,用相似程度來判斷兩個 kernel 間的血緣關係。在真正分析 Kylin 之前,他首先要證明這個血緣比對的方法是有意義的,怎麼證明呢 ? 他先拿 FreeBSD 的不同版本 (5.0、5.1、5.2、5.2.1、5.3、5.4、5.5、6.0) 來比,用以解釋版本演進時的相似程度變化;接著拿 FreeBSD、OpenBSD、NetBSD 來比較,也可以約略看得出三者間的分支關係;最後的主菜就是拿 Kylin 出來比,發現 Kylin 和 FreeBSD 的 5.x 版間的血緣關係很濃,這兩者的相似性比 OpenBSD 和 NetBSD 的相似程度還高 (大家都知道 OpenBSD 是從 NetBSD 分出來的吧… ?),這和先前的猜測很接近,顯然有進一步了解的必要。 在進一步的分析中,用 Kylin 的各版本和 FreeBSD 5.x 的各版本來做比較,發現 Kylin 2.0.0 和 FreeBSD 5.3、5.4 的相似度相當高,約接近 60%;而在對 FreeBSD 的 kernel 重新 config、加進 Linux 和音效的支援後,它和 Kylin 間的相似度有了小幅的上揚;另外,作者也比較了 FreeBSD 同一版本但是不同 config 所編出來的 kernel 有可能會有多大的差異,藉此了解可能產生的誤差。 在結語的地方,他提出了一個假設:他認為 Kylin 可能是一個 FreeBSD 加上 kernel-based web server,或許還有一些其他的 patch,另外還加掛了很多 module (例如音效支援)。另外,在附註的地方,他還做了 function name 的分析,FreeBSD 5.3 共 14101 個 function、Kylin 2.0 共 14399 個 function,而他發現 FreeBSD 5.3 有而 Kylin 2.0 沒有的 function 共 4 個、Kylin 2.0 有而 FreeBSD 5.3 沒有的 function 共 302 個 (但是其中有 223 個有出現在 source code 裡面,可能是因為 config 不同所以沒進到 kernel 中)、最終只有 79 個是 “真的只有 Kylin 2.0 獨享的”。不過他也說了,function name 相似和 logic 相似是兩回事,雖然說 79 vs. 14399 是相當驚人的比例,但是這個的重要性遠不如本文裡面的程式相似度分析,故放在附註以供參考。 我自己的感想喔… 我是覺得,這有可能是 “上海交大漢芯事件” 的翻版,一個搞硬體一個搞軟體 XD 再加上今天的另一則新聞,好像有點讓我對自己的猜測更有信心 XD Comments » [...]
Comment from PipperL
Date: 2006/04/30, 12:40 上午
關於該文的分析方式,作者有提到:「我曾考慮採用常用於字符串相似度比較的編輯距離(Levenshtein Distance)算法……這個算法主要是應用在DNA分析、拼字檢查、語音辨識和抄襲偵測上…… 但是這個算法的計算複雜度太高」
所以他後來是先過濾noise(2.1.2, 2.1.3),再交給 diff 去處理,然後再分析 diff 之後的結果….
Trackback from HEMiDEMi
Date: 2006/04/30, 12:53 上午
HEMiDEMi – 共享書籤…
國生三年才開始 » FreeBSD 與中國麒麟作業系統 (Kylin)…
Write a comment