首页 > 代码库 > 《Linux内核设计与实现》笔记-1-linux内核简介

《Linux内核设计与实现》笔记-1-linux内核简介

一、Linux内核相对于传统的UNIX内核的比较:

(1):Linux支持动态内核模块。尽管Linux内核也是整体式结构,可是允许在需要的时候动态哦卸除(rmmod xxx)和加载内核模块(insmod  xxx.ko).

(2):Linux支持对称多处理(SMP)机制,尽管许多UNIX的变体也支持SMP,但是传统的UNIX并不支持这种机制。

(3):Linux内核可以抢占(preemptive)。在Linux 2.4以及以前的版本都是不支持内核抢占的,在Linux 2.6以及以后就支持了。

(4):Linux内核不区分线程和进程的。对于内核,所有的进程都是一样的,只不过其中的一些资源共享而已。

二、单内核和微内核的区别

         单体内核:大内核,将OS的全部功能都做进内核中,包括调度、文件系统、网络、设备驱动器、存储管理。比如设备驱动管理、资源分配、进程间通信、进程间切换管理、文件系统、存储管理、网络等。单体内核是指在一大块代码中实际包含了所有操作系统功能,并作为一个单一进程运行,具有唯一地址空间。大部分UNIX(包括Linxu)系统都采用的单体内核。

       微内核:微内核与单体内核不同,微内核只是将OS中最核心的功能加入内核,包括IPC通信、地址空间分配和基本的调度,这些东西处在内核态运行。如:WINCE系统。而其他功能如设备驱动、文件系统、存储管理、网络等作为一个个处于用户态的进程而向外提供某种服务来实现,而且这些处于用户态的进程可以针对某些特定的应用和环境需求进行定制。有时,也称这些进程为服务器。

三、Linux内核版本


四、Linux内核开发的特点

(1):内核编程时不能访问C库。但是大部分C库函数在内核中都已经实现了。

(2):内核编程时必须使用GNU C。

(3):内核编程时缺乏像使用用户空间那样的保护机制

(4):内核编程时浮点数很难使用

(5):内核只有一个很小的定长堆栈;内核栈很小,长度固定,32位的内核栈是8KB,而64位的是16KB。

(6):由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发

(7):要注意可移植性的重要性