- 論壇徽章:
- 0
|
轉(zhuǎn)自:
http://tech.ccidnet.com/art/322/20060321/485291_1.html
1。我個(gè)人認(rèn)為作者M(jìn)AX對(duì)Linux的了解不像他對(duì)Solaris那樣深入,我不知道也沒法知道他的下列關(guān)于Linux的內(nèi)容來自自己的代碼閱讀分析還是只是來自第三方的文檔資料而未經(jīng)自己實(shí)地驗(yàn)證;
2。我已經(jīng)盡量符合原意地翻譯了,當(dāng)然中間實(shí)在忍不住的地方也插兩句自己的話;
3。無論是只閱讀這一篇文章,還是看其他東西,我都覺得,保持自己頭腦清醒很重要;
4。謝謝
Max Bruning 是一名教師/資訊專家,他的教授內(nèi)容包括Solaris內(nèi)部組織,設(shè)備驅(qū)動(dòng),內(nèi)核和應(yīng)用的crash分析及調(diào)試,網(wǎng)絡(luò)組織和其他一些特定科目(他的 blog在blogspot,不費(fèi)點(diǎn)勁可能訪問不了,所以也可以看看www.bruningsystems.com)。
在解釋這些子系統(tǒng)在Solaris中是如何實(shí)現(xiàn)的時(shí)候,他的學(xué)生們總會(huì)問“Linux里它是怎么工作的?”或者“FreeBSD里是這樣,Solaris里呢?”這種經(jīng)歷最終讓Max在OpenSolaris網(wǎng)站寫了這篇A Comparison of Solaris, Linux, and FreeBSD Kernels。
文章里討論了調(diào)度,內(nèi)存管理和文件系統(tǒng)架構(gòu)--這3個(gè)子系統(tǒng)在任何操作系統(tǒng)中都有普遍應(yīng)用,而且他們是最well-understood 的組件。
目前很多分析或?qū)Ρ任恼滤玫牟牧霞按a都比較老,與現(xiàn)實(shí)脫節(jié),Max推薦如下幾個(gè)多少比較up to date的網(wǎng)站:
Solaris Vs. Linux
Comparing MySQL Performance
Fast Track to Solaris 10 Adoption
Solaris 10 Heads for Linux Territory
其實(shí)拋開3個(gè)系統(tǒng)之間的差別,他們也有很多相似之處。除了那些不同的命名習(xí)慣,這些OS在實(shí)現(xiàn)不同概念的時(shí)候采用了非常相似的方法。他們都支持線程的分時(shí)調(diào)度,支持最近未使用頁面替換算法實(shí)現(xiàn)請(qǐng)求調(diào)頁,支持虛擬文件系統(tǒng)層允許不同文件系統(tǒng)架構(gòu)。這個(gè)系統(tǒng)里的一個(gè)好概念在另一個(gè)系統(tǒng)里也會(huì)采用。比如 Linux也接受并實(shí)現(xiàn)了 Solaris slab 內(nèi)存分配算法的概念。FreeBSD 代碼里的很多術(shù)語在Solaris里也出現(xiàn)了(快去看看代碼。。。)?紤]到這3個(gè)系統(tǒng)的源代碼都能得到了, fxr.watson.org提供了系統(tǒng)源碼的交叉閱讀瀏覽,可能會(huì)發(fā)現(xiàn)很多有趣的地方。
好了,溫情默默的套近乎結(jié)束,進(jìn)入正題。
調(diào)度和調(diào)度器
Solaris的調(diào)度單位是kthread_t,F(xiàn)reeBSd是thread,Linux是task_struct。抬高一級(jí),Solaris的進(jìn)程是proc_t,當(dāng)然每個(gè)進(jìn)程里的線程就是kthread_t;Linux的進(jìn)程和線程都由task_struct 表示,單線程的進(jìn)程在Linux里是一個(gè)task_struct。單線程的進(jìn)程在Solaris里有一個(gè)proc_t,一個(gè)kthread_t,還有一個(gè)klwp_t表示。klwp_t提供了用戶和內(nèi)核模式線程切換的存儲(chǔ)區(qū)。FreeBSD里的單線程進(jìn)程有一個(gè)proc ,一個(gè)thread 和一個(gè)ksegrp 。ksegrp 是“內(nèi)核調(diào)度的實(shí)體組kernel scheduling entity group”。三個(gè)系統(tǒng)的線程表示結(jié)構(gòu)不同,不過都支持調(diào)度線程。 |
|