The March issue of Communications of the ACM includes an article by Andrew S. Tanenbaum, "Lessons Learned from 30 Years of Minix", which is well worth reading for those interested in operating systems in general or the UNIX/POSIX/Linux world in particular. Tanenbaum developed Minix, a UNIX-workalike that would run on an original IBM PC (256kB RAM and a single 360kB 5.25" floppy disk), in order to have an operating system that students could study in a course or on their own. One of those, presently, was Linus Torvalds, who decided to write his open operating system, Linux, for the x86 architecture.
Operating Systems Design and Implementation, the book that Tanenbaum wrote along the way, is excellent. Sometime in those years, I took a course on operating systems, which used two books, Tanenbaum's and another. The other book would have something like "operating systems use page to move code not currently needed off to disk." Tanenbaum's would have a diagram of the memory management unit of a widely used processor, with an explanation of how it supported paging. And then there was the full source code of Minix in the back of the book. The book is by now on its third edition.