CS 3841 - Design of Operating Systems

3 lecture hours 2 lab hours 4 credits
Course Description
This course introduces the design and implementation of modern operating systems. Topics covered include the history of operating systems, process synchronization and scheduling, deadlock detection and avoidance, memory management, file systems, protection and security, and input/output systems. Laboratory projects provide experience in using operating system facilities available on a Linux virtual machine. (prereq: CE 2811  , CS 2852  )
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
• identify the components of operating system process management
• recognize issues related to concurrent processes and synchronization techniques
• discuss and illustrate several approaches to operating systems memory management
• discuss and illustrate several scheduling algorithms
• describe input/output handling in operating systems
• illustrate file system interfaces and implementation
• construct software applications which use POSIX/UNIX system calls to spawn additional processes.
• construct software which uses multiple POSIX/UNIX threads.
• perform independent research on a focused technical topic
• document research results in a technical paper
• construct software which implements a fundamental data structure in C and manages memory using malloc and free
• construct a software library which manages a memory heap
Prerequisites by Topic
• Proficiency in programming in C
• Familiarity with digital logic design, memory organization, processor registers, and interrupt handling mechanisms.
• Familiarity with basic data structures, such as arrays, lists, and stacks.
Course Topics
• C Compilation Model and building C Code
• Operating Systems Introduction
• Operating Systems Structure and Components
• Virtual machines
• OS Processes (3 lectures)
• Implementing a simple Operating System for an Embedded Microcontroller (2 lecture)
• Interprocess communications (Shared memory, pipes, sockets) (2 lectures)
• Threading (2 lectures)
• Scheduling and Scheduling Algorithms (2 lectures)
• Synchronization and Critical Sections (2 lectures)
• Deadlocks and deadlock prevention (2 lectures)
• Virtual Memory and paging (3 lectures)
• File Systems implementation (2 lectures)
• Physical Devices and hard drive implementation (2 lectures)
• Security (2 lectures)
• Exam Review (1 lectures)
• In Class Exams (1 lecture)
Laboratory Topics
• Introduction to UNIX system calls and debugging in a NON-GUI environment.
• Construction of a fundamental data structure in C using dynamic memory.
• Construction of a software application using multiple processes using pipes for interprocess communications (2 weeks)
• Construction of a multithreaded software application with appropriate thread synchronization (2 weeks)
• Construction of UNIX software using high level file system access (fopen, fread, fwrite, etc.)
• Analysis of paging and dynamic memory swapping.
• Construction of a dynamic memory manager (2 weeks)
Coordinator
Walter Schilling


Print-Friendly Page (opens a new window)