Chinaunix首页 | 论坛 | 博客
  • 博客访问: 131985
  • 博文数量: 46
  • 博客积分: 126
  • 博客等级: 民兵
  • 技术积分: 186
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-12 17:57
文章分类

全部博文(46)

文章存档

2016年(2)

2015年(2)

2014年(17)

2013年(8)

2012年(12)

2011年(5)

分类:

2011-09-11 20:49:30

最近一个阶段在看有关Linux内核相关方面的书籍和kernel源代码本身。一个不争的事实是,目前有很多讨论内核的书籍,如果自己没一个明确的问题的话,很容易就被书中作者给绕进去了。

我个人以为在看Linux内核相关书籍或源代码的时候,要紧紧抓住这句话(以IA-32架构为例),“Linux是一个32位多用户多任务操作系统”。那么从这句描述中引申出一系列大问题及其相应的分支。
  1. 什么是32位OS
  2. 如何与外设交互
  3. 什么是多任务
  4. 什么是多用户,多任务

32位OS意味着其内存寻址最大可达4GB,这一目标是如何具体实现的呢?这就牵涉到硬件和软件两个方面,硬件指的是CPU支持,没有这个硬件的支持一切都是浮云。
  • CPU如何寻址
  • 存储器管理
  • 进程地址空间

Linux又是如何实现对硬件的管理的呢,使得进程具备与外设打交道的能力。这就涉及到I/O设备管理及硬件驱动的知识和内容,中断的处理。
  • 中断处理
  • device driver
  • timer

多任务意味着可以同时运行多个进程,在硬件级别指的是TSS。

多任务同时带来衍生的问题,
  • 进程创建和执行
  • 进程间的同步
  • 进程间的通讯
  • 进程调度
  • 用户空间
  • 内核空间

从这一根本描述出发,带着问题看代码,效果可能会好一些。

以上谈的是一个方法论的问题,接着阐述一下具体参考哪些资料。
  1. 386 programmer guide (CPU的编程指南)
  2. Linux内核设计的艺术 (内核0.12版)
  3. Linux内核源代码完全注释 (内核0.12版)
  4. Understanding the linux kernel (以内核2.x为讲解对象)
  5. Linux kernel development (以内核2.x为讲解对象)
  6. 多使用en.wikipedia.org来查阅相关技术问题
阅读(560) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~