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, as well as the implementation of C programs in a hosted environment. Topics covered include the multiprocess programming, multithreaded programming, synchronization and scheduling, deadlock detection and avoidance, memory management, file systems, and input/output systems. Laboratory projects provide experience in using operating system facilities available on a Linux virtual machine. (prereq: CE 2812, CS 2852 )
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • understand the core concepts and terminology associated with operating systems
  • communicate effectively using proper grammar and technical writing in lab reports and assignments
  • develop and implement programs in C in a hosted environment
  • develop and use dynamic memory in a software application
  • develop and manage concurrency and synchronization in a software application
  • analyze scheduling problems for performance criteria
  • use files in a C based systems in multiple fashions
  • properly comment source code for effective communication

Prerequisites by Topic
  • Proficiency in programming in C, including standard C library functions (character processing, string processing, memory functions, mathmatical functions)
  • Familiarity with digital logic design, memory organization, processor registers, and interrupt handling mechanisms
  • Familiarity with basic data structures, such as arrays, lists, queues, and stacks
  • Ability to construct basic data structures, including linked list and queues, in Java
  • Familiarity with configuration management tools and disciplined software development.
  • Ability to debug C source code using an IDE.

Course Topics
  • C Compilation Model and building C Code
  • Operating Systems Introduction
  • Operating Systems Structure and Components
  • Virtual machines
  • OS Processes
  • Interprocess communications (Shared memory, pipes, sockets, RPC)
  • Example OS implementations of major constructs (task switching, synchronization, etc.)
  • Threading
  • Signal handling
  • Scheduling and Scheduling Algorithms
  • Synchronization and Critical Sections
  • Deadlocks and deadlock prevention
  • Virtual Memory and paging
  • File Systems implementation
  • Physical Devices and hard drive implementation
  • Exam Review
  • In Class Exams

 


Laboratory Topics
  • Introduction to UNIX system calls, debugging, and developing hosted applications (1 week)
  • Construction of a fundamental data structure in C using dynamic memory (1 week)
  • Construction of UNIX software using high level file system access (fopen, fread, fwrite, etc.) and integrating data structures (1 week)
  • Construction of a software application using multiple processes and interprocess communications (1 week)
  • Construction of a multithreaded software application with appropriate thread synchronization (2 weeks)
  • Design and implementation of a memory debugging system (1 week)
  • Design and implementation of a dynamic memory manager (2 weeks)

Coordinator
Walter Schilling



Print-Friendly Page (opens a new window)