(Are you looking at a stale web page? Try refreshing your browser.)

( Latest Revision -- Dec 25, 2005 )


Silberschatz, Galvin, and Gagne
February 8, 2005

To Be Corrected in 2nd Printing:

Page xiii, fifth bullet: Chapter 22 ==> Chapter 23

p. 52 2nd line from bottom: change "an program" to "a program"

Page 68, third paragraph: JVMis ==> JVM is

Page128, line 6: (perhaps thousands) of ==> (perhaps thousands of)

Page 195, line 2: no preemptive ==> preemptive

p. 198 line 2: change "TestAndSetLock(&lock)" to "TestAndSet(&lock)"

p. 201 5th line from bottom: change "waiting(mutex)" to "wait(mutex)"

p. 219, 2nd paragraph from bottom: "described in Section 19.5 ..." ==>
   "described in Section 19.4 ..."

p. 286, 2nd paragraph, first line: "fixed-partition" ==> "variable-partition"

p. 305, last line: 16 KB ==> 16 K

p. 306, first and second lines: 8 KB ==> 8 K

p. 393, 4th paragraph, line 1: the term "symbolic link" is used here without
   being defined.  The term is used again 11, 12, and 18 lines further down on
   the same page, and on the first line of p. 394.

p. 399, 2nd paragraph, 2nd-to-last line: "server to other NFS clients " -->
   "server to some NFS clients"

p. 444, 2nd paragraph, 4th line from end, check the reference to the Sprite
   DFS - I don't remember for sure but I don't think that Sprite semantics are
   mentioned previous to this reference.  If not then the reference is

Page 456, line: ISCSI  ==> iSCSI

Page 569, line 22: line starting with "vs = .." should not wrap. It should be
     only one line.

p. 582, 3rd block of text, line 8: "H(m) = H(m'), we know that m1 = m2" =>
   "H(m) = H(m'), we know that m = m'"

p. 590, 3rd line from the bottom: "In this variation" ==> "In a variation"

pp. 613-5, Headings of sections 16.2, 16.2.1 & 16.2.2: It is confusing that a
    "distributed operated system" is characterized as a type of "distributed
    operating system."  Perhaps a way out is to change the title of 16.2.2 to
    "fully distributed operating system" - or to change the title of 16.2 to
    "Types of Network-Oriented Operating Systems"

p. 641, "Chapter Objectives" box, 4th bullet "in a is a useful" ==> "in a
   distributed system is a useful"

p. 641, "Chapter Objectives" box, 4th bullet "availability. file replication"
   ==> "availability."

p. 658, 2nd to last line: Probably "DFS uses its own" ==> should be "AFS uses
   its own"

p. 660, I'm not sure whether the reference to "Apollo Domain" in problem 17.10
   is a "dangling" one - is Apollo Domain discussed in the text?

p. 666, 3rd from last line: probably the text "(including itself)" should be
   omitted.  Otherwise text on lines 2-4 of p. 667 and step #3 on p. 667 imply
   that a process defers replying to itself until after it has left the
   critical section.  Also the fourth (not-numbered) bullet on p. 667 says the
   total number of messages per critical section entry is 2*(n-1) - but that
   figure should be 2n if processes send a message to every process including
   themselves.  Finally, the illustrative example on p. 667 does not depict
   the processes as sending messages to themselves - it just states that each
   process sends a message to the other processes.

p. 669, 8th line from the bottom: this line refers to a  record.  On
   page 671 in the first line of the first bullet,  is not included in
   the list of possible control records.  ("Abort" is there, but it's not
   clear whether that means the same as "no".  The last two lines of the first
   paragraph on p. 670 seem to describe how a "abort" or "commit" can get onto
   the log.)

p. 674, line 5 and the last lines of the 3rd and 4th bulleted items:
   "ch18/18" ==> "the data"

p. 675, line 1: "ch18/18" ==> "Q"

p. 675, section, paragraph 2, last line: "unique names" seems to be
   incorrect.  Section 18.1.2 is concerned with a total ordering of events and
   time stamps.

p. 676, section, line 3: "cascading rollbacks may result" - not sure
   to what this refers - I don't find discussion of this in section 6.9.

p. 686, 5th and 4th line from the bottom.  The symbols "foo" and "boo" are
   used for the two messages.  On p. 687, first paragraph 3rd line from the
   end, the symbols "S" and "F" are used for the two messages.  (foo is also
   mentioned on p. 687 in paragraph 2, lines 3 &4; and in paragraph 2, lines
   3, 5, & 9.)

p. 703, line 5: "require that interrupts to be disabled for" ==> "require that
   interrupts be disabled for"

p. 708 first bullet from bottom: name of function should be setsched_policy.

p. 708 second line from bottom: name of function should be setsched_policy.

p. 729, 3rd paragraph, line 4: T is referred to without being defined.  (The
   definition of T appears in the last line on the page.) Is there one buffer
   of size 2 x T x ri, or two buffers of size T x ri?

p. 729, 4th paragraph, including points 1 and 2: Shouldn't this say that for
   each request Ri there are two buffers B(i,0) and B(i,1), and that in each
   cycle J, we retrieve the data from disk to each B(i,J mod 2) and transfer
   data from each B(i, (J+1) mod 2)?

p. 753, 1st paragraph of section 21.5.2, line 5:  I think it should be
   "device" or "device controller" instead of "device driver."  A device
   driver is software, so it would not initiate a hardware interrupt.

p. 756, section 21.6.1, 5th line after the 3 bulleted items: I think it should
   be "kernel address space" instead of "CPU's address space."

p. 766, 6th paragraph, sentence 3: The sentence starts out saying "include"
   must be examined next.  However the pathname is /usr/include/stdio.h - so
   it should mention "usr" next, not "include."  Also in this discussion, is
   it _inodes_ for root, usr, include, and stdio.h that we are concerned with
   obtaining, or _dentry's_?

p. 833, section, sentence one: I'm not sure but this sentence seems
   to be cut off at the end.  Perhaps "work in each." ==> "work in each

Page 859, line 11: [Cantrill et al. 2004] title should be "Dynamic
     Instrumentation of Production Systems"