Aug 15, 2022  
2020-2021 Undergraduate Academic Catalog 
2020-2021 Undergraduate Academic Catalog [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

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 system 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, mathematical 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


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

Dr. Darrin Rothe

Add to Portfolio (opens a new window)