一、第一章:Linux内核简介
1.操作系统和内核:操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分,包括内核、设备驱动程序、启动引导程序、命令行shall等。
内核就是操作系统的核心,由负责相应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、系统服务程序共同组成。
系统中的程序通过系统调用来与内核通信,内核还要负责管理系统的硬件设备,提供中断机制(不在进程上下文中进行,为了能保证中断服务程序在第一时间响应和处理)
我们将任何处理器在指定时间点上的活动概括分为:
a.运行于用户空间,执行用户进程
b.运行于内核空间,处于进程上下文
c.运行于内核空间,处于中断上下文
总的来说,Linux是一个单内核,,运行在单独的内核运行空间上,也吸取了微内核的精华:模块化设计,抢占式内核,支持内核线程和动态装载内核的能力。
二、第二章:从内核出发
1.获取内核源码
在Linux的官方网站上进行免费下载
2.编译内核
把自己需要的也定功能和驱动程序编译进内核,内核也提供了很多工具来简化内核编译:
a.字符界面下的命令行工具:$ make config
b.基于ncurse库编制的图形界面工具:$ make menuconfig
如果想减少编译的垃圾信息可以用:$make > .. /detritus 对输出进行重新定向
3.内核开发特点
a.内核编程时既不能访问C库也不能访问标准的C头文件。
b.内核编程时必须使用GNUC。
c.内核编程时缺乏像用户空间的内存保护机制。
d.内核编程时难以执行浮点运算。
e.内核给每个进程只有很小的一段堆栈。
f.必须时刻注意同步和并发。
g.要考虑呢可移植性的重要性。