Operating Systems: Three Easy Pieces
Operating Systems: Three Easy Pieces (now
version 1.00 see
book news for details), a free online operating systems
book! The book is centered around three conceptual pieces that are
fundamental to operating systems:
virtualization,
concurrency, and
persistence. In understanding the conceptual, you will also learn the
practical, including how an operating system does things like schedule the
CPU, manage memory, and store files persistently. Lots of fun stuff! Or
maybe not so fun?
This book
is and will always be free in PDF form, as seen below. For
those of you wishing to
BUY a copy, please consider the following:
The No-Order File System
Modern file systems use ordering points to maintain consistency in the face of system crashes. However, such ordering leads to lower performance, higher complexity, and a strong and perhaps naive dependence on lower layers to correctly enforce the ordering of writes. Lower layers such as the hypervisor in virtual machine systems, and the disk in baremetal systems often fail to propagate or act on flushes correctly, thereby failing to enforce ordering.
F FULLFSYNC: Does the same thing as fsync(2) then asks the drive to flush all buffered data to the permanent storage device (arg is ignored). This is currently implemented on HFS, MS-DOS (FAT), and Universal Disk Format (UDF) file systems. The operation may take quite a while to complete.