TDDB63 Concurrent Programming and Operating Systems
Reading HT 2005
Errata
The official errata of the book text book (Silberschatz, Galvin, Gagne, Operating Systems Concepts, Wiley. - seventh edition) is available at text book homepage.
You can find other errata compiled by C. Kessler, that teaches TDDB68/72 and uses the same book at his course home page: Errata
Here follows the list of errata compiled by A. Bednarski of the seventh edition of the book. (August 2005).
- p. 45 Figure 2.2.: The prototype of the ReadFile contains a "c"
character, that should not be there.
BOOL ReadFile c (HANDLE file, ... -> BOOL ReadFile (HANDLE file, ...
[August 18, 2005] - p. 49 Figure 2.6. The return statement returns a
variable "o" (alphabetic character "o"). It should be "0"
(character zero), or "o" should be declared as integer
variable.
return o; -> return 0;
[August 18, 2005] - p. 52: Last paragraph
... in Chapter 3 with an program ... -> ... in Chapter 3 with a program ...
[August 18, 2005] - p. 69: Last line of the example (minor errata) - consistency of
naming conventions (the authors use uppercase for "framework" in
the rest of the example.
.NET framework ... -> .NET Framework
[August 18, 2005] - p. 97: The caption of the Figure 3.13.
Communications models. ... --> Communication models. ...
[August 18, 2005] - p. 103: The paragraph describing the third parameter of
shmat() (5th paragraph) is redundant (see the end of
4th paragraph).
[August 26, 2005] - p. 104: There is an extra equal sign in the declaration of
segment_id variable.
int segment_id;= --> int segment_id;
[August 26, 2005] - p. 104: In the last paragraph, the printed message has wrong
cases.
... writes the message Hi There! to ... --> ... writes the message Hi there! to ...
[August 26, 2005] - p. 149: Minor remark - In Project description, there is an extra space in the definition
of matrix C (C code). This is not a error, but only question of taste.
int C [M] [N]; --> int C [M][N];
[August 26, 2005] - p. 201: Figure 6.9, the call to waiting should be wait.
waiting(mutex); -> wait(mutex);
[August 29, 2005] - p. 228: First paragraph.
... every transaction request ... --> ... every transaction requests ...
[August 29, 2005] -
p. 168: Figure 5.7 does not include the numbers of each queue. The
queue with quantum equal to 8, 16 and FCFS should be numbered 0, 1
and 2 respectively. The text refers to those numbers.
[September 1, 2005] - p. 172: Last line in the last paragraph.
Pthreads identifies ... --> Pthread API identifies ...
[September 1, 2005] - p. 174: The C code of Figure 5.9 is incorrect. The definition of
runner function appears after its first reference (in
pthread_create). You might add first the declaration of function
runner before main, or simply move the runner definition before
main.
[September 1, 2005] - p. 185: Last paragraph of Section 5.7.4. The slashes in front of
POSIX and WinAPI are unnecessary. Further, WinAPI was called Win32
API (the official name of the Windows API) until now.
... Java, /POSIX, and /WinAPI/ provide ... --> ... Java, POSIX, and Win32 API ...
[September 1, 2005] - p. 228: Typo error in the first paragraph:
... that every transaction require ... --> ... that every transaction requires ...
[September 8, 2005] - p. 231: Description of Dekker's solution lacks of
initialization information of variable turn; it should
be set to 0 or 1. Observe that, if turn is other than 0 or 1, then
two processes can enter the critical section simultaneously.
int turn; --> int turn = 0; /* initially 0 or 1 */
[September 8, 2005] - p. 231: Minor remark, but it holds for several places in the
book. It concerns the examples in C code. In the book
you use true/false or TRUE/FALSE to initialize boolean (not a
standard C/C++ data type). However this is not the point. As you know C/C++ is
case sensitive and you should not use both variant in the same
code sample. Thus, for consistency you
should either use the uppercases or lowercases only in your code
samples, not both.
[September 1, 2005] - p. 277: Minor remark. The figures illustrating Figure 8.1 are
incremented by factor of 10. Th base address in the figure is
30004, whereas in the text is 300040 (the same holds for the limit
value).
[September 9, 2005] - p. 396: Last paragraph - there is a macro \small left that
became small.
... systems (95, 98, NT, small 2000 ... -> ... systems (95, 98, NT, 2000 ...
[September 15, 2005] - p. 424: Figure 11.6 contains wrong pointer numbers. Block 9
should point to block 16 (not 1), block 16 to 1 (not empty), block
1 to block 10 (not 1), and finally block 10 to 25 (not 2).
[September 15, 2005] - p. 567: There are three mistakes in the sample code for executing
the shell.
- The command line contains backslashes, which are used as escaping sequence i C code. It should be definitely slashes instead of backslashes, or double backslashes (for Windows OS variants).
- The second mistake concerns quoting: it should be a double quote, not twice a single quote in the exec system call.
- Finally, the system call should be execlp not execvp (since the argument list is a list of arguments, not a vector of arguments). Observe, that it should be changed in the text as well, in the first line that follows the code example.
execvp(''\bin\sh'', ''\bin\sh'', NULL); --> execlp("/bin/sh", "/bin/sh", NULL);andUsing the execvp() system ... -> Using the execlp() system ...
[September 20, 2005] -
p. 560: Typo error in the last paragraph, 6th line.
... they can then can gain ... -> ... they can then gain ...
[September 22, 2005] -
p. 569: The Visual Basic macro seems wrong to me. I guess that
first, double single quotes should be a single double quote (see
remark of page 567). Further, the backslash of c:\ was transformed
into a new line.
vs = Shell(''c: command.com /k format c:'',vbHide) --> vs = Shell("c:\command.com /k format c:", vbHide)[September 22, 2005] -
p. 580: Typo error in the second line.
... in encrypting steams ... --> ... in encrypting streams ...
[September 23, 2005]
Page responsible: Andrzej Bednarski
Last updated: 2005-09-23
