内核开发不是件容易的事,这是对一个程序员编程能力的考验。开发内核其实就是开发一个可以与硬件交互和管理硬件的软件。内核也是一个操做系统的核心,是管理硬件资源的逻辑。程序员
处理器或是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性能
本人英语水平通常,专业水平也不高,错误怕会不少,欢迎指正。不接受批评哈,原本就是写给本身看到 :)操作系统