往大了说,几乎所有互联网都是运行在Linux服务器上的;往小了说,嵌入式系统很大一部分也都是Linux内核的。可以说,Linux内核无处不在,Linux内核是一个最普遍最复杂的开源项目之一,Linux内核之大,代码量之多,在我感觉就像是一个原始森林,要想精通实在是不容易,但是,不求精通,但求理解内核的工作原理,工作机制,了解一下Linux内核架构也是好的。
内核是操作系统的一部分,是介于应用程序和底层硬件的一个桥梁,同时因为是操作系统的核心大脑
总结来说内核的功能有以下四个:
- 负责响应中断的中断服务程序
- 负责管理多进程从而分享处理器时间的调度程序
- 负责管理进程地址空间的内存管理程序
- 网络 进程间通信等系统服务程序
说到操作系统的内核,可以简略分为单内核和微内核:
- 单内核:运行于独立的地址空间,均运行于内核态。内核间通信微不足道。可直接调用函数
- 微内核:功能被划分为多个独立的过程,每个过程叫做一个服务器,一般都运行在用户空间,各自运行在独立的地址空间,进程间通信花销比较大
Linux内核就是属于单内核,独立的地址空间,且是模块化设计,抢占式内核,支持内核线程及动态装载内核模块。
内核开发特点:
- 内核开发不能访问C库也不能使用C头文件
- 必须使用GNU C
- 内核编程不像用户空间那样有内存保护机制
- 难以执行浮点操作
- 内核给每个进程只有很小的一个定长的堆栈
- 由于内核支持异步中断,抢占和SMP,因此必须时刻注意同步和并发
哦,对了,要学习内核没有内核源程序怎么能行,官网 随时能下载Linux内核源代码。推荐使用Git分布式版本控制系统来下载,保持与官网代码书一致。
下载:
$ git clone git://git.kernel.org/pub/scm/linux/kernit/torvalds/linux-2.6.git
更新:
$ git pull