Welcome to CS258, Winter 2014. Last year's materials are in directories 2009/ -- 2013/. Grading policies: 50% midterm, 50% final project. The final project will be take-home. You will be expected to produce working kernel code for a real-life OS (Linux, Illumos/OpenSolaris, Android, or even Windows) implementing or in-depth exploring an "advanced" OS feature. For some sample topics, see 2012/project-topics.txt. 1. Listen to Bryan Cantrill's talk on the history of innovation in Solaris: http://www.youtube.com/watch?v=-zRN7XLCRhc (blog link with slides: http://smartos.org/2011/12/15/fork-yeah-the-rise-and-development-of-illumos-2/) This talk, besides a history of adavnced features we are going to study has much wisdom on project management and history of Unix. 2. Unless you are using a Linux computer, install a Linux distribution in a virtual machine. I will be using Ubuntu in VirtualBox. (virtualbox.org) 3. If you haven't encountered x86 assembly before, look at A Tiny Guide to Programming in 32-bit x86 Assembly Language, by Adam Ferrari http://www.cs.virginia.edu/~cs216/Fall2005/notes/x86-doc.pdf 4. Books: Textbook (Dartmouth bookstore should have it): Solaris Internals by Richard McDougall and Jim Mauro (second edition) (http://www.amazon.com/Solaris-Internals-OpenSolaris-Kernel-Architecture/dp/0131482092) Other reading: Linkers and Loaders, John Levine Free online: http://www.iecc.com/linker/ or http://www.amazon.com/Linkers-Kaufmann-Software-Engineering-Programming/dp/1558604960 Linux Assembly Language Programming, by Bob Neveln http://www.amazon.com/Linux-Assembly-Language-Programming-Neveln/dp/0130879401 This book is unique in its approach. It is not really about "assembly programming for Linux", it actually explains computing from the ground up, from the basic physics of implementing a bit in memory, to core PC IO. Linux and assembly are only icing on the cake. If you are interested in Linux kernel programming for your project, consider http://www.amazon.com/Linux-Kernel-Programming-Michael-Beck/dp/0201719754 or http://www.amazon.com/Linux-Kernel-Development-3rd-Edition/dp/0672329468/