The OS Book Pile
So, I'm doing my graduation project about NUMA architectures and what OpenSolaris and Linux do to support them. I'm halfway through it, getting to the implementation part of the project.
Here's the current book pile residing at my desk, it started lower, got a little bigger with some other OS books that I had to return to the library, and it's been stable (except for the occasional accident) for the last couple of weeks.
Starting at the top:
"Just Enough UNIX", Paul K. Anderson
"Solaris 9 Administration Guide", Paul Watters
"Concurrent Programming in Java: Design Principles and Patterns", Doug Lea
"Design Patterns", the Gang of Four one
"Operating Systems: Internals and Design Principles", Stallings
"Linux Kernel Internals", Beck and a bunch of equally intelligent folks
"Solaris Internals", Richard McDougall and Jim Mauro
"Linux Kernel Development", Robert Love (from Novell)
"UNIX Systems for Moderns Architectures", Schimmel
"Pthreads Programming", Nichols et al
"Linux Programming", Neil Matthew and Richard Stones
"UNIX Internals", Vahalia
Check out a couple of paragraphs from the VM part of the monography, feel free to comment on it. It's what I'm calling a "release candidate for a draft".
"Usually, UNIX processes on 32bit architectures can theoretically occupy as much as 4Gb of space. However, memory is a scarce resource and the system shares it between all running processes. So when it is time to bring a new process to memory, the system begins by bringing a few necessary pieces of the program. This portion that resides in memory is called the resident set of the process. If the processor encounters a memory reference to a part of the process that is not currently loaded, it blocks the execution of such process and brings that data to memory from disk [STA 05]."
...
"UNIX systems use both virtual memory and paging as memory management techniques. We now have processes divided into pages, being loaded into memory frames as these pages are needed during execution. Such method of bringing pages as they're necessary is called demand paging."
I'm currently finishing the MPO/liblgrp and libnuma part of the paper. Once that's done, it's just a matter of polishing the whole thing and making it more readable. It gets difficult to explain even the simpler concepts with a new perspective, focusing on what the project is about.
But I'm getting there.