June 01, 2006

Orz Microkernel

兩三個月前,有位網友來信指教,提到他所修的作業系統課程,期末專題要寫個小型作業系統,讓他很擔心,而恐龍書繁瑣的內容也是個挑戰... 這的確是個好問題,而且我也認為那個期末專題不錯,我以前的期末專題是將 Linux kernel 2.2 簡化,並保留 framebuffer (VESA) 與 network stack,C Runtime 用 [dietlibc],外加 busybox + web browser (HTML 3.2+),這些全部塞進一張 1.44 Mb 的 floppy,做起來很有成就感。

為了給那位網友一點信心,昨天端午節賦閒在家就一面複習 IA32 組合語言,一面寫了簡單的 Microkernel,就如之前的 blog [Orz Programming] 提到寫程式的樂趣,所以,索性稱呼這個玩具 kernel 為 Orz Microkernel,有圖有真相,以下是透過 [qemu] 的執行畫面:

雖然是玩具,不過呢,這個 microkernel 可是運作得很順暢,已經完成 x86 Microkernel、File system server, keyboard service server、shell、VGA console server,以及 scheduling services,就 binary size 來說,還沒超過 35 kb,應該符合那位網友的需求。

因為七月份答應 [TnLUG] 給場 talk,而 Orz Microkernel 也會是其中的案例,就到時候再把 Orz Microkernel 的原始程式碼釋出,喔,這此我可不想用死板的 GNU GPL 作授權條款,我要用 Jserv GPL (Good People License) *笑*

你說、你說,寫作業系統也是可以富含樂趣,不是嗎?
由 jserv 發表於 June 1, 2006 11:20 PM
迴響

看到Orz Microkernel的時候, 也給了我無比的信心. 而且寫作業系統的核心真的很有趣.

yhsung 發表於 June 1, 2006 11:54 PM

這個條款是說,如果收下你的好人卡就可以用,而且也要繼續發卡給別人嗎...... O_O

hlb 發表於 June 2, 2006 01:52 AM

不曉得你用 Microkernel 這個字是否是想表達出這個 kernel 的"小",我會這麼說是因為通常 microkernel 代表著其他的意義,不完全是 kernel 小的意思。

Neo 發表於 June 2, 2006 10:27 AM

To Neo,

Orz Microkernel 是 Microkernel 架構的設計,並不是因為小,而我本人也是 Microkernel 的支持者,謝謝。

jserv 發表於 June 2, 2006 10:54 AM

To Neo,

你看文中列了一堆 File system server、keyboard service server、shell、VGA console server、scheduling services, 就知道這的確是朝 microkernel 架構的方向設計的。

不過一天就寫出來, 效率還真是高啊! :D

william 發表於 June 2, 2006 11:17 AM

Have you measured the IPC throughput and interrupt latency of the Orz(tm) kernel? Very curious..

I-Jui Sung 發表於 June 2, 2006 11:47 AM

請問這個 kernel 有使用到 virtual memory 嗎?

cphacker 發表於 June 3, 2006 09:40 AM

我現在也正在寫OS kernel 實在是蠻辛苦的
不過一天就可以寫出 Orz Microkernel 實在是太厲害了

akito 發表於 June 7, 2006 12:28 AM

尊敬的Jserv,特别想了解一下您的这个Orz/Microkernel,可以把源码发给我一份吗??不胜感激!

Jack 發表於 November 11, 2006 11:30 PM