柴艳娜
(长安大学 信息与网络管理处,陕西 西安 710064)
计算机是现代日常生活的一种必需品,其高效可靠的运行需要依赖于一套稳健无缺陷(bug-free)的操作系统。现代操作系统都会使用内核(kernel)来对硬件进行管理,因此可以说内核的安全稳定决定了人们与计算机相处的体验。内核中的缺陷(bug)将可能使用户的应用程序甚至操作系统本身变得不可靠[1]。
内核是用户和应用程序与计算机硬件之间的桥梁,内核管理各种系统资源,包括内存和硬盘空间,并且处理CPU处理程序的调度。它也提供对输入输出设备和网络的访问。应用程序运行在内核之上,通过内核的系统调用从而使用到内核的功能。
大多数成熟的操作系统内核都是用C语言实现的。C语言因为允许高度控制内存使用以及其他如可与汇编语言互操作等低级程序操作特性,成为最受欢迎的内核语言[2]。这种高度的自由也会付出一些代价,比如内存释放两遍的错误、数组越界的错误以及死锁[3]。同时它也不能防止数据类型的错误解析,保证不了类型的安全性。
随着计算机多处理器以及多核处理器的增加,如何高效地利用多线程是评价内核优秀与否的一个有力因素。C语言实现的内核不能轻易地全面发挥多核的性能,因为C语言本身没有涵盖现代处理器的特性,C中的线程(thread)对内存和CPU来说都是很昂贵的一笔开销,而线程之间的同步机制则更复杂,所以内核需要大费周章地实现一套机制来充分调动多核计算机的全部性能[4]。……