Contributing Scholar - Jon B. Weissman, University of Minnesota
3 Semester Credit Hours
Course Description
This course is concerned with the principles and concepts of contemporary operating systems with an emphasis on the programmer or user view of the OS. We will discuss concepts relating to processes, threads, synchronization, advanced and asynchronous control, interprocess communication, memory management, I/O, file systems, network communication. We will examine the issues that surround these concepts, look very briefly at implementation issues, and focus our attention on the systems programming interface provided to the user for each concept. We will use Unix as our model of a systems programming interface. Several programming projects will be used to gain hands-on experience with Operating Systems issues.
Prerequisites
- Experience with programming in C/C++ and debugging complex programs.
- Access to a computer running Unix or Linux.
- Some experience with running programs and manipulating files in a Unix/Linux environment.
- Understanding of the concept of a system call as contrasted with a procedure call.
- Preferably have written a program that made a system call in a Unix/Linux or Windows environment.
- General prerequisite: Students must have the knowledge resulting from appropriate prerequisite coursework in the curriculum for a BS degree in Computer Science from a regionally-accrediated institution in the United States or the equivalent from a foreign institution; performance level in this coursework should be equivalent to a cumulative undergraduate GPA of 2.9 or better on 4.0 scale.
Course Objectives
- To learn the principles and concepts of contemporary Operating Systems with real examples (e.g. Unix)
- To learn about the user view of the Operating System and the “outside” abstractions
- To learn novel programming features that are useful beyond systems programming
- To learn how to design and implement applications that exploit important OS features
- To learn how to write programs that can achieve performance and reliability
Course Topics
The following topics will be covered in the order given.
- Overview: Introduction
- Overview: OS Background
- Processes: Programs
- Processes: Operations
- Processes: Unix
- Processes: Demo
- Input Output: Low-level I/O
- Input Output: High-level I/O
- Filesystems: Basics
- Filesystems: Directories
- IPC: Issues and Pipes
- IPC: Message Passing, Shared Memory
- IPC: Remote Procedure Call
- Advanced Control: Signals
- Advanced Control: Event-driven programming
- Advanced Control: Timers
- Introduction to Operating Systems
- Memory Management: Paging
- Memory Management: Dynamic Memory
- Memory Management: Virtual Memory
- Threads: Basics
- Threads: Models
- Threads: Posix
- Synchronization: Basics
- Synchronization: Semaphores, Locks, and Condition Variables
- Exam Review
- Advanced Synchronization
- Synchronization: Posix
- Sockets: Asynchronous I/O
- Sockets: Basics
- Sockets: Usage and Wrap-up
Textbook
Required: UNIX Systems Programming, Communication, Concurrency, and Threads, Kay Robbins, Steven Robbins, Prentice Hall, 2003, ISBN: 0130424110.
Disclaimer: The course syllabus may differ slightly from this course. Course descriptions will be provided in your online course. Textbook information is provided only to give more information about the course. Do Not use this information to purchase a textbook. Up-to-date information will be provided when you register.