Operating Systems:
Four Easy Pieces


Flaws Found and Fixed


Here is a list of problems found and fixed in the book. Thanks so much to all of you for your help! Particular thanks to Kevin Liu, Ahmed Fikri, Srinivasan Thirunarayanan, Abhirami Senthilkumaran, Huanchen Zhang, Sivaraman Sivaraman, Finn Kuusisto, and James Perry, the current leaders in fixes, suggestions, and other advice.

  • 06/20/12 (Benita Bose): typos in file-ffs, dist-intro, file-journaling, file-implementation
  • 05/19/12 (Suriyhaprakhas Balaram Sankari): typos in file-devices , file-disks
  • 05/17/12 (Sharad Punuganti): typos in dist-nfs , file-intro , threads-intro , dist-intro
  • 05/14/12 (Adam Eggum): disk simulator crash
  • 05/12/12 (Guilherme Baptista): typos in thread-sema
  • 04/24/12 (Finn Kuusisto): Many typos in cpu-api , cpu-mechanism , cpu-sched , vm-segmentation , vm-freespace (actually used the word <“>suck<”> by accident!), vm-smalltables , vm-beyondphys-policy , threads-cv , file-journaling
  • 04/24/12 (Sivaraman Sivaraman): mistake in math term in file-disks
  • 04/12/12 (James Perry @ UM-D): many typos in file-journaling, file-implementation, file-ffs
  • 04/03/12 (Jake Gillberg): wrong variable in thread-cv
  • 03/22/12 (Emily Jacobson): RAID terminology fix in file-raid
  • 03/12/12 (Sivaraman Sivaraman): two typos in threads-api and one small but critical fix in vm-segmentation example calculation.
  • 03/12/12 (Benita Bose): typo in vm-dialogue , and a few problems in threads-intro
  • 03/10/12 (Sivaraman Sivaraman): cache sizes of N, N+1 mixed up in vm-beyondphys-policy
  • 03/05/12 (Sivaraman Sivaraman): typo in vm-mechanism , which I kept claiming wasn't there! (but it was)
  • 03/05/12 (Shreevatsa R.): many fixes in threads-lock , threads-cv
  • 03/05/12 (Tony Adkins): typo in dialogue-concurrency
  • 03/01/12 (Benita Bose): typo in vm-mechanism
  • 03/01/12 (Shreevatsa R.): typos in thread-init and thread-api
  • 02/14/12 (James Perry @ UM-D): typo in cpu-sched-lottery ; typo in cpu-api, vm-tlbs, vm-intro, threads-api, file-implementation
  • 02/14/12 (Ripudaman Singh): small code bug in threads-deadlock
  • 02/11/12 (Charlotte Kissinger): Figures in cpu-sched are incorrectly labeled
  • 02/09/12 (Tony Adkins): Code example in vm-tlbs is unclear
  • 02/04/12 (Xiang Peng): unrestricted in vm-mechanism should be restricted (or privileged)
  • Fall'12 (Srinivasan Thirunarayanan): Fixes to file-implementation, file-journaling, file-lfs, dist-afs, file-devices, threads-sema, vm-intro, file-implementation homework, file-disks, vm-beyondphys-policy, vm-beyondphys, vm-smalltables, vm-paging, vm-paging homework, vm-relocation, cpu-api
  • Fall'12 (Abhirami Senthilkumaran): Fixes to file-intro, file-implementation, file-journaling, file-lfs, file-disk, vmm-intro, vm-beyondphys-policy, cpu-sched-lottery, intro, vm-smalltables
  • Fall'12 (Huanchen Zhang): Fixes to file-raid, file-implementation, file-journaling, vm-mechanism, vm-tlbs, vm-smalltables, threads-locks, cpu-sched
  • Fall'12 (Henry Abbey): Fixes to threads-deadlock, file-devices, file-implementation, dist-nfs, vm-tlbs
  • Fall'12 (Sy Jin Cheah): Fixes to intro, file implementation, file-ffs, file-lfs, dist-afs, threads-cv
  • Fall'12 (Cara Lauritzen): Fixes to threads-deadlock, file-devices
  • Fall'12 (Brennan Payne): Suggestion for more/better summaries, fixes to vm-segmentation
  • Fall'12 (Ripudaman Singh): Fixes to vm-paging, vm-beyondphys-policy , homeworks for both
  • Fall'12 (Nathan Sullivan): Fixes to intro, cpu-sched-lottery, vm-paging, vm-beyondphys, vm-beyondphys-policy, lab-tutorial
  • Fall'12 (Lihao Wang): Fixes to vm-tlbs, vm-relocation
  • Fall'12 (Balasubramanian): Fixes to cpu-api, cpu-mechanisms
  • Fall'12 (Meng Huang): Fixes to file-implementation, threads-cv
  • Fall'12 (Ross Aiken): Files to file-journaling
  • Fall'12 (Seth Pollen): Fixes to file-journaling
  • 09/20/11 (Huanchen Zhang): Process intro: extra will
  • 09/20/11 (Srinivasan Thirunarayanan): Process API: typo in code snippet.
  • 09/20/11 (Brennan Payne): Segmentation: typo in we get a physical address of 39016, which is not get the correct physical address.
  • 09/06/11 (Martha Ferris): Intro: to difficult s.b. to be difficult ... Intro: not to have write in assembly s.b. not to have to write in assembly
  • 07/30/11 (Karl Wallinger): Scheduling: ...of course there a number of different... missing an are
  • 06/14/11 (Karl Wallinger): Intro: extra would
  • 06/08/11 (Mike Griepentrog): Lab: Expert C Programming is still in print
  • 05/20/11 (Ahmed Fikri): About 30 different comments, too many to list here
  • 05/14/11 (Dustin Metzler): Chapter numbering confusing
  • 05/11/11 (Radford Smith): FFS: to allocate the data blocks of an file ... LFS: and hence to overall name of the log-structured file system ... LFS: (where NxM) .. LFS: On top the mechanism described above
  • 05/10/11 (Dustin Passofaro): AFS: state file should be stale file ... NFS if case should be in case ... RAID: other interesting that should be other interesting ideas that ... Intro: it simple -> it simply ... Deadlock: more more should be more ... Locks: it simple calls s.b. it simply calls ... Devices: for the OS send s.b. for the OS to send
  • 05/10/11 (Alex Wyler): file-journaling now and not not in we are not/now also writing to the journal first
  • 05/06/11 (Kevin Liu): cpu-api complete mispelled as comlplete
  • 04/27/11 (Radford Smith): threads-locks-hw forgot lock_t at end of typedef.
  • 04/25/11 (Murugan Kandaswamy): dist-nfs ... server (not client ) does not reply in a timely manner?
  • 03/11/11 (Ryland Herrick): threads-sema Lookups , not inserts .
  • 03/11/11 (Ryland Herrick): threads-locks-hw Missing ! in LL/SC lock.
  • 03/02/11 (Alex Wyler): paging-smalltables Bits PFN7 and PT7 don't exist.
  • 03/02/11 (Jay Lim): vmm-intro discuss not discus .
  • 03/02/11 (Zef RosnBrick): vm-segmentation fixed is not get the correct physical address by removing get
  • 03/02/11 (Zef RosnBrick): cpu-sched-mlfq replaced of with than
  • 02/23/11 (Dan Soendergaard @ U. Aarhus): dialogue-virtualization illusion misspelled as illision
  • 05/10/10 (Tuo Wang): vm-relocation 32KB is 32768
  • 05/10/10 (Tuo Wang): vm-relocation fetch from correct addresses
  • 05/10/10 (Tuo Wang): vm-paging number of numerical typos
  • 05/10/10 (Tuo Wang): vm-smalltables 55 not 45
  • 05/10/10 (Tuo Wang): file-lfs unclear sentence about buffering
  • 05/08/10 (Matt Reichoff): file-raid design should be designed
  • 03/05/10 (Cody Hanson): vm-relocation you can how should be you can see how
  • 01/24/10 (Natasha Eilbert): lab-tutorial p.1 you said Unlike Java, there is no connection between the file name and the contents of the file; because of that, just use your common sense in naming files. After thinking about this for a little bit I got what you meant, but at first was confused and thought you were saying that in C there actually _shouldn't_ be any relation at all between the filename and its contents! Maybe you could say something like no enforced connection .
  • 01/24/10 (Natasha Eilbert): lab-tutorial p. 4 that that should just be that
  • 01/24/10 (Natasha Eilbert): lab-tutorial p. 8 defintion should be definition
  • 10/24/09 (Kevin Liu): m2 - Sample assembly code on page two shows address 128, 130 and 134. However, the addresses in the diagram on page 3 shows addresses 128, 130, 133.
  • 10/24/09 (Kevin Liu): m3 page 5: next 11 bits should be next 12 bits
  • 10/24/09 (Kevin Liu): m3 page 5: In the C pseucode-code section, && should be replaced by &.
  • 10/24/09 (Kevin Liu): m3 page 8: Perhaps mention that the free list management policy does not get rid of external fragmentation, but simply tries to minimize it.
  • 10/24/09 (Kevin Liu): m4 page 4: The example showing the translation from virtual address 21 seems to have a mistake. We picked PFN 5, however, going by Figure 12.2, we should have picked PFN 7. This would mean that our physical address should be 117 instead of 85.
  • 10/24/09 (Kevin Liu): m5 page 2: CISC is defined as complex-instruction set computing , however, RISC is defined as reduced-instruction set computers . Should change one of the two to make the definitions consistent.
  • 10/24/09 (Kevin Liu): m6 page 3: Specifically, we use a tiny 16KB address space with 1KB pages (Figure 14.2) . Should be Figure 14.1.
  • 10/24/09 (Kevin Liu): m6 page 8: At PhysAddr1 (some physical address, or, if the page directory is page-aligned, just the physical frame number), we have the first chunk of 16 page table entries for the first 16 VPNs in the address space. It would look something like what you see in Figure 14.2. Should be Figure 14.3. Also, the text refers to the diagrams as Figures but they are actually labeled as Tables .
  • 10/24/09 (Kevin Liu): m6 page 10: page 254 of VA space is mapped to PFN 55, not 45.
  • 10/24/09 (Kevin Liu): m8 page 10: However, in many cases the importance of said algorithms has decreased, as the discrepancy between memory-access and disk-access times has increased. Should be decreased, not increased.