CMSI 387
Operating Systems
Spring 2014
- Note
- This page is maintained as an archival record of the course shown above, and as such, some links on this page may no longer be valid nor accessible. They are kept here as a record of the resources that were available at the time of the course offering.
- Syllabus
- Bazaar: Where you’ll find our sample code
- How to Ask Questions the Smart Way: Follow these tips to improve the quality and efficiency of the help that you get
Assignments
- Assignment 0121: 4d, 4e, 4f
- Assignment 0123: 1a, 4d, 4e, 4f
- Assignment 0206: 1a, 1b, 1c, 3a, 4d, 4e, 4f
- Assignment 0220: 2d, 4a, 4b, 4c,
4d, 4e, 4f
- A convenient PDF Linux system call crib sheet
- The Linux System
Calls book chapter (PDF) from Advanced Linux Programming by Mark Mitchell, Jeffrey Oldham, and Alex
Samuel—if you build on these, make sure to convert the convenience function calls to raw
syscall
invocations. Note also that some filenames or locations may be different from what is in this PDF.
- Assignment 0311: 1a, 2a, 2b, 4a,
4b, 4c, 4d, 4e, 4f
- How to create and apply a patch with Git
- Kernel section of the official Ubuntu wiki
- Some pre-existing, potentially useful web pages—but remember, things change over time:
- And, if you’ve been paying close attention, note that there is one more set of resources that you can potentially use…but I’ll leave that to you to figure out
- Assignment 0403 part 1 (the assignment formerly known as
0327): 1a, 1b, 2c, 3a, 4a, 4b, 4c, 4d, 4e, 4f
- Looking for inspiration? Here’s a link to the
bash
source code
- Looking for inspiration? Here’s a link to the
- Assignment 0403 part 2: 3b, 4d, 4e, 4f
- Assignment 0422: 2d, 4a, 4b, 4c,
4d, 4e, 4f
- Starter files for address translation:
- Starter files for page replacement:
- Assignment 0501: 1a, 1b, 2e, 4d, 4e, 4f
Handouts
- 0114: Operating System Interaction via
bash
, Keyboard Cribsheet - 0121: I/O Redirection on the Command Line, I/O Agility at the Command Line, Unix File System Commands
- 0204: Operating Systems Overview, Operating System Structures
- 0211: System call timeline, system call invocation sample code
- 0213: Linux Kernel Building and Modification—A Conceptual Guide
- 0225: Ripped from the headlines—a serious OS bug due to a discouraged programming practice
- 0311: Processes in code
- 0313: Threads
- 0318: CPU Scheduling
- 0325: Process Synchronization
- 0408: Deadlocks, Main Memory
- 0415: Virtual Memory
- 0422: File Systems: Interface, File Systems: Implementation,
ext2
File System Walkthrough
Related External Links
These links take you to web sites beyond this server. The sites are in no particular order or bias, just as they came to mind.
- Companion Web site for the Silberschatz/Galvin/Gagne text
- Operating system web sites
- Bask in the glory of Éric Lévénez’s Unix and Windows history/timeline diagrams
- Linux Online home page
- The Linux Kernel Archives—home base for
Linux kernel source code
- Google search for Kernel Build HOWTO documents
- Some popular Linux distributions:
- Debian GNU/Linux
- Ubuntu
- Red Hat
- And many more—don’t hesitate to scan the Web for them…
- Some prominent Linux derivatives by Google:
- You might have heard of this one (and are likely using it, too)—Android
- Chromium OS, the open source version of Google’s Chrome OS
- Virtual machines:
- VirtualBox: Free, open source, functional
- User Mode Linux allows
you to run a virtual Linux machine in a physical Linux box
- Antoine Martin’s Virtualization Tools site consisting of UML file systems and kernel images
- Microsoft Developer Network home page: visit the Developer Centers link for Windows operating system sites
- Mac OS X and iOS developer home pages
- Apple’s Darwin/Mac OS X Kernel Programming Guide
- Process management links
- The E. W. Dijkstra Archive—Full PDF scans of Dijkstra’s work, including the seminal Cooperating Sequential Processes and Een algorithme ter voorkoming van de dodelijke omarming (An algorithm to prevent the deadly embrace [his original term for “deadlock”])
- Online version of C. A. R. Hoare’s seminal monitors paper, “Monitors: An Operating System Structuring Concept”
- The Little Book of Semaphores by Allen B. Downey
- Memory management links
- Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture: This volume holds an overview of Intel memory management
- Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1: This volume holds the memory management details of the Intel architecture
- Online developer documentation for Memory Management in Mac OS X
- PDF version of Mel Gorman’s Understanding the Linux Virtual Memory Manager (8.3M)
- Eric S. Raymond’s The Art of Unix Programming: a unique philosophical/cultural/technical perspective
- The Filesystem Hierarchy Standard (FHS) home page: never get lost in (FHS-compliant) Linux machines again
- The Ars Technica operating system reviews don’t pull any technological punches
- Software Carpentry: A very handy collection of practical “tech nuggets”
- Wikipedia: A good starting point for virtually
any concept lookup
- Wikipedia search for operating systems
- A link to the “classic” article on Smashing the Stack for Fun and Profit by Aleph One