|
Mar 28, 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 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
Add to Portfolio (opens a new window)
|
|