免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 31172 | 回复: 51
打印 上一主题 下一主题

《Linux内核设计与实现》中文版勘误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-08 13:45 |只看该作者 |倒序浏览
《Linux内核设计与实现》勘误


        Robert Love的《Linux Kernel Development》一书,比较适合内核入门。而且对某些方面的解说,比如各种下半部,非常到位。承蒙一位陌生朋友的慨然相助,我有幸得到了本书的英文第二版,把中文不好理解的地方对照英文订正一下。只订正有碍理解的,当然可能有些是我理解错误,朋友们指正。多谢了。

L+7 表示从上往下数第7行;L-7表示从底向上数第7行。


P8

L+7:练习中一般在头文件中定义内联函数

订正:实践中一般在头文件中定义内联函数


P9

L-13:Linux内核支持多处理器并发处理

订正:原文是“The Linux Kernel supports multiprocessing”,译为“Linux内核支持多处理器系统”似乎好些,而且这里不能说成是并发(concurrent),应该是并行(parallel)


P15

图2-2中的thread_struct应改为thread_info,这个原书就印刷错了。


P31

L+9:每个优先级数组还包含一个叫做struct list_head的队列。

订正:翻译错误。原文是:“Each priority_array also contains an array named queue of struct list_head queues.”应译为:“每个priority_array包含一个叫作queue的数组,该数组每个元素都是一个struct list_head类型的队列”。其实这个从左边那页给出的priority_array的结构定义也能看出来。


P51

L+1:将系统调用号和参数压入寄存器并出发软中断来陷入内核

订正:应该是“触发软件中断”,原文是software interrupt而不是softirq。这跟作为一种下半部机制的softirq根本不是一回事。


P61

L-4:首先,因为处理器禁止中断,这里要把它们打开,就必须在处理程序注册期间指定SA_INTERRUPT标志。

订正:“必须”应该改成“不能”。如果注册时指定了SA_INTERRUPT标志,这里能打开吗?显然不能。译者误解了原著的意思。


P63

L-17:cli和sti分别是对clear和set允许中断(allow interrupts)标志的汇编指令

订正:译的真别扭。改为:“cli和sti分别是对允许中断标志的clear和set操作的汇编指令的调用。”(好象一样别扭  )


P73

第6.3节

订正:这节中所有“挂起”字样,原文统统是pending,意思是悬而未决的、未处理的、待处理的,用过UNIX信号的人都知道,pending跟suspended根本不是一个意思。


P87
这里本来正确的,我说错了,多谢richardhesidu兄的指正

P116

第9.2节

订正:排版太不负责任了,作为节拍的倒数的HZ变量,全都给印刷成了Hz,好象频率单位赫兹一样。大家自己改改吧。


P155

L+8:struct super_operations s_op;

订正:struct super_operations *s_op; 原书也印刷错了。(可别小看这个星星,VFS的面向对象全靠它)


P170

L+4:有三个数据结构将VFS层和文件的进程紧密联系在一起

订正:“文件的”这三个字不知道从哪里来的,原书没有,也不该有。


P175

L+10~L+11:可以在文件<linux/buffer_head.h>;中找到包含所有合法标志的bh_state_bite列表。

订正:误译。原文是:The legal flags are stored in the bh_state_bits enumeration,which is defined in <linux/buffer_head.h>;。其实看见enumeration的前4个字母就能猜到是枚举,改成:“合法的标志存储在bh_state_bits枚举中,该枚举在<linux/buffer_head.h>;中定义。”


P176

L-3:struct bio_vec *bi_io_vecs

订正:struct bio_vec *bi_io_vec。还有下页图12-2和解说的文字,都印刷错了。


P191

L-11:记住根节点总为红色。

订正:这话怎么跟我看的数据结构的书矛盾啊。Mark Allen Weiss的《数据结构与算法分析──C语言描述》2nd第十二章《高级数据结构及其实现》就说:“根总是黑色的。”(P.S. Weiss可是Robert Love的老师哦)其实Love的话自相矛盾,他这么说的:“(红色和黑色)分派的规则为:1)红节点的子节点为黑色,并且2)树中任何一条从节点到叶子的路径必须包含同样数目的黑色节点。记住根节点总为红色。” 我们可以做个反证。假设根节点为红色,考虑一棵只有2个节点的二叉树,既然根节点是红色,那么根据Love说的第一条规则,叶节点必定为黑色,这将导致从根节点到左右NULL指针的路径包含的黑色节点个数不同(左边是0,右边是1),与第二条规则矛盾。Love本科是在佛罗里达大学读的数学专业,不可能犯这种错误,要不就是印刷问题,要不就是我理解错了。


P237

L+1:如果你希望得到一个单独的文件

订正:原文是“If you need to diff only a single file”,明显是说,diff程序的输入是两个单一文件(而不是两个目录),并非指diff生成一个单一补丁文件。(再说,diff程序能生成1个以上的文件吗?很怀疑的说   )




OK,大体这么多吧,其他的基本不影响阅读。Happy Reading!!


(趁着五一熬夜,5日凌晨7点半


续补:

十一时候翻译文档,发现有些知识理解还不到位,于是重读,又勘出几条错误。补在这里:

P246,B.1.2,
原书:它的原型在<linux/percpu.h>;中:
void *kmalloc_percpu(size_t size, int flags);
void kfree(const void *);
勘误:注意第一行存在严重印刷错误。应该把第一行改正为下面的两行:
void *alloc_percpu(type);
void * __alloc_percpu(size_t size, size_t align);

P246, L-5
原书:函数kfree_percpu()将返回一个指向动态生成的单CPU数据的间接引用。
勘误:“函数kfree_percpu()”改正为“函数alloc_percpu()或者__alloc_percpu()”。

P111, “8.9禁止抢占”上方那段话
原书:只要没有其他写者,写锁总是能够被成功获得。读者不会影响写锁,这点和读者-写者自旋锁及信号量一样。
勘误:译者理解错误。本书英文版原文是“The write lock always succeeds in being obtained so long as there are no other writers. Readers do not affect the write lock, as in the case with reader-writer spin locks.” 这句话的意思是说,seqlock这种锁,如果你想对它加写锁,只要此时没有别的写锁,那么不管有没有、有多少读锁加在它上面,你都会加锁成功。这与读写锁、读写信号量不同,读写锁和读写信号量当存在读锁的时候,写锁不可能成功,它会使调用者一致自旋,直到所有的写锁都被释放为止。其实这些知识你在本书P104和P108对读写锁和读写信号量的讲解中也能得到印证。 因此,这句话改正为:“只要没有其它写者,获取写锁总会是成功的。读者并不象读写锁与读写信号量那样会影响写锁。”

P109, “8.7 BKL”上面那段讲述“完成变量”的话
原书:完成变量的通常方法是,将完成变量作为数据结构中的一项动态创建,而完成数据结构初试化工作的代码将调用wait_for_completion()进行等待。
勘误:译者理解错误。本书英文版原文是“Kernel code waiting for the initialization of the data structure calls wait_for_completion(). When the initialization is complete, the waiting tasks ared awakened via a call to completion().” 译文改正为:“那些等待数据结构被初试化的内核代码调用wait_for_completion()函数进行等待,当初试化完成之后,执行初试化的线程会调用completion()函数来唤醒所有正在等待的任务。”

P74,“2. 调度tasklets”上面那一行
原书:tasklets才被激活,并且在被设置为挂起状态时,该tasklet才能够执行。
勘误:“被设置为挂起状态”原文是“if marked pending”,更准确的译法是“被标记为待处理的”。 另外再重复一遍,本章出现的所有“挂起”字样,其英文原文都是pending,意为未处理的、待处理的、待决的。大家自己做相应的改动,不一一给出了。

论坛徽章:
0
2 [报告]
发表于 2005-05-08 16:36 |只看该作者

《Linux内核设计与实现》中文版勘误

好歹也是熬夜整理的,连个回的人都没有,Kao

论坛徽章:
0
3 [报告]
发表于 2005-05-08 20:34 |只看该作者

《Linux内核设计与实现》中文版勘误

比起看中文翻译, 我宁愿看英文. 现在国内出书的很不道德, 特别是翻译的, 句子狗屁不同, 跟金山词霸翻出来的差不多

论坛徽章:
0
4 [报告]
发表于 2005-05-09 08:26 |只看该作者

《Linux内核设计与实现》中文版勘误

楼主能不能给俺一份.有多大呀??
xue_hu2001@eyou.com
谢谢.能不能做个ftp给偶们download , 或给个可下载网址也可以.谢谢

论坛徽章:
0
5 [报告]
发表于 2005-05-09 09:01 |只看该作者

《Linux内核设计与实现》中文版勘误

to 三楼的朋友:
你说的是事实情况,但是《Linux内核设计与实现》这本书还是翻译不错的,基本能看懂,不要一棍子打死。要是《Linux内核编程》那种人渣翻译的书,我还不做勘误呢。

to 四楼的朋友:
这书含金量很高,很多内核黑客都参与了。推荐买一本。

论坛徽章:
0
6 [报告]
发表于 2005-05-09 23:43 |只看该作者

《Linux内核设计与实现》中文版勘误

有专业修为,帮UP

论坛徽章:
0
7 [报告]
发表于 2005-05-10 00:21 |只看该作者

《Linux内核设计与实现》中文版勘误

楼主注明版本信息吧。

论坛徽章:
0
8 [报告]
发表于 2005-05-10 09:15 |只看该作者

《Linux内核设计与实现》中文版勘误

[quote]原帖由 "零二年的夏天"]楼主注明版本信息吧。[/quote 发表:



这样的,第一版有中译本,讲2.6,我估计就是2.6.0;第二版美国也是刚出不久,讲2.6.10,增加了一些内容。我是照着2nd-en校勘1st-CN。

P.S. 我还以为大家都知道了呢

论坛徽章:
0
9 [报告]
发表于 2005-05-10 16:54 |只看该作者

《Linux内核设计与实现》中文版勘误

请问楼主这本书里面有没有介绍协议栈方面的内容.

论坛徽章:
0
10 [报告]
发表于 2005-05-10 16:58 |只看该作者

《Linux内核设计与实现》中文版勘误

[quote]原帖由 "lansehouyan"]请问楼主这本书里面有没有介绍协议栈方面的内容.[/quote 发表:


没有。Linux协议栈实现,好象介绍的书很少,书评一般也不高。
我也很盼望有本TCPv2那样的巨著来讲解Linux协议栈,唉
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP