我在当当上的一个书评
2011-07-02
几个月前看到当当上有一个评论说翻译的不准确,列了几处不准确之处,我刚好看过,就回复批驳了一番。
最近这位评论者跑到互动网上去为《linux内核设计与实现》第3版做托,大肆诋毁《深入Linux内核架构》,所以把几个月前批驳他的评论发到此处,以为钧鉴!
==========================
看到有个评论说“翻译得一般,有很多处不准确”,所以去看了一遍“不准确”之处,发现译文其实很准确,当然可能是评论者没看懂,呵呵!
摘录评论如下(横线之间部分),并逐一评价之:
----------------------------
P175"paging_init is responsible for setting up the page tables that can be used only by the kernel and are not accessible in userspace"
似应为:"paging_init 负责建立由内核访问的页表..."
发表于 2011-03-16 19:42
----------------------------
中文版在p140页下部,“paging_init负责建立只能用于内核的页表,用户空间无法访问”,事实上没有错,当然可以改进为“负责建立只能由内核使用的页表”
----------------------------
P174"Various memory areas are then reserved, for instance, for the initial RAM disk needed when running the first userspace processes"
似应该为:"为特定用途的memory area保留内存"
发表于 2011-03-16 19:31
----------------------------
中文版在p139,“接下来分配各种内存区”,与原文语义完全一致,reserved应当翻译为分配,评论者认为当译为“保留”的作法属于中国式英语
----------------------------
P173"If this information is not provided by the BIOS (this may be the case on some older machines), the kernel itself generates a table to mark memory in the ranges 0–640 KiB and 1 MiBend as usable."
似应为:"如BIOS不能提供那些信息(内存占用),the kernel自己就生成0-640K和1M之下的内存占用表归自己使用"
发表于 2011-03-15 21:26
---------------------------
中文版在p139,“如果BIOS没有提供该信息(在较古老的机器上是这样),内核自身会生成一个表,将0~640KiB和1MiB之下的内存标记为可用”,这应该是正确的译法
---------------------------
原版P163:
On SMP systems, setup_per_cpu_areas initializes per-CPU variables defined statically in the source code (using the per_cpu macro) and of which there is a separate copy for each CPU in the system. Variables of this kind are stored in a separate section of the
kernel binaries. The purpose of setup_per_cpu_areas is to create a copy of these data for each system CPU. This function is a null operation on non-SMP systems.
这段话意思是针对per_cpu这个宏?义的变量对每个CPU进行初始化的意思.
本书的翻译:"在SMP系统上,setup_per_cpu_areas初始化源代码中(使用per_cpu宏)定义的静态per_cpu变量....."
----------------------------
中文版在p131,“在SMP系统上,setup_per_cpu_areas初始化源代码中(使用per_cpu宏)定义的静态per-cpu变量,这种变量对系统中的每个CPU都有一个独立的副本。此类变量保存在内核二进制映像的一个独立的段中。setup_per_cpu_areas的目的是为系统的各个CPU分别创建一份这些数据的副本。”
译文的意思是没有问题的,"per-cpu变量"的意思是指此类用per_cpu宏定义的数组,数组的每个元素分别对应于系统中的一个CPU。
评论者完全是断章取义,将正确的译文错误引用为“静态per_cpu变量”,他的看法估计是认为去初始化per_cpu这个变量了,一个下划线和连字符之差,谬误千里之外,呵呵
==========================