Apr 19, 2024  
2019-2020 Undergraduate Academic Catalog 
    
2019-2020 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 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
Dr. Walter Schilling



Add to Portfolio (opens a new window)