写给Linux内核新手 关于Linux内核学习的误区
写给Linux内核新手-关于Linux内核学习的误区
albcamus
http://bbs.chinaunix.net/viewthread.php?tid=626486
先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的。因此,这里与其说是关于Linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^
常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需:
1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(time-shared)和实时(real-time)的区别是什么,进程是个什么东西,CPU和系统总线、内存的关系(很粗略即可),等等。
2, 关于C语言。不需要已经很精通C语言,只要能熟练编写C程序,能看懂链表、散列表等数据结构的C实现,用过gcc编译器,就可以了。当然,如果已经精通C语言显然是大占便宜的。
3, 关于CPU的知识。这块儿可以在学习内核过程中补,但这样的话你就需要看讲解很详细的书,比方后面将会提到的《情景分析》。你是否熟悉Intel 80386 CPU?尝试着回答这几个问题来判断一下:1)说出80386的中断门和陷阱门的区别;2)说出保护模式与实模式的区别;3)多处理器机器上,普通的读- 改-写回一块内存这样的动作,为什么需要特殊的手段来保护。等等。讲解基于其它CPU的Linux内核的书,目前好象只有一本《IA64Linux内核: 设计与实现》──也还是Intel的,其它都是讲解基于IA32的。
以上算是知识方面吧,如果还要再补充一条,我想就是:动手编译过内核。
好了,我们接下来走。好多人装上Linux之后,第一件事找到内核源码所在的路径,打开一个C程序文件,开始哗哗哗翻页,看看大名鼎鼎的Linux内核代码到底长啥模样──然后关闭。这是可理解的,但却不是学习的方法。刚开始,必须从读书入手。至少要对内核有一个Overview之后,才有可能带着问题去试图阅读源代码本身。 下面就讲一下我读过的几本书:
1, 《Linux内核设计与实现》,英文名Linux Kernel Development(所以有人叫它LKD),机械工业出版社,¥35, 美国Robert Love著,陈莉君译者。 评说:
此书是当今首屈一指的入门最佳图书。作者是为2.6内核加入了抢占的人,对调度部分非常精通,而调度是整个系统的核心,因此本书是很权威的。这本书讲 解
相关文档:
把U盘刻成光盘(以ubuntu9.10为例)
前提:电脑支持U盘启动,有些电脑是不支持的。
开始制作
一、材料:
UltraISO(软碟通)软件
ubuntu 9.10 iso
u盘(推荐1G以上)。
二、操作平台:
windows xp/vista [我是在vista下制作的,必须用管理员权限打开UltraISO(软碟通)](右击其快捷方式,以管理员身分打开)
说 ......
(1)查看时钟中断:
$ cat /proc/interrupts
CPU0
0: 1380471 IO-APIC-edge timer
1: 3626 IO-APIC-edge i8 ......
实现一个链表,完成链表的插入,查找,删除
typedef struct _FIFO_M{
void *pdata;
struct _FIFO_M *pNext;
}FIFO_M,* pFIFO_M;
typedef struct _FIFO{
pFIFO_M head;
pFIFO_M tail;
pFIFO_M pos;
int mcount;//节点个数
int max_count;//节点最大个数。
}FIFO,* pFIFO;
......
linux中文乱码问题
最近,公司在XP系统于LINUX之间传数据时出现了中文乱码问题!
首先,解释一下字符集:
汉字编码:
* GB2312字集是简体字集,全称为GB2312(80)字集,共包括国标简体汉字6763个。 * BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个。 * GBK字集是简繁字集,包括了GB字集、BIG5字集和一些符号,共 ......