因為現在用的pc等級實在太低,光是run 起PlatformBuilder 就loading 過重,所以沒辦法再run qemu 和install build environment,只好先看一下code...
果然是簡潔有力,雖然全部都是用assembly 寫的,但是一點也不影響可讀性 (這就是長年在open source 社群中Coding的習慣?)。
source code的安排也很清楚,依照功能與階層相依性安排folder。
連bootloader, shell, sample appliction 都有 (這真的 都是在端午節下午完成的 ?)
具體而微的OS,沒有多餘的code,因為microkernel 的架構,讓interface切得很清楚。
從這個開始學OS真是再好不過了。
kernel : 整個kernel 在main.asm 中安排得很好:
- 先是16 bit code, load GDT, IDT, 進入protect mode.
- 32 bit mode, configure and enable timer.
- create system service proram - 這些service 都是application喔,不是直接link到kernel image,而是build好,成execution image 後放入kernel 的data block。所以跟一般user application 的地位是相同的。
- 進入scheduler,完成。
kernel 中,Task 模組提供 Create, Kill 和Scheduler 的function.
以上兩部份是 microkernel 的 process 和 memory management,剩下一個microkernel 要有的功能就是 IPC: 這部份 orz microkernel 用message來作,message用 x86 的軟體中斷來提供,從0x30 開始,這部份的INT handler 在kernel boot時,load IDT時就將INT handler都設定好了。
Message Service 有
- Get Message
- Send Message
- Process Message
- Remove Message
- Answer Message
所以這個kernel 真的是 pure microkernel 呢。
雖然很小,但是包含的東西有好多好多:execution file format, loader, file system(?), shell...先寫到這邊,接著再來看 keyboard interrupt 到 keyboard service module 的path ....
1 則留言:
不好意思. 我沒法成功下載OrZ Microkernel.
不知可否寄一份給我. 感恩!
boltnut168@gmail.com
張貼留言