Introduction to Operating Systems
Documents and Readings
Table of contents
- Supplemental Materials from the textbook
- Programming Tools
- UNIX 101: Articles on using the UNIX Operating System and its utilities
- System design
- Inside Solaris (Solaris Internals)
- Disk usage
- Supplemental Readings (keyed to lectures)
Supplemental Materials from the textbook:
Teaching Materials : There is a set of overheads to be used as supplementary materials when you use the book. The basic set is a copy of the figures in the book as well as some extra slides. I'll be showing some of it during the lectures.Compiling and using hawk
- Information on using UNIX
- Unix Programming Tools A 16 page introduction to the most common Unix tools and their usage in the compile-link-debug process. Introduces gcc, make, gdb, emacs, and the shell. There should be enough information here to allow someone with a little Unix experience to build and debug. [Compliments of Stanford University].
- Separate compilation and typical compilation errors
Supplemental Readings (keyed to lectures):
Processes
- The Canberra University views of Processes and Process Management
Threads
- Your Web Guide to POSIX Threads
- SWIG Homepage: POSIX Threads
- Hints on POSIX Threads
- Threads
- POSIX Thread Tutorials and Books
- An introduction to multi-threaded programming.
- Three POSIX Threads' Implementations Threads
- Sun's Multithreaded Programming Guide
- UNIX (Solaris) Threads and Semaphores,
- Solaris and Windows NT Thread Functions,
- Guide to DECthreads
Monitors
Information on writing drivers
Look at McKusick and Bach. There is a lot on the web. Here are
just a few:
- Writing Device Drivers: Tutorial
- Developer Guides - Home
- Device Driver for DIGITAL UNIX Version 4.0D O...
- Links: [UNIX]
- The Linux Kernel Hackers' Guide
- Device Drivers
- Links: [Linux]
- Root Prompt -- Nothing but Unix
- Linux FAT32 Support
- The Linux Documentation Project: Linux Develo...
- Device Driver for DIGITAL UNIX Version 4.0D O...
- Writing Device Drivers: Tutorial
- Writing Device Drivers: Reference
- FreeBSD Device Driver Writer's Guide
- Writing Linux Device Drivers
Windows NT
- Q154997 - Description of the FAT32 File System
- undocumented aspects of Windows 9x/NT/2000/ME -- has articles on how interrupts work, how protected mode and real mode works,
Security and Provably Secure OS
- Linux: the Securable Operating System
- MULTICS
- Early Computer Security Papers, Part I
- History of Computer Security
- The foundations of a provably secure operating...
- Peter Neumann's Home Page
- Citations: A provably secure operating system...
- Design and Verification of Secure Systems - R...
- Gerald J. Popek
- Smashing The Stack For Fun And Profit
On-line readings and links:
Articles available on the InternetUNIX 101: Articles on using the UNIX Operating System and its utilities
February 1997 Grasping the vi editor March 1997 Grasping more of the vi editor April 1997 Processing files with awk May 1997 Processing files with awk, part 2 June 1997 Using find to locate files July 1997 Shell programming and simple menus -- part 1 August 1997 Shell programming and simple menus -- part 2 September 1997 Quick lessons on shell programming October 1997 Search and replace with vi -- part 1 November 1997 Search and replace with vi -- part 2 December 1997 A simple method of logging January 1998 Using history and command line editing February 1998 Command line psychology 101 March 1998 Compressing files in Unix April 1998 Sending signals May 1998 A look at the tail and date utilities June 1998 Small fry Unix commands can get the job done, part 2 July 1998 Too small to keep, too big to throw back August 1998 Four fun Unix commands September 1998 ls: Little big man October 1998 Whatcha' gonna make November 1998 Date arithmetic -- Part 1 December 1998 Date arithmetic, Part 2 January 1999 Date arithmetic, Part 3 February 1999 Subtracting dates March 1999 Using bc, Part 1 April 1999 Using bc, Part 2 May 1999 Getting started with Perl, Part 1 June 1999 Getting started with Perl, Part 2 July 1999 Go to the end of the line September 1999 Tips on good shell programming practices October 1999 Unix command line 101: How much do you know? November 1999 Grep this December 1999 Hands-off editing with sed, Part 1 February 2000 Hands-off editing with sed, Part 2 March 2000 Purging the process April 2000 Purging the process, Part 2 May 2000 Understanding Unix shells and environment variables June 2000 Understanding Unix shells and environment variables, Part 2 July 2000 The language of shells August 2000 Using cron basics March 2001 What happens when you throw the switch? System design:
- Hints for computer system design Paper by Butler Lampson discussing the right way to design systems. Based on lots of experience: Butler worked on one of the first Time-sharing computer systems.
Inside Solaris (Solaris Internals):
Inside Solaris is a monthly column detailing how the Solaris version of UNIX works. Essential reading!! Sample columns of interest:
The Process Model
- August 1998 Peeling back the process layers
- September 1998 The Solaris process model, part 2
- October 1998 More on the Solaris process model
- December 1998 The Solaris process model, Part 4: More on the kernel dispatcher
- January 1999 The Solaris process model, Part 5: The kernel dispatcher
- February 1999 The Solaris process model, Part 6: Inside the kernel dispatcher
- March 1999 The Solaris process model, Part 7: Managing thread execution and wait times in the system clock handler
Threads
- June 2000 Threads libraries in Solaris
The Proc Filesystem
Signals
- April 1999 A primer on signals, Part 1
- May 1999 A primer on signals, Part 2
Interprocess Communication
- September 1997 Shared memory uncovered
- October 1997 Setting our sights on semaphores
- November 1997 Demangling message queues
Synchronization
- September 1999 Kernel synchronization primitives
The File System
- September 1995 A file by any other name: The UNIX file system
- February 1998 Fiddling around with files, part 1: "How many files can I open?"
- March 1998 Fiddling around with files, part 2: file APIs and types
- April 1998 Fiddling around with files, part 3: file access modes
- May 1998 Fiddling around with files, part 4: descriptor file flags and structure
Security
Miscellaneous
- June 1999 Priorities revisited drivers
- July 1999 It's time to wake up! The intricacies of sleep and wakeup in Solaris
- August 1999 Turnstiles and priority inheritance
- October 1999 Unlocking Solaris
- November 1999 Keeping time
- December 1999 Communicating the POSIX way
- February 2000 The dynamic Solaris kernel
- March 2000 Resource utilization and microstate accounting
Disk usage:
- How do disks really work? SunWorld article on Disks. How SCSI works, and how Solaris uses disks.