Welcome to CS258, Winter 2013. Last year's materials are in directories 2009/ -- 2012/. Grading policies: 30% first midterm, 30% second midterm, 40% 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, or Windows) implementing or in-depth exploring an "advanced" OS feature. For last year's topics, see 2012/project-topics.txt. 1. Listen to Bryan Cantrill's talk on the history of innovation in Solaris: 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. Install an Illumos (http://illumos.org/) distribution. OpenIndiana (http://openindiana.org/) Desktop LiveCD is the easiest way to get Illumos up and running (burn the .iso to a CD and boot from it without touching your hard drive). Note: while Illumos would install into a primary partition on a PC disk, it will not install to an extended/logical partition. My install is going to be: VirtualBox (https://www.virtualbox.org/wiki/Downloads) + OpenIndiana (http://dlc.openindiana.org/isos/151a5/oi-dev-151a5-live-x86.iso) (or http://www.illumian.org/) 3. 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/ 4. 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 5. Send me an [sergey AT cs.dartmouth.edu] e-mail to get on the class mailing list.