Errata
Despite our best efforts to create a book with zero defects, our vigilant
readers have pointed out some bugs. Please report any new errata to
Randy Bryant and Dave O'Hallaron.
Note that some of these errors have been corrected in more recent
printings.
We maintain errata for the English-language editions.
Errata for editions in other languages can be found as follows:
North American Edition (ISBN 0-13-610804-0)
- Preface
- Chapter 1: A Tour of Computer Systems
- Chapter 2: Representing and Manipulating Information
- p. 52, Practice Problem 2.11, Part B: It should read
"Why does this call to function inplace_swap set the array element to 0?."
Posted 04/24/2011. Kanak Kshetri
- p. 63, fourth line: It should read "... there is no guarantee of portability."
Posted 11/04/2011. Ronald Jones
- p. 82, second line. The book states that Niels Abel was a Danish
mathematician. In fact, he was Norwegian.
Posted 03/02/2011. Dag Henning Liodden Sørbø
- p. 84, Figure 2.23. The last sentence of the caption should read
"When it is greater than 2w-1, there is positive overflow."
Posted 02/01/2011. Dominique Smulkowska
- p. 84, third line from bottom.
Should read: "When x+y &ge 8, the addition has a positive overflow ..."
Posted 06/17/2010. Yili Gong
- p. 100, Section 2.4.1, paragraphs one (two lines after formula for decimal representation) and two (two lines after formula for binary representation):
"weighted by positive powers of ..." should be
"weighted by nonnegative powers of ...".
Posted 08/03/2011. Dong Han
- p. 100, Section 2.4.1, paragraph two, second line. The second-to-the-last binary digit in the
sequence should be labeled
b-n+1,
rather than b-n-1.
Posted 08/03/2011. Dong Han
- p. 101, Figure 2.30. Label b-n-1
should be b-n+1
Posted 08/03/2011. Dong Han
- p. 120, Bit-level coding rules. The item ``Casting, either explicit or implicit'' should be moved from the list of forbidden operations to the list of allowed operations.
Posted 05/24/2011. Yu Tanaka
- p. 123, Problem 2.68. The example when n = 6 should yield 0x3F.
Posted 05/24/2011. Taketo Yoshida
- p. 150, Solution to Problem 2.51D
Should read: "0.086 X 2000 &asymp 171 meters".
Posted 06/17/2010. Yili Gong
- Chapter 3: Machine-Level Representation of Programs
- p. 175, Text above Figure 3.6.
The last line should state "Instruction 1 reads parameter xp
form memory and stores it in register ..."
Posted 07/27/2011. Ji Bin
- p. 176, Practice Problem 3.4.
The last sentence of the problem statement should state "... the operation
should change the size first ...."
Posted 04/11/2010. David Ramsey
- p. 184, first line.
It should read: "A more conventional method of setting up the
dividend makes use of the cltd instruction."
Posted 03/28/2011. Yili Gong
- p. 188, third paragraph, line 7.
The parenthetical remarks are reversed.
The first case is one of negative overflow, and the second
case is one of positive overflow.
Posted 06/10/2010. Jonas Pfenninger
- p. 200, Problem 3.20, part C:
The reference should be to Figure 3.14(c).
Posted 10/13/2011. Ji Bin
- p. 209, Aside.
The equation at the middle of the bottom line should read
TMP = 2(Tran - TOK).
Posted 04/23/2010. David Ramsey
- p. 210, abstract code at bottom of page.
Instead of ``true-expr,'' it should be
``then-expr.'' Also, the label ``done''
should have the same indentation as the label ``false''
Posted 11/18/2010. Lei Ma
- p. 216, Last sentence of first paragraph.
Should read "We recommend that you study the C procedure switch_eg_impl and how it relates to the assembly code version."
Posted 04/26/2010. Gordon Kindlmann
- p. 222, Figure 3.22(b).
The arrow should point to the box containing the value 0x800483e1.
Posted 09/27/2010. David O'Hallaron
- p. 234, 6th example in table.
The type of expression *(E+i-3) should be int, not int *
Posted 11/14/2010. Karl Pichotta
- p. 243, paragraph starting with "To generate a pointer to an object ...."
Last sentence should read:
"For pointer r in register %edx
and integer variable i in register %eax, we can generate ...."
Posted 04/23/2010. David Ramsey
- p. 259, Practice Problem 3.43, line 6.
Should state that register %esi is equal to 0x2, and
register %edi is equal to 0x3.
Posted 11/01/2010. Mustafa Kazdagli
- p. 272, IA32 code for simple_l. line 5.
Comment should read "Retrieve y".
Posted 04/26/2010. Gordon Kindlmann
- p. 277, Last sentence of paragraph following heading "Arithmetic Instructions":
"32-values" should be "32-bit values"
Posted 11/04/2011. Ronald Jones
- p. 286, First paragraph, lines 6 and 10.
In both places, "call_proc" should be "proc"
Posted 11/04/2011. Ronald Jones
- p. 301, Problem 3.62. Argument definition
Marray_t A should be int A[M][M]
Posted 03/06/2010. Randal E. Bryant
- p. 315, Answer to Problem 3.19.
We can see, in fact, that the computation of 13! has overflowed, since
1,932,053,504 / 12 = 148,619,500.31.
Posted 10/19/2011. Richard Callahan
- p. 325, Answer to Problem 3.41.
The listing of field names in the answer should be "i c d j".
Posted 10/31/2010. David Selvaraj
- Chapter 4: Processor Architecture
- p. 346, Sentence starting on 3rd line from bottom.
Should read "Lines 15 to 24 show ...."
Posted 06/11/2010. Yili Gong
- p. 370 Aside tracing the pushl instruction.
The second instruction byte should be 0x2f,
instead of 0x28. The value of rB in the Fetch stage
should be 0xf instead of 0x8.
Posted 12/08/2010. Karl Pichotta
- p. 373, Practice Problem 4.15, first sentence.
Should read "We can see ... that the rrmovl instruction is the unconditional version ...."
Posted 05/20/2010. Randal E. Bryant
- p. 384, Figure 4.26.
The values for constants INOP and IHALT are reversed.
They should be 1 and 0, respectively.
Posted 01/17/2012. John Ye
- p. 415, Figure 4.49
The blue box under the heading "Cycle 6" should be labeled "W", not "M".
Posted 04/05/2011. Yang Firo
- p. 452, Problem 4.46.
The reference should be to the code written for Problem 4.45.
Posted 06/21/2010. Yili Gong
- p. 461, Problem 4.9 Solution.
The figure should have an OR gate, rather than an AND gate.
Here is a PDF rendition of the correct
figure.
Posted 07/27/2011. Pascal Garcia
- p. 462, Solution to Problem 4.11.
The second instruction byte should be 0xf4,
instead of 0x84. The value of rA in the Fetch stage
should be 0xf instead of 0x8.
Posted 12/15/2010. Dorukhan Gülöz.
- p. 462, Solution to Problem 4.12.
The second instruction byte should be 0x0f,
instead of 0x08. The value of rB in the Fetch stage
should be 0xf instead of 0x8.
Posted 12/15/2010. Randal E. Bryant.
- p. 466, Solution to Problem 4.26.
All four uses of "GOPS" should be replaced with "GIPS".
Posted 06/21/2010. Yili Gong
- p. 466, Solution to Problem 4.27.
The formula should use lower-case k throughout.
Posted 11/04/2011. Ronald Jones
- Chapter 5: Optimizing Program Performance
- p. 479, Second block of code in aside on "Optimizing function calls by inline substitution".
Line four should read
counter = counter + 4
Posted 05/10/2010. David Ramsey
- p. 481, Figure 5.1.
Comment on line 19 should read "For even n, finish remaining element."
Posted 06/13/2011. Zhengshan Yan
- p. 503, assembly code for combine4 and its associated
description. Variable "limit" should be "length", and the text should state that the value is held in register %rbp.
Posted 1/20/2011 and 10/13/2011. Karl Pichotta and Ji Bin
- p. 504, First paragraph. Line 8 should read "... register %rbp is only used by the
cmp operation ..."
Posted 05/10/2010. David Ramsey
- p. 504, Under category Read-0nly. Last sentence should read
"The read-only registers for the loop in combine4 are %rax
and %rbp."
Posted 05/10/2010. David Ramsey
- p. 505, first line. Should state: "... the cmp operation and used by the jg operation ..."
Posted 07/09/2010. Yili Gong
- p. 505, second full paragraph, third line.
Should state: "... (cmp) and branch (jg) operations ..."
Posted 07/09/2010. Yili Gong
- p. 505, second full paragraph, line 7.
Should read: "... not taken."
Posted 11/04/2011. Ronald Jones
- p. 506, line 12 of text. Sentence should read "The chain on the right would require a ..."
Posted 07/09/2010. David Ramsey
- p. 511, Figure 5.17 legend.
Symbols for "int *" and "int +" are interchanged.
Posted 1/20/2011. Karl Pichotta
- p. 515, Figure 5.22 legend.
Symbols for "int *" and "int +" are interchanged.
Posted 1/20/2011. Randal E. Bryant
- p. 520, Figure 5.27 legend.
Symbols for "int *" and "int +" are interchanged.
Posted 1/20/2011. Randal E. Bryant
- p. 523, Problem 5.8. The code computes the product of an array of n doubles, not integers.
Posted 11/13/2011. Ji Bin
- p. 528, second line from bottom.
Should state "... it increases the CPE by at most 3 clock cycles."
Posted 07/09/2010. Yili Gong
- p. 533, Figure 5.32. The loop limit check on line 11 should be i < n.
Posted 10/13/2011. Ji Bin
- p. 537, Figure 5.37. In Example A, there should be no lines between the boxes labeled "s_data" and those labeled "load".
Here is a corrected version (pdf).
Posted 02/10/2010. Randal E. Bryant
- p. 543, Figure 5.38 caption. "resultss" should be "results".
Posted 02/18/2010. David O'Hallaron
- Chapter 6: The Memory Hierarchy
- p. 585, second full paragraph, line 4."increasing" should be "decreasing".
Posted 11/4/2011. Ronald Jones
- p. 602, paragraph 2 (after the table).
"The next three columns" should be "The next four columns".
Posted 07/23/2010. Yili Gong
- Chapter 7: Linking
- p. 670, paragraph 3, "referenced by main.o"
should be "referenced by main2.o".
Posted 11/08/2011. Ji Bin and Yili Gong
- Chapter 8: Exceptional Control Flow
- p. 711. Figure 8.11, line 14. The comment should read "System call number 1" instead of "System call number 0".
Posted 05/24/2011. Michael Victor Zink
- p. 721. Second to last paragraph. Process graphs are mentioned in
passing without a proper discussion. Please see
Web Aside ECF:GRAPHS on the Web Aside page for a more thorough treatment.
Posted 04/14/2011. Gordon Kindlmann
- pp. 747--751, Figures 8.31--8.33. The programs call a
function (printf) that is not async-signal-safe inside a signal
handler. This introduces a potential deadlock. Please see Web Aside ECF:SAFETY on the
Web Aside page for details.
Posted 09/01/2010. Godmar Back
- p. 769, Problem 8.22. "system returns the value 8" should be
"mysystem returns the value 8".
Posted 07/28/2010. Yili Gong
- p. 772, Solution to Practice Problem 8.3. The sequence bcac
is not possible. Strike the second to last sentence. The last sentence
should be "There are three possible sequences: acbc,
abcc, and bacc."
Please see
Web Aside ECF:GRAPHS on the Web Aside page for an example of the process graph.
Posted 5/03/2010. David Ramsey and Gordon Kindlmann
- p. 772, Solution to Practice Problem 8.4. Strike the sentence
beginning "In general, any topological sort..." and the (incorrect)
graph that follows.
Please see
Web Aside ECF:GRAPHS on the Web Aside page for an example of the correct
process graph.
Posted 5/03/2010. David Ramsey and Gordon Kindlmann
- Chapter 9: Virtual Memory
- p. 789, Bulleted list: "Step 3: the MMU" should be "Step 4: the MMU", and "Step 4: the cache" should be "Step 5: the cache".
Posted 04/6/2010. David O'Hallaron
- p. 804, Fig 9.26. The start address for the 64-bit read-only Program text segment should be 0x00400000.
Posted 04/18/2011. Firo Yang and Yili Gong
- p. 808, Fig 9.29(b). For clarity, the location of the mapped VM area for
Process 2 should be clearly different than for Process 1.
Posted 11/28/2011. Tao Du
- p. 809, Fig 9.30(a). The location of the mapped VM area for
Process 2 should match that of Part (b) and be consistent with Fig. 9.29(b).
Posted 11/28/2011. Tao Du
- p. 816, Fig 9.34 caption.
"Padded regions of allocated blocks are shaded with stripes" should be
"Padded regions of allocated blocks are shaded with a darker blue".
Posted 07/3/2010. Yili Gong
- p. 838, line 3, should be "continue coalescing with the free buddies."
Posted 04/6/2010. David O'Hallaron
- Chapter 10: System-Level I/O
- Chapter 11: Network Programming
- p. 888, paragraph 5, last line. "bridge C's segment" should be "host C's segment".
Posted 11/27/2010. Steven Tricanowicz
- Chapter 12: Concurrent Programming
- p. 940, last line, "read_set" should be "ready_set".
Posted 04/6/2010. David O'Hallaron
- p. 950, Sec 12.3.4, pthread_exit prototype. "Returns: 0 if OK, nonzero on error" should be "Never returns".
Posted 11/27/2010. Steven Tricanowicz
- p. 951, Sec 12.3.5, last paragraph, line 2, "pthread_wait" should be "pthread_join".
Posted 4/19/2011. Yang Firo
- p. 962, definition of P(s), line 2. "process is restarted" should be
"thread is restarted"
Posted 07/23/2010. Yili Gong
- p. 983, para 3. The race is actually between the next increment of
i in line 11 (not the next call to
pthread_create in line 12), and the dereferencing and
assignment of vargp in line 21.
Posted 05/16/2011. Shuang Yang
- p. 996, Solution to Problem 12.7, step 10, the
values of %eax1 and %eax2 should be "—" and "1" respectively.
Posted 4/19/2011. Yang Firo
- p. 997, Solution to Problem 12.12, line 2. "gethostbyname" should be "ctime".
Posted 4/19/2011. Yang Firo
- Appendix A: Error Handling
- Index
International Edition (ISBN 0-13-713336-7)
The international edition has somewhat different content and different page numbering.
- Preface
- Chapter 1: A Tour of Computer Systems
- Chapter 2: Representing and Manipulating Information
- p. 86, Practice Problem 2.11, Part B: It should read
"Why does this call to function inplace_swap set the array element to 0?."
Posted 04/24/2011. Kanak Kshetri
- p. 97, fourth line: It should read "... there is no guarantee of portability."
Posted 11/04/2011. Ronald Jones
- p. 116, second line. The book states that Niels Abel was a Danish
mathematician. In fact, he was Norwegian.
Posted 03/02/2011. Dag Henning Liodden Sørbø
- p. 118, Figure 2.23. The last sentence of the caption should read
"When it is greater than 2w-1, there is positive overflow."
Posted 02/01/2011. Dominique Smulkowska
- p. 118, third line from bottom.
Should read: "When x+y &ge 8, the addition has a positive overflow ..."
Posted 06/17/2010. Yili Gong
- p. 134, Section 2.4.1, paragraphs two (two lines after formula for decimal representation) and three (two lines after formula for binary representation):
"weighted by positive powers of ..." should be
"weighted by nonnegative powers of ...".
Posted 08/03/2011. Dong Han
- p. 100, Section 2.4.1, paragraph two, second line. The second-to-the-last binary digit in the
sequence should be labeled
b-n+1,
rather than b-n-1.
Posted 08/03/2011. Dong Han
- p. 135, Figure 2.30. Label b-n-1
should be b-n+1
Posted 08/03/2011. Dong Han
- p. 154, Bit-level coding rules. The item ``Casting, either explicit or implicit'' should be moved from the list of forbidden operations to the list of allowed operations.
Posted 05/24/2011. Yu Tanaka
- p. 157, Problem 2.68. The example when n = 6 should yield 0x3F.
Posted 05/24/2011. Taketo Yoshida
- p. 184, Solution to Problem 2.51D
Should read: "0.086 X 2000 &asymp 171 meters".
Posted 06/17/2010. Yili Gong
- Chapter 3: Machine-Level Representation of Programs
- p. 209, Text above Figure 3.6.
The last line should state "Instruction 1 reads parameter xp
form memory and stores it in register ..."
Posted 07/27/2011. Ji Bin
- p. 210, Practice Problem 3.4.
The last sentence of the problem statement should state "... the operation
should change the size first ...."
Posted 04/11/2010. David Ramsey
- p. 218, first line.
It should read: "A more conventional method of setting up the
dividend makes use of the cltd instruction."
Posted 03/28/2011. Yili Gong
- p. 222, third paragraph, line 7.
The parenthetical remarks are reversed.
The first case is one of negative overflow, and the second
case is one of positive overflow.
Posted 06/10/2010. Jonas Pfenninger
- p. 234, Problem 3.20, part C:
The reference should be to Figure 3.14(c).
Posted 10/13/2011. Ji Bin
- p. 243, Aside
The equation at the middle of the bottom line should read
TMP = 2(Tran - TOK).
Posted 04/23/2010. David Ramsey
- p. 244, abstract code at bottom of page.
Instead of ``true-expr,'' it should be
``then-expr.'' Also, the label ``done''
should have the same indentation as the label ``false''
Posted 11/18/2010. Lei Ma
- p. 250, Last sentence of first paragraph.
Should read "We recommend that you study the C procedure switch_eg_impl and how it relates to the assembly code version."
Posted 04/26/2010. Gordon Kindlmann
- p. 256, Figure 3.22(b).
The arrow should point to the box containing the value 0x800483e1.
Posted 09/27/2010. David O'Hallaron
- p. 268, 6th example in table.
The type of expression *(E+i-3) should be int, not int *
Posted 11/14/2010. Karl Pichotta
- p. 277, paragraph starting with "To generate a pointer to an object ...."
Last sentence should read:
"For pointer r in register %edx
and integer variable i in register %eax, we can generate ...."
Posted 04/23/2010. David Ramsey
- p. 293, Practice Problem 3.43, line 6.
Should state that register %esi is equal to 0x2, and
register %edi is equal to 0x3.
Posted 11/01/2010. Mustafa Kazdagli
- p. 306, IA32 code for simple_l. line 5.
Comment should read "Retrieve y".
Posted 04/26/2010. Gordon Kindlmann
- p. 311, Last sentence of paragraph following heading "Arithmetic Instructions":
"32-values" should be "32-bit values"
Posted 11/04/2011. Ronald Jones
- p. 320, First paragraph, lines 6 and 10.
In both places, "call_proc" should be "proc"
Posted 11/04/2011. Ronald Jones
- p. 349, Answer to Problem 3.19.
We can see, in fact, that the computation of 13! has overflowed, since
1,932,053,504 / 12 = 148,619,500.31.
Posted 10/19/2011. Richard Callahan
- p. 359, Answer to Problem 3.41.
The listing of field names in the answer should be "i c d j".
Posted 10/31/2010. David Selvaraj
- Chapter 4: Processor Architecture
- p. 380, Sentence starting on 3rd line from bottom.
Should read "Lines 15 to 24 show ...."
Posted 06/11/2010. Yili Gong
- p. 404 Aside tracing the pushl instruction.
The instruction bytes should be 0xa0 and 0x2f
(instead of 0x28.) The value of rB in the Fetch stage
should be 0xf instead of 0x8.
Posted 12/08/2010. Karl Pichotta
- p. 407, Practice Problem 4.15, first sentence.
Should read "We can see ... that the rrmovl instruction is the unconditional version ...."
Posted 05/20/2010. Randal E. Bryant
- p. 418, Figure 4.26.
The values for constants INOP and IHALT are reversed.
They should be 1 and 0, respectively.
Posted 01/17/2012. John Ye
- p. 449, Figure 4.49
The blue box under the heading "Cycle 6" should be labeled "W", not "M".
Posted 04/05/2011. Yang Firo
- p. 496, Solution to Problem 4.11.
The second instruction byte should be 0xf4,
instead of 0x84. The value of rA in the Fetch stage
should be 0xf instead of 0x8.
Posted 12/15/2010. Dorukhan Gülöz.
- p. 496, Solution to Problem 4.12.
The second instruction byte should be 0x0f,
instead of 0x08. The value of rB in the Fetch stage
should be 0xf instead of 0x8.
Posted 12/15/2010. Randal E. Bryant.
- p. 486, Problem 4.46.
The reference should be to the code written for Problem 4.45.
Posted 06/21/2010. Yili Gong
- p. 495, Problem 4.9 Solution.
The figure should have an OR gate, rather than an AND gate.
Here is a PDF rendition of the correct
figure.
Posted 07/27/2011. Pascal Garcia
- p. 500, Solution to Problem 4.26.
All four uses of "GOPS" should be replaced with "GIPS".
Posted 06/21/2010. Yili Gong
- p. 500, Solution to Problem 4.27.
The formula should use lower-case k throughout.
Posted 11/04/2011. Ronald Jones
- Chapter 5: Optimizing Program Performance
- p. 515, Figure 5.1.
Comment on line 19 should read "For even n, finish remaining element."
Posted 06/13/2011. Zhengshan Yan
- p. 537, assembly code for combine4 and its associated
description. Variable "limit" should be "length", and the text should state that the value is held in register %rbp.
Posted 1/20/2011 and 10/13/2011. Karl Pichotta and Ji Bin
- p. 538, First paragraph. Line 8 should read "... register %rbp is only used by the
cmp operation ..."
Posted 05/10/2010. David Ramsey
- p. 538, Under category Read-0nly. Last sentence should read
"The read-only registers for the loop in combine4 are %rax
and %rbp."
Posted 05/10/2010. David Ramsey
- p. 539, first line. Should state: "... the cmp operation and used by the jg operation ..."
Posted 07/09/2010. Yili Gong
- p. 539, second full paragraph, third line.
Should state: "... (cmp) and branch (jg) operations ..."
Posted 07/09/2010. Yili Gong
- p. 539, second full paragraph, line 7.
Should read: "... not taken."
Posted 11/04/2011. Ronald Jones
- p. 540, line 12 of text. Sentence should read "The chain on the right would require a ..."
Posted 07/09/2010. David Ramsey
- p. 545, Figure 5.17 legend.
Symbols for "int *" and "int +" are interchanged.
Posted 1/20/2011. Karl Pichotta
- p. 549, Figure 5.22 legend.
Symbols for "int *" and "int +" are interchanged.
Posted 1/20/2011. Randal E. Bryant
- p. 554, Figure 5.27 legend.
Symbols for "int *" and "int +" are interchanged.
Posted 1/20/2011. Randal E. Bryant
- p. 557, Problem 5.8. The code computes the product of an array of n doubles, not integers.
Posted 11/13/2011. Ji Bin
- p. 562, second line from bottom.
Should state "... it increases the CPE by at most 3 clock cycles."
Posted 07/09/2010. Yili Gong
- p. 567, Figure 5.32. The loop limit check on line 11 should be i < n.
Posted 10/13/2011. Ji Bin
- p. 577, Figure 5.38 caption. "resultss" should be "results".
Posted 02/18/2010. David O'Hallaron
- Chapter 6: The Memory Hierarchy
- p. 619, second full paragraph, line 4."increasing" should be "decreasing".
Posted 11/4/2011. Ronald Jones
- p. 636, paragraph 2 (after the table).
"The next three columns" should be "The next four columns".
Posted 07/23/2010. Yili Gong
- p. 666, Prob. 6.27. In line 4 of the table, $t=22$ should be $t=23$.
Posted 11/8/2011. Han Xu
- Chapter 7: Linking
- p. 704, paragraph 3, "referenced by main.o"
should be "referenced by main2.o".
Posted 11/08/2011. Ji Bin and Yili Gong
- Chapter 8: Exceptional Control Flow
- p. 745. Figure 8.11, line 14. The comment should read "System call number 1" instead of "System call number 0".
Posted 05/24/2011. Michael Victor Zink
- p. 755. Second to last paragraph. Process graphs are mentioned in
passing without a proper discussion. Please see
Web Aside ECF:GRAPHS on the Web Aside page for a more thorough treatment.
Posted 04/14/2011. Gordon Kindlmann
- pp. 781--785, Figures 8.31--8.33. The programs call a
function (printf) that is not async-signal-safe inside a signal
handler. This introduces a potential deadlock. Please see Web Aside ECF:SAFETY on the
Web Aside page for details.
Posted 09/01/2010. Godmar Back
- p. 803, Problem 8.22. "system returns the value 8" should be
"mysystem returns the value 8".
Posted 07/28/2010. Yili Gong
- p. 806, Solution to Practice Problem 8.3. The sequence bcac
is not possible. Strike the second to last sentence. The last sentence
should be "There are three possible sequences: acbc,
abcc, and bacc."
Please see
Web Aside ECF:GRAPHS on the Web Aside page for an example of the process graph.
Posted 5/03/2010. David Ramsey and Gordon Kindlmann
- p. 806, Solution to Practice Problem 8.4. Strike the sentence
beginning "In general, any topological sort..." and the (incorrect)
graph that follows.
Please see
Web Aside ECF:GRAPHS on the Web Aside page for an example of the correct
process graph.
Posted 5/03/2010. David Ramsey and Gordon Kindlmann
- Chapter 9: Virtual Memory
- p. 823, Bulleted list: "Step 3: the MMU" should be "Step 4: the MMU", and "Step 4: the cache" should be "Step 5: the cache".
Posted 04/6/2010. David O'Hallaron
- p. 838, Fig 9.26. The start address for the 64-bit read-only Program text segment should be 0x00400000.
Posted 04/18/2011. Firo Yang and Yili Gong
- p. 842, Fig 9.29(b). For clarity, the location of the mapped VM area for
Process 2 should be clearly different than for Process 1.
Posted 11/28/2011. Tao Du
- p. 843, Fig 9.30(a). The location of the mapped VM area for
Process 2 should match that of Part (b) and be consistent with Fig. 9.29(b).
Posted 11/28/2011. Tao Du
- p. 850, Fig 9.34 caption.
"Padded regions of allocated blocks are shaded with stripes" should be
"Padded regions of allocated blocks are shaded with a darker blue".
Posted 07/3/2010. Yili Gong
- p. 872, line 3, should be "continue coalescing with the free buddies."
Posted 04/6/2010. David O'Hallaron
- Chapter 10: System-Level I/O
- Chapter 11: Network Programming
- p. 922, paragraph 5, last line. "bridge C's segment" should be "host C's segment".
Posted 11/27/2010. Steven Tricanowicz
- Chapter 12: Concurrent Programming
- p. 974, last line, "read_set" should be "ready_set".
Posted 04/6/2010. David O'Hallaron
- p. 984, Sec 12.3.4, pthread_exit prototype. "Returns: 0 if OK, nonzero on error" should be "Never returns".
Posted 11/27/2010. Steven Tricanowicz
- p. 985, Sec 12.3.5, last paragraph, line 2, "pthread_wait" should be "pthread_join".
Posted 4/19/2011. Yang Firo
- p. 997, definition of P(s), line 2. "process is restarted" should be
"thread is restarted"
Posted 07/23/2010. Yili Gong
- p. 1017, para 3. The race is actually between the next increment of
i in line 11 (not the next call to
pthread_create in line 12), and the dereferencing and
assignment of vargp in line 21.
Posted 05/16/2011. Shuang Yang
- p. 1030, Solution to Problem 12.7, step 10, the
values of %eax1 and %eax2 should be "—" and "1" respectively.
Posted 4/19/2011. Yang Firo
- p. 1031, Solution to Problem 12.12, line 2. "gethostbyname" should be "ctime".
Posted 4/19/2011. Yang Firo
- Appendix A: Error Handling
- Index