內核開發不是件容易的事,這是對一個程序員編程能力的考驗。開發內核其實就是開發一個可以與硬件交互和管理硬件的軟件。內核也是一個操做系統的核心,是管理硬件資源的邏輯。程序員
處理器或是CPU是內核須要管理的最重要的系統資源之一。內核對其的管理體如今:給特定操做分配時間,並容許在另外一個調度事件發生時中斷任務或進程。也就是多任務處理(multitasking)。多任務處理的實現方式有:算法
目前有幾種調度算法用於尋找下一個要運行的進程,其中最簡單的是輪循調度(Round Robin),你只須要在列表中獲取下一個進程,而後選擇該進程運行。複雜的調度涉及優先級,那些優先級高的任務比優先級低的任務容許分派到更多運行時間。更爲複雜的是實時調度(Real-time scheduler),用來保證某個進程至少運行必定數量的定時器時間。實時系統的計算正確性不單單取決於計算的邏輯正確性,還卻決於產生結果的時間。若是未知足系統的時間約束,則認爲系統失效,也可認爲沒有獲得正確的計算結果。編程
系統的另外一個重要的資源顯然是內存(Memory)。有時候內存資源甚至比CPU時間資源更加珍貴,由於內存是有限的,而CPU時間確不是。你能夠將你的內核設計成內存高效,但會犧牲大量CPU。你也能夠設計成CPU高效,使用內存存儲緩存和緩衝區來記住經常使用項而不是查找它們。最好的固然是二者兼顧:爭取最佳的內存使用,同時保留CPU時間。緩存
還有一個內核須要管理的資源是硬件資源,包括:函數
本教程的旨在向讀者展現如何搭建起內核的基礎,包括:oop
原文連接:Bran's Kernel Development A tutorial on writing kernels Version 1.0 (Feb 6th, 2005) http://www.osdever.net/bkerndev/Docs/title.htm性能
本人英語水平通常,專業水平也不高,錯誤怕會不少,歡迎指正。不接受批評哈,原本就是寫給本身看到 :)操作系統