|
Nov 22, 2024
|
|
|
|
CS 3841 - Design of Operating Systems3 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
Coordinator Dr. Darrin Rothe
Add to Portfolio (opens a new window)
|
|