linux的内核设计:
第一章
1.1Linux历史:
历经时间的考验,今天Unix已经发展成一个支持抢占式多任务、多线程、虚拟内存、换页、动态链接、TCP/Ip网络的现代化操作系统。
1.2追寻Linux的足迹:
Linux是类Unix系统,但不是Unix系统;
Linux是个非商业化的产品;
Linux系统的基础是:内核、C库、工具集和系统的基本工具;
1.3操作系统和内核:
上下文代表着内核的活动范围。
1.4Linux内核与传统的Unix内核比较:
操作系统内核可以分为:单内核和双内核;
不能忽视Unix的API;
Linux支持加载动态模块;
Linux支持对称多处理(SMP)机制;
Linux可以抢占;
Linux对线程实现更有意思;
Linux体现了自由这个词的精髓;
1.5Linux内核版本:
稳定和出于开发中的;
1.6Linux开发者社区:
成为社区中的一员:
1.7小结:
去书中寻找快乐吧!
第二章:
从内核出发
2.1获取内核源码:
登陆Linux内核官网:HTTP:// kernel.org.
2.1.1使用Git:
一个副本:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
下载代码,新的分支:
git pull
2.1.2安装内核源代码:
如果压缩是bzip2:
tar xvjf linux-x.y.z.tar.bz2
如果是GNU的zip:
tar xvzf linux-x.y.z.tar.gz
注意:/usr/src/linux应该原封不动
2.1.3使用补丁:
patch -p1 < ../patch-x.y.z
2.2内核源码树:
2.3编译内核
2.3.1内核配置:
字符界面工具:
make config
图形界面工具:
make menuconfig
基于gtk的图形工具:
make defconfig
验证更新配置:
make oldconfig
最后:
make
2.3.2减少编译的垃圾信息:
重定向:
make > .. /detritus
无返回值的黑洞:
make > /dev/null
2.3.3衍生多个编译作业:
多作业编译内核:
make jn
2.3.4安装新内核:
make modules_install
2.4内核开发的特点:
1.内核开发时既不能访问C库也不能访问标准的C头文件
2.内核编程时必须使用GNU C
3.内核编程时缺乏像用户空间那样的内存保护机制
4.内核编程时难以执行浮点运算
5.内核给每个进程只有一个很小的定长堆栈
6.由于内核支持异步中断、抢占和SMP,必须时刻注意同步和并发
7.要考虑可移植性的重要性
2.5小结:
内核有独一无二的气质,只有通过实际的理解和阅读才能理解内核。