免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 37352 | 回复: 79

[FreeBSD] 【FreeBSD操作系统设计与实现】勘误汇总 [复制链接]

论坛徽章:
0
发表于 2006-03-20 09:01 |显示全部楼层
不断更新中。。。

【英文版勘误】
http://www.mckusick.com/book/FreeBSDerrata.html

【中文版勘误】

目前发现有值得商榷的翻译内容的页面有:
前言第5页、44、48、49、78、79、80、111、116、117、118、119、120、157、167、260、261、454、466

目前提交勘误信息的人有:gvim,雨丝风片,billypeng ,japonensis。。。



【前言5页】上数第6行:(雨丝风片)
[本书]:
以及4CD套装,其中包含伯克利的所有BSD版本和BSD源代码的受控史。
[原文]:
and a 4-CD set containing all the release and the source-control history of BSD from Berkeley.
[雨丝风片]:
我看到这里,吓了一跳,以为是BSD源代码“受到控诉的历史”。去查原文,才发现是source control历史,此处当指整个Berkeley时期的BSD版本控制系统生成的代码修改记录等历史信息。所以我觉得译文应当是“以及一套由Berkeley提供的含有BSD所有发布版本和源代码控制历史的4CD套装。”

【44页】上数第17行:(gvim)
3.1.4内核入口 一节(对应 3.1 Entry to the Kernel)里的最后一段,有一句话"对于系统调用来说,其参数为该系统调用号和一个异常处理结构",原书是"For a system call, they are the system-call number and an exception frame. " 这里将frame翻译成结构,虽然没有什么不妥,可我一开始还真没看明白。翻到原文一看,原来是指的"异常处理堆栈栈桢"这个意思。不知大家有没有什么意见。

【44页】倒数第9行:(gvim)
"计数器和程序状态长字"改为"处理器状态长字"(原书勘误)

【48页】上数第18行:(gvim)
3.4节印刷书P48,中间的“hardclock()所做工作如下:”的最后一个profclock应为statclock。

【49页】上数第3行:(gvim)
p49页第三句上面有句话:"剖析统计时钟就设为以1拍的速度来运行,这个速度已经相当于逼近主系统时钟(在PC上是每秒1024拍)的速度了"。这里我没有理解"1拍的速度","拍"是相对于一个时间段来说的频率,比如系统1秒钟100拍(p47倒数3行),而这里找不到"1拍"的参照物,所以我查了下。原话是这样"When one or more processes are requesting profiling information, the profiling clock is set to run at a tick rate that is relatively prime to the main system clock (1024 ticks per second on the PC). " (在3.4 Statistics and Process Scheduling下面最后一段)。我觉得这里的a是修饰的rate,而不是当成1来翻译。所以我觉得是否原文大意应为:“剖析统计时钟就设为一个逼近主系统时钟节拍的速度(在PC上是每秒1024拍)来运行”

【78页】上数第5行:(gvim)
原文为"Mutexes must have the information and storage space to support priority propagation",翻译的是"互斥锁必须带有信息和存储空间,以此支持优先级",很明显,没有表达出"priority propagation"的原意

【78页】上数第11行:(gvim)
"However, it is always safe to use these forms of locks in an interrupt thread without fear of deadlock against an interrupted thread on the same CPU. "漏译了这一整句话。我翻译的是"然而,在中断线程中使用这些形式的锁总是安全的,不必担心和同一CPU上的另一个中断线程发生死锁。"

【79页】上数第1行:(gvim)
"正在运行的线程获得一个互斥锁"改为"运行的内核线程获得"

【80页】上数第4行:(gvim)
"下半部"改为"上半部"

【111页】上数第7行:(雨丝风片)
[本书]:
3. 当放置操作所请求的页面不在主存内的时候,如何选择要从主存里删除的其他页面——替换策略(replacement policy)。
[原文]:
3. How the system selects pages to be removed from main memory when pages are unavailable for a placement request—the replacement policy
[雨丝风片]:
这里的unavailable的意思并非“所请求的页面不在主存内”,要被放置的页面现在当然不在主存内,这里的意思是主存内现在没有可用的(空闲)页面来满足这次的放置操作了,于是就需要从主存中选择一些页面挪到备份存储设备上,腾出地方来满足这次放置操作的要求。

【116页】上数第10行:(雨丝风片)
[本书]:
为了避免在一段地址范围内混入不相关地地址段,可以用子映射来覆盖那段地址范围。
[原文]:
To avoid intermixing of unrelated allocations within an address range, that range is covered by a submap, and only the appropriate subsystem can allocate from that map.
[雨丝风片]:
此处漏掉了最后半句话的翻译,影响了对句子完整意思的理解,前半句的翻译也不准确。全句的翻译应为:“为了避免各种不相关的分配混杂在同一个地址区间里,我们可以用一个子映射来覆盖这个区间,并且只有恰当的子系统才能在这个映射中进行分配。”
(注:即通过子映射来实现子系统级的专区专用。)

【116页】下数第2行:(雨丝风片)
[本书]:
这段内核地址空间由子映射管理,子映射的头指向被引用的vm_map结构。
[原文]:
This piece of the kernel address space is being managed via a submap headed by the referenced vm_map structure.
[雨丝风片]:
这里译成“子映射的头指向。。。”不妥。子映射的vm_map结构体是由vm_map_entry结构体里的sub_map指针指向。由于作者此处在专讲vm_map_entry结构体,因此只是说这个子映射是由指向的vm_map结构体开始的,其完整意思应该是“这个子映射是由(vm_map_entry结构体中的sub_map指针)指向的vm_map结构体开始的。”

【117页】上数第5行:(雨丝风片)
[本书]:
虚拟内存系统实现了一套基本函数来分配和释放内核所使用的虚拟内存范围,这个范围有页对齐和页取整两种方式。
[原文]:
The virtual-memory system implements a set of primitive functions for allocating and freeing the page-aligned, page-rounded virtual-memory ranges that the kernel uses.
[雨丝风片]:
range直译为“范围”似觉不妥。整句可译为:“虚拟内存系统实现了一组基本的函数,用以分配和释放内核所使用的需要按页对齐和按页取整的虚拟内存区域。”

【117页】倒数第16行:(雨丝风片)
[本书]:
可调页的地址范围是按需分配物理内存的,而且该内存可以由pageout(页面调出)守护进程回写到后备存储器上,这可以作为该守护进程的正常替换策略的一部分。
[原文]:
A pageable range has physical memory allocated on demand, and this memory can be written out to backing store by the pageout daemon as part of the latter's normal replacement policy.
[雨丝风片]:
首先,“按需分配”亦可理解为要多少给多少,不能准确传达原意。其次,将内存写出也不是“可以”作为替换策略的一部分,它本来就是一部分。整句另译如下:“可进行调页的区域是在需要的时候才分配物理内存的,作为常规替换策略的一部分,这种内存可由pageout daemon写出到备份存储中。”

【117页】倒数第11行:(雨丝风片)
[本书]:
kmemfree()回收内核中固定的内存
[原文]:
Kmem_free() deallocates kernel wired memory
[雨丝风片]:
函数名中遗漏了一个下划线。

【117页】倒数第6行:(雨丝风片)
[本书]:
因此,推荐用此方法分配内核内存而不是固定大小的大型结构,用下一节介绍的区域存储分配程序处理后者效果会更好。
[原文]:
So it is the preferred way to allocate kernel memory other than large, fixed-size structures that are better handled by the zone allocator described in the next subsection.
[雨丝风片]:
“内核内存”和“大型结构”之间是包含关系,这里却译成了互斥关系,完全看不到原文中“other than”的意思了。整句另译如下:“因此,除了大型的、固定尺寸的结构由下一节介绍的zone分配器来处理更为合适之外,分配内核内存应当首选这种方法。”

【118页】倒数第10行:(雨丝风片)
[本书]:
存储分配程序的速度慢还会造成另一个问题,就是让那些频繁使用内核接口的程序员放弃把存储分配程序作为首选方法,而代之以通过维护他们自己的内存分配池来创建自己的存储分配程序。
[原文]:
Another problem with a slow memory allocator is that programmers of frequently used kernel interfaces will think that they cannot afford to use the memory allocator as their primary one. Instead, they will build their own memory allocator on top of the original by maintaining their own pool of memory blocks.
[雨丝风片]:
这一节讲的是内核的内存分配程序,而不是用户级的内存分配程序,受其影响的自然也应当是内核程序员,而非用户级的程序员。“那些频繁使用内核接口的程序员”应译为“那些会被经常用到的内核接口的程序员”。

【118页】倒数第7行:(雨丝风片)
[本书]:
如果它们都有自己的空闲链表,那么两个链表所关联的内存总和就是两个子系统分别运行时所使用的内存之和的最大值。而如果它们共享一个空闲链表,则两个链表所关联的内存总和就可能是同两个子系统分别运行时使用内存最多的那个子系统的一样。
[原文]:
If they have their own free lists, the amount of memory tied up in the two lists will be the sum of the greatest amount of memory that each of the two subsystems has ever used. If they share a free list, the amount of memory tied up in the free list may be as low as the greatest amount of memory that either subsystem used.[雨丝风片]:
这一段把“和”和“最大值”译得比较混乱,不能清晰地表达出愿意。这段的意思就是讲甲、乙两个子系统各有各的空闲队列,于是甲的空闲块不能给乙用,乙的空闲块不能给甲用,这就造成了空闲块的浪费。原文另译如下:如果它们都有自己的空闲链表,那么这两个链表所占据的内存数量就是每个子系统曾经使用过的最大内存数量的和。如果它们共享一个空闲链表的话,这个空闲链表占据的内存数量就只相当于内存用量最大的那个子系统的值了。

【119页】上数第2行:(雨丝风片)
[本书]:
通常,这个区域会返回一块可以使用的内存。只有当区域内所有的内存块都已经投入使用的时候,区域存储分配程序才会再创建一组内存区域。
[原文]:
Usually, the zone will have an available piece of memory that it can return. Only if every piece of memory in the zone is in use will the zone allocator have to do a full allocation.
[雨丝风片]:
这两句译得离原意太远了。另译如下:一般情况下,区域内都能够找到一块可供返回的内存。仅当区域内的所有内存块都已被使用时,区域分配器才会进行一次完整意义上的分配。


【119页】上数第9行:(雨丝风片)
[本书]:
此时的分配算法就切换到速度较慢,但是对于分配大于一页的内存效率比较高的策略上来。2-幂算法分配大小为1、2、4、8、...,n个页面,而大块算法按页面倍数分配内存,分配大小为1、2、3、4、...,n个页面。
[原文]:
The algorithm switches to the slower but more memory-efficient strategy for allocation sizes larger than a page. This value is chosen because the power-of-2 algorithm yields sizes of 1, 2, 4, 8, . . ., n pages, whereas the large block algorithm that allocates in multiples of pages yields sizes of 1, 2, 3, 4,. . ., n pages.[雨丝风片]:
此处完全把前后语句的因果关系给译没了,使人不知所云。另译如下:如果分配的尺寸大于一个页面,算法就会切换成比较慢的但内存效率却更高一些的策略。之所以选择这个数值,是因为2-幂算法此后分配的尺寸将是1、2、4、8、...、n个页面,而大块算法则将按页面的整数倍分配1、2、3、4、...、n个页面。


【119页】上数第14行:(雨丝风片)
[本书]:
首先把需要分配的大内存取整为页面大小的倍数.
[原文]:
Large allocations are first rounded up to be a multiple of the page size.
[雨丝风片]:
应把"向上"取整的含义明确地译出来:大型的内存分配首先会被向上取整为页面尺寸的倍数.


【119页】上数第19行:(雨丝风片)
[本书]:
因为在释放一块内存时并不指定其大小,所以分配程序需要一直跟踪其所释放的内存片的大小.
[原文]:
Because the size is not specified when a block of memory is freed, the allocator must keep track of the sizes of the pieces that it has handed out.
[雨丝风片]:
此处把hand out译为释放简直就是颠倒黑白.另译如下:由于在释放一块内存的时候不会指定其大小,因此分配程序必须对它分配出去的内存块的尺寸进行跟踪.


【119页】倒数第12行:(雨丝风片)
[本书]:
如果采用太过标准的策略,那么这些分配请求的内存就会增加一倍.
[原文]:
The size of these requests would be nearly doubled if the more typical strategy were used.
[雨丝风片]:
"the more typical strategy"显然是有所指的,它说的就是前面提到的按2的整数次幂的分配策略,此处译为"太过标准的策略"反而不知所云了.另译如下:如果采用那个较为典型的策略,这些请求的尺寸就会被扩大为原来的两倍.


【119页】倒数第1行:(雨丝风片)
[本书]:
它们往往会被放大,因而容易浪费空间.
[原文]:
They tend to be large and hence wasteful of space.
[雨丝风片]:
不知"放大"从何说起?另译如下:它们可能会很大,从而浪费空间.


【120页】上数第2行:(雨丝风片)
[本书]:
因为它们个个都会浪费内存,它们浪费的内存加到一起就会比纯粹的内存用量大得多.
[原文]:
Because they are individually wasteful of space, collectively they waste too much space compared to a denser representation.
[雨丝风片]:
什么是"纯粹的内存用量"?不知所云.另译如下:因为它们各自都很浪费内存,和紧密的内存分配方式比起来,它们总共浪费的内存就太多了.


【120页】上数第15行:(雨丝风片)
[本书]:
会超过把它们放入完整的内存池在效率上获得的好处.
[原文]:
outweighs the efficiency gains from keeping them in the general pool.
[雨丝风片]:
"完整的内存池"为何物?此处显然说的是不区分大小和类型的"大杂烩"内存池,应译为"通用内存池".


【157页】倒数第6行:(雨丝风片)
[本书]:
对于一个有4KB大小的虚拟页面以及32位页表项的4GB地址空间来说,需要用100个页表项,即4MB来描述整个地址空间。
[原文]:
For a 4-Gbyte address space with 4-Kbyte virtual pages and a 32-bit page-table entry, 1 million entries, or 4 Mbyte, would be needed to describe an entire address space.
[雨丝风片]:
少了一个“万”字,1000000就成了100了。。。

【167页】上数第3行:(雨丝风片)
[本书]:
5.1 支持虚拟内存对一个机器意味着什么?对于支持虚拟内存的机器一般需要哪4种硬件设备?
[原文]:
5.1 What does it mean for a machine to support virtual memory? What four hardware facilities are typically required for a machine to support virtual memory?
[雨丝风片]:
“facilities”这个东西在这儿翻译成“设备”让我很是琢磨了一阵,书中并没有把虚拟内存对硬件的要求细化到具体“设备”这一级,因此,我觉得这里翻译成“对于支持虚拟内存的机器,一般要求提供哪4种硬件功能?”比较好。

【167页】上数第8行:(雨丝风片)
[本书]:
5.4 什么是写时复制?在大多数UNIX应用中,系统调用fork后面几乎总是会立即跟着执行一次exec系统调用。为什么在实现fork时使用写时复制技术显得特别有吸引力?
[原文]:
5.4 What is copy-on-write? In most UNIX applications, the fork system call is followed almost immediately by an exec system call. Why does this behavior make it particularly attractive to use copy-on-write in implementing fork?
[雨丝风片]:
这里把前后两句话之间的因果关系给翻译没了。最后一句话的提问是显式依赖于第二句话的事实的。因此,我觉得如此翻译较好:“在大多数的UNIX应用程序中,fork系统调用后面几乎总是会紧跟着一个exec系统调用。为什么这种做法会使得在实现fork的时候使用copy-on-write特别有吸引力?”

[260页] 表中:(billypeng )
pagedep   根据(应该为跟踪)目录块的依赖关系。

[261页] 16行:(billypeng )
软共享(应该为更新)代码。
        19行原文:The ATTACHED flag shows that the buffer with which the dependency structure is associated is not currently being written.
             书中翻译为:ATTACHED这个标志表明,当前没在把依赖关系所关联的缓冲区写入磁盘。
         本人认为,该中文意思没有表示进行时态,应该翻译为:
          ATTACHED这个标志表明,当前没有处在把依赖关系结构所关联的缓冲区写入磁盘的过程中。

【454页】上数第17行:(雨丝风片)
[本书]:
**13.35 既然IPsec可以递归调用网络协议栈内的,这对该代码有什么样的要求?
[原文]:
**13.35 Since IPsec may call routines in the network stack recursively, what requirement does this place on the code?
[雨丝风片]:
此处遗漏了对routines的翻译。

【454页】上数第18行:(雨丝风片)
[本书]:
**13.36 试述一个数据包可以通过代码的3条路。
[原文]:
**13.36 Describe three paths that a packet can take through the networking code.
[雨丝风片]:
此处只说“通过代码的3条路”着实让人不解,数据包如何“通过”代码?查原文,此处遗漏了对networking的翻译。原意当指一个数据包进入网络协议栈处理代码之后的3个可能的去向,比如接收、转发等等。

466页,表14.3:(japonensis)
例程 procO_init()应该为proc0_init()
0错印成O 了

[ 本帖最后由 雨丝风片 于 2006-9-1 16:58 编辑 ]

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
发表于 2006-03-20 09:09 |显示全部楼层
呵~好!

论坛徽章:
0
发表于 2006-03-20 09:53 |显示全部楼层
我把gvim发现的问题也合并进来了,这样查找方便一些。

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
发表于 2006-03-20 11:22 |显示全部楼层
好同志啊

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
发表于 2006-03-20 11:49 |显示全部楼层
原帖由 剑心通明 于 2006-3-20 11:22 发表
好同志啊

神龙见首不见尾.

论坛徽章:
0
发表于 2006-03-21 09:16 |显示全部楼层
又找到了两处值得考虑的地方。现在有了中文版还是离不开英文版,,不过希望这里的勘误工作能够让更多的人不再依赖英文版了,

论坛徽章:
0
发表于 2006-03-21 11:45 |显示全部楼层

回复 1楼 雨丝风片 的帖子

这本书有电子版下么? 呵呵,想先看看

论坛徽章:
0
发表于 2006-03-21 11:53 |显示全部楼层
原帖由 zzh_nuaa 于 2006-3-21 11:45 发表
这本书有电子版下么? 呵呵,想先看看


网上有英文版流传。

论坛徽章:
0
发表于 2006-03-21 12:06 |显示全部楼层

回复 8楼 雨丝风片 的帖子

给个英文版的链接呀,最好是PDF的,呵呵

论坛徽章:
0
发表于 2006-03-21 12:32 |显示全部楼层
原帖由 zzh_nuaa 于 2006-3-21 12:06 发表
给个英文版的链接呀,最好是PDF的,呵呵


我搜也是搜,你搜也是搜,自己搜!

[ 本帖最后由 雨丝风片 于 2006-3-21 12:45 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP