一、内核

操作系统是一系列程序的集合,其中最重要的部分构成了内核

单内核/微内核
   单内核是一个很大的进程,内部可以分为若干模块,运行时是一个独立的二进制文件,模块间通讯通过直接调用函数实现
   微内核中大部分内核作为独立的进程在特权下运行,通过消息传递进行通讯
Linux内核的能力
    内存管理,文件系统,进程管理,多线程支持,抢占式,多处理支持
Linux内核区别于其他UNIX商业内核的优点
   单内核,模块支持
   免费/开源
   支持多种CPU,硬件支持能力非常强大
   Linux开发者都是非常出色的程序员
   通过学习Linux内核的源码可以了解现代操作系统的实现原理


层次结构



二、模块&驱动

许多常见驱动的源代码集成在内核源码里
也有第三方开发的驱动,可以单独编译成  模块.ko
驱动的编译需要内核头文件的支持 #include <linux/kernel.h>            

1.加载模块的命令:
1)底层命令
   insmod
   rmmod
2)高层命令
   modprobe
   modprobe -r

2.

内核编程和外围程序的差别。(主观题,要能写出一段)   重点!



3.

内核编程的注意点


不能使用C库来开发驱动程序
没有内存保护机制
小内核栈
 并发上的考虑



4.

内核模块的一个简单例子(要能看懂)



#include <linux/kernel.h>            
#include <linux/module.h>
#include <linux/init.h>

static int __init hello_init(void)
{
printk(KERN_INFO "Hello world\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_INFO "Goodbye world\n");
}
module_init(hello_init);
module_exit(hello_exit);