Operating Systems: Three 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, James Perry, and Rohan Das, the current leaders in fixes, suggestions, and other advice.

  • 04/05/15 (Sandeep Ummadi): typo in threads-locks-usage
  • 03/25/15 (Teri Zhao): bug in homework vsfs.py when out of inodes
  • 03/17/15 (AmirBehzad Eslami): typos and suggestions in mystery-chapter
  • 03/12/15 (Jakob Olandt): typo in threads-bugs
  • 03/09/15 (Glen Granzow @ College of Idaho): typos in vm-beyondphys-policy and vm-beyondphys
  • 03/09/15 (Perry Kivolowitz): bug in file-device
  • 03/04/15 (Dheeraj Shetty @ NC State): awkward phrasing in vm-smalltables
  • 03/04/15 (Jingxin Li): bug in table in threads-intro
  • 03/03/15 (Angela Demke Brown @ Toronto): bug in vm-paging homework script
  • 03/02/15 (Glen Granzow @ College of Idaho): typo in vm-freespace homeowork
  • 02/25/15 (Glen Granzow @ College of Idaho): typos and fixes in vm-paging and vm-tlbs
  • 02/25/15 (Perry Kivolowitz): a few small things in threads-locks
  • 02/25/15 (Perry Kivolowitz): variable naming in threads-api
  • 02/23/15 (Perry Kivolowitz): wording change and extra commentary on interrupt masking in threads-locks
  • 02/20/15 (Michael Walfish @ NYU): added discussion on partial orderings in threads-bugs
  • 02/19/15 (Michael Walfish @ NYU): typographical fix and bug in threads-bugs
  • 02/17/15 (Glen Granzow @ College of Idaho): typo in cpu-sched homework, and bug in priority boost graph in cpu-sched-mlfq
  • 02/17/15 (Michael Walfish @ NYU): fixes in threads-cv and threads-locks-usage as well as the suggestion to renumber tables and figures in a consistent way (a change that will happen slowly to all chapters with tables).
  • 02/16/15 (Perry Kivolowitz): suggested clarification in vm-beyondphys-policy
  • 02/13/15 (Glen Granzow @ College of Idaho): typo in cpu-mechanisms
  • 02/09/15 (Perry Kivolowitz): some clarity suggested and hopefully provided in vm-paging
  • 02/06/15 (Joe Jean @ NYU): clarifications around homework in cpu-intro
  • 01/02/15 (Perry Kivolowitz): strong philosophical disagreement in vm-api which we eventually agreed with
  • 01/31/15 (Michael Walfish @ NYU): typo in cpu-api
  • 01/30/15 (David Hartman): typo in cpu-intro
  • 01/28/15 (Dheeraj Shetty @ NC State): typo in vm-paging
  • 01/26/15 (Emad Sadeghi): typo in intro
  • 01/21/15 (Ali Razeen @ Duke): typo in vm-beyondphys-policy
  • 01/11/15 (Huseyin Sular): typo in intro
  • 01/11/15 (Brian Gorman): clarification in threads-api
  • 01/03/15 (Authors): typos in file-integrity, file-raid, file-journaling, vm-paging, vm-tlbs
  • 01/03/15 (Hao Chen): typo in file-raid
  • 12/30/14 (Adriana Iamnitchi and class @ USF): typos and other fixes in cpu-mechanisms, vm-freespace, threads-sema, file-implement, file-ffs
  • 12/30/14 (Hao Chen): typo in file-raid
  • 12/29/14 (Erik Turk): typo in vm-vax
  • 12/17/14 (Riccardo Mutschlechner): typos in file-lfs
  • 12/17/14 (William Royle @ Grinnell): clarified number of I/Os in simple write in file-implement
  • 12/14/14 (Yudong Sun): missing cite in dist-intro
  • 12/10/14 (Hao Chen): typo in vm-paging figure 18.7
  • 12/08/14 (Rohan Das @ Toronto): typos in vm-mechanism, vm-segmentation, vm-paging, vm-tlbs, threads-intro, threads-sema, file-intro
  • 12/02/14 (John Brady @ Grinnell): type in file-lfs
  • 11/24/14 (Itai Hass @ Toronto): typo in file-implement
  • 11/24/14 (Jerod Weinman @ Grinnell): typo in file-implement
  • 11/17/14 (Nick Weinandt): typo in file-journaling
  • 11/11/14 (Yudong Sun): typo in threads-sema
  • 11/06/14 (Itai Hass @ Toronto): typo in vm-mechanism
  • 10/29/14 (Andrew Valencik @ Saint Mary's): typos in threads-intro homework
  • 10/27/14 (Eduardo Stelmaszczyk): bug in threads-bugs
  • 10/16/14 (Rohan Das @ Toronto): typo in cpu-sched
  • 10/13/14 (Jerod Weinman @ Grinnell): clearer prose in threads-bugs
  • 10/13/14 (Joel Kuntz @ Saint Mary's): typo in vm-paging
  • 09/15/14 (Robert Ordonez): typo in vm-vax
  • 10/04/14 (Jerod Weinman @ Grinnell): better fig placement in threads-locks
  • 09/15/14 (Robert Ordonez): typo in vm-smalltables
  • 09/23/14 (Aditya Venkataraman): typo in threads-api
  • 09/17/14 (Jiao Dong @ Rutgers): correct attribution of Confucius quote.
  • 09/15/14 (Robert Ordonez and class @ Southern Adventist): suggestions for improvement for cpu-sched
  • 09/12/14 (Liang Yin): typo in vm-segmentation
  • 09/08/14 (Caleb Sumner @ Southern Adventist U.): typo in cpu-api homework
  • 09/03/14 (Rohan Pasalkar @ Minnesota): typos in file-lfs , file-integrity , dist-nfs
  • 08/26/14 (Riccardo Mutschlechner): typos in file-implement
  • 08/05/14 (Riccardo Mutschlechner): typos in file-intro, file-devices, file-disks, file-raid
  • 08/01/14 (Riccardo Mutschlechner): typo in threads-cv
  • 07/28/14 (Christoph Jaeger @ HTWK Leipzig): bug in diagram in vm-mechanism
  • 07/02/14 (Jan Reineke @ Saarland): graph bug in cpu-sched-mlfq
  • 07/02/14 (Kartik Singhal): typo in cpu-intro citations
  • 06/30/14 (Hugo Diaz): typo in intro code snippet
  • 06/10/14 (Adam Drescher @ WUSTL): many suggestions and fixed in vm-paging, vm-segmentation, vm-tlbs, cpu-mechanisms, cpu-intro, cpu-sched-lottery, file-ffs, vm-smalltables, vm-intro, vm-freespace, vm-mechanism, cpu-sched-multi, cpu-sched-mlfq
  • 06/08/14 (Akiel Khan): typo in threads-intro
  • 05/29/14 (Riccardo Mutschlechner): typo in vm-paging
  • 05/22/14 (Neeraj Badlani @ NC State): table typos in threads-cv
  • 05/22/14 (Mohammed Alali @ Delaware): typo in vm-freespace
  • 05/19/14 (Adam Drescher @ WUSTL): typo in cpu-sched
  • 05/18/14 (Mohammed Alali @ Delaware): typo in vm-intro
  • 05/18/14 (Adam Drescher @ WUSTL): typo in cpu-sched
  • 05/15/14 (Chien-Chung Shen @ Delaware): typo in file-implement
  • 05/13/14 (Chien-Chung Shen @ Delaware): typo in file-intro
  • 05/03/14 (Samer Al-Kiswany): corrections in file-intro , file-implementation , file-journaling , file-lfs , file-integrity
  • 05/02/14 (Dorian Arnold @ New Mexico): bug in disk.py homework tool
  • 05/01/14 (Chien-Chung Shen @ Delaware): consistency problem in vm-tlbs
  • 04/29/14 (Satish Chebrolu @ NetApp): typo in cpu-mechanism
  • 04/28/14 (Chien-Chung Shen @ Delaware): consistency problem in vm-freespace
  • 04/25/14 (Chien-Chung Shen @ Delaware): typo in vm-paging
  • 04/16/14 (Leslie Schultz): typo in file-devices
  • 04/13/14 (Patricio Jara): bug in Zemaphore code in threads-sema
  • 04/07/14 (Mohammed Alali @ Delaware): typo in threads-locks
  • 03/31/14 (Chien-Chung Shen @ Delaware): bad cite in vm-api
  • 03/22/14 (Chien-Chung Shen @ Delaware): two sema value mistakes in threads-sema
  • 03/14/14 (Shreevatsa R.): typos in intro and vm-smalltables
  • 03/12/14 (Jonathan Perry @ MIT): figure incorrect in file-disk
  • 02/28/14 (Brian Kroth): typo in vm-beyondphys-policy
  • 02/23/14 (Ming Chen @ Stonybrook): missing cite in file-journaling
  • 02/06/14 (Jun He): typos in file-intro and vm-mechanism
  • 01/20/14 (Bjorn Lindberg): clarified random number generation in cpu-sched-lottery
  • 01/19/14 (Thomas Griebel): added cover art
  • 01/19/14 (Matty Williams): suggestion for hyperlinks, etc. in e-version
  • 01/19/14 (Nelson Gomez): typo in intro
  • 01/19/14 (Bobby Jack): typos in intro
  • 01/18/14 (Varun Vats): typo in preface
  • 01/06/14 (Biswajit Mazumder @ Clemson): Clarification in vm-segmentation
  • 01/06/14 (Nghia Huynh @ Texas): Incorrect type in lowlevellock in threads-locks
  • 12/20/13 (Ernst Biersack @ France): typo in file-raid homework
  • 12/17/13 (Emmett Witchel @ Texas): incorrect bit about NFS permissions dist-nfs
  • 12/05/13 (Satyanarayana Shanmugam): typo in file-lfs picture
  • 12/03/13 (Ruslan Kiselev): small fixes in file-disk and file-raid
  • 11/22/13 (Satyanarayana Shanmugam): typos in file-integrity
  • 11/14/13 (Satyanarayana Shanmugam): typo in RAID homework file-raid
  • 10/18/13 (Huanchen Zhang): typo in dist-nfs
  • 10/14/13 (Satyanarayana Shanmugam): clarified OOM in vm-beyondphys-policy
  • 10/11/13 (Masashi Kishikawa): fixed two bugs in threads-sema
  • 10/11/13 (Satyanarayana Shanmugam): small bug in threads-cv
  • 09/20/13 (Masashi Kishikawa): fixed bug in figure in vm-freespace
  • 09/17/13 (Tongxin Zheng): wrong modes in cpu-mechanism
  • 08/19/13 (Anand Mundada): small typo in threads-sema
  • 08/12/13 (Torin Rudeen @ Princeton): many fixed in threads-locks-usage
  • 08/03/13 (Charlotte Kissinger): typos in file-devices and dialogue-persistence and file-raid
  • 07/31/13 (Deepika Muthukumar): wrong XOR calculation in file-integrity
  • 07/26/13 (Yue Zhuo): missing shift in vm-smalltables ; also encouragement to update the darn website, leading to a slew of updates
  • 03/15/13 (Hrishikesh Amur): overclaim about windows device drivers
  • 03/14/13 (Yufui Ren): graph typo in cpu-sched
  • 02/26/13 (Ajaykrishna Raghavan): typo in cites in vm-freespace
  • 02/21/13 (Nathan Dipiazza): typo in vm-beyondphys
  • 02/17/13 (Zuyu Zhang): typo in cpu-mechanism
  • 01/24/13 (Kaushik Kannan): footnote about AS randomization needed
  • 01/21/13 (Lei Tian @ Nebraska-Lincoln): bug in disk.py homework tool
  • 01/21/13 (Varun Vats): typo in threads-intro
  • 12/19/12 (B. Brahmananda Reddy): typo in cpu-mechanism
  • 12/01/12 (Sandeep Ummadi): bugs in vmm-intro , dialogue-concurrency
  • 10/20/12 (Joel Sommers @ Colgate): -pthread not -lpthread on link line in intro, threads-api, threads-intro
  • 10/18/12 (Xu Di): permissions detail in file-implementation , bug in disk simulator
  • 10/14/12 (Joel Sommers @ Colgate): missing destroy calls in threads-api
  • 10/01/12 (Jerod Weinman @ Grinnell): typos in vm-freespace , file-disks , file-journaling
  • 09/01/12 (David Hanle): typo in vm-segmentation
  • 08/20/12 (Bala Subrahmanyam Kambala): typo in dialogue-virtualization
  • 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 threads-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 threads-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 threads-init and threads-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.