红联Linux门户
Linux帮助

Linux内核设计与实现

发布时间:2007-10-22 20:42:07来源:红联作者:Quickgram
  作者简介
  拉芙(Robert Love)是开源社区的名人,很早就开始使用Linux他活跃于Linux内核和GNOME两个社区。最近,他受聘于Novell公司,作为高级内核工程师在ximian桌面组工作。他的内核项目包括抢占式内核、进程调度程序、内核事件层、VM增强以及多任务处理性能优化。他创建和维护的另外两个开源项目是schedutils和GNOME卷管理器。此外,Linux Journal杂志的特邀编辑。

  出版日期: 2006-01
  版次: 2
  出版社: 机械工业出版社

  购买

  
引用:
译者序

  不知不觉涉足Linux内核已经几个年头了,与其他有志(兴趣)于此的朋友一样,我们也经历了学习--实用--追踪--再学习的过程。也就是说,我们也是从漫无边际到茫然无措,再到初窥门径,转而觉得心有戚戚焉这一路走下来的。其中甘苦,犹然在心。

  Linux最为人称道的莫过于它的自由精神,所有源代码唾手可得。侯捷先生云:“源码在前,了无秘密”。是的,但是我们在面对它的时候,为什么却总是因为这种规模和层面所造就的陡峭学习曲线陷入困顿呢?很多朋友就此倒下,纵然Linux世界繁花似锦,纵然内核天空无边广阔。但是,眼前的迷雾重重,心中的阴霾又怎能被阳光驱散呢?纵有雄心壮志,拔剑四顾心茫然,脚下路在何方?

  Linux内核入门是不容易,它之所以难学,在于庞大的规模和复杂的层面。规模一大,就不易现出本来面目,浑然一体,自然不容易找到着手之处;层面一多,就会让人眼花缭乱,盘根错节,怎能让人提纲挈领?

  “如果有这样一本书,既能提纲挈领,为我理顺思绪,指引方向,同时又能照顾小节,阐述细微,帮助我们更好更快地理解STL源码,那该有多好。”孟岩先生如此说,虽然针对的是C++,但道出的也是研习源码的人们共同的心声。然而,Linux源码研究的方法却不大相同。这还是由于规模和层面决定的。比如说,在语言学习中,我们可以采取小步快跑的方法,通过一个个小程序和小尝试,就可以取得渐进的成果,就能从新技术中有所收获;而掌握Linux呢?如果没有对整体的把握,即使你对某个局部的算法、技术或是代码再熟悉,也无法将其融入实用。其实,像内核这样的大规模的软件,正是编程技术施展身手的舞台(当然,目前的内核虽然包含了一些面向对象思想,但还不能让C++一展身手)。

  那么,我们能不能做出点什么,让Linux的内核学习过程更符合程序员的习惯呢?

  Robert Love回答了这个问题。Robert Love是一个狂热的内核爱好者,所以他的想法自然贴近程序员。是的,我们注定要在对所有核心的子系统有了全面认识之后,才能开始自己的实践,但却完全可以舍弃细枝末节,将行李压到最小,自然可以轻装快走,迅速进入动手阶段。

  因此,本书相对于Daniel P. Bovet和Marco Cesati的内核巨著《Understanding the Linux Kernel》,少了五分细节;相对于实践经典《Linux Device Drivers》,又多了五分说理。可以说,本书填补了Linux内核理论和实践之间的鸿沟,真可谓“一桥飞架南北,天堑变通途”。

  就我们的经验,内核初学者(不是编程初学者)可以从这本书着手,对内核各个核心子系统有个整体把握,包括它们提供什么样的服务,为什么要提供这样的服务,又是怎样实现的。而且,本书还包含了Linux内核开发者在开发时需要用到的很多信息,包括调试技术、编程风格、注意事项等等。在消化这本书的基础上,如果你侧重于了解内核,可以进一步研究《Understanding the Linux Kernel》和源代码本身;如果你侧重于实际编程,可以研读《Linux Device Drivers》,直接开始动手工作。

  依然记得译第1版时的喜悦,第2版的到来自然就爱不释手了。同事贺炎为两版之间差异所费的心思全部体现在了字里行间,请读者欣赏第2版丰富的内容吧。


目录
译者序
序言
前言
第1章 Linux内核简介
1.1 追寻Linus的足迹:Linux简介
1.2 操作系统和内核简介
1.3 Linux内核和传统Unix内核的比较
1.4 Linux内核版本
1.5 Linux内核开发者社区
1.6 小结
第2章 从内核出发
2.1 获取内核源码
2.1.1 安装内核源代码
2.1.2 使用补丁
2.2 内核源码树
2.3 编译内核
2.3.1减少编译的垃圾信息
2.3.2衍生多个编译作业
2.3.3安装内核
2.4内核开发的特点
2.4.1 没有libc库
2.4.2 GNU C
2.4.3 没有内存保护机制
2.4.4 不要轻易在内核中使用浮点数
2.4.5 容积小而固定的栈
2.4.6 同步和并发
2.4.7 可移植性的重要性
2.5小结
第3章 进程管理
3.1 进程描述符及任务结构
3.1.1 分配进程描述符
3.1.2 进程描述符的存放
3.1.3 进程状态
3.1.4 设置当前进程状态
3.1.5 进程上下文
3.1.6 进程家族树
3.2 进程创建
3.2.1 写时拷贝
3.2.2 fork()
3.2.3 vfork()
3.3 线程在Linux中的实现.
3.4 进程终结
3.4.1 删除进程描述符
3.4.2 孤儿进程造成的进退维谷
3.5 进程小结
第4章 进程调度
……
第5章 系统调用
……
第6章 中断和中断处理程序
……
第7章 下半部和推后执行的工作
……
第8章 内核同步介绍
……
第9章 内核同步工作
……
第10章 定时器和时间管理
……
第11章 内在管理
……
第12章 虚拟文件系统
……
第13章 块I/O层
……
第14章 进程地址空间
……
第15章 页调整缓存和页回写
……
第16章 模块
……
第17章 Kobect与sysfs
……
第18章 调试
……
第19章 可移植性
……
第20章 补丁、开发和社区
……
参考资料
文章评论

共有 0 条评论