CSPB 3753 - Design and Analysis of Operating Systems
*Note: This course description is only applicable for the Computer Science Post-Baccalaureate program.ÌýAdditionally, students must always refer to course syllabus for the most up to date information.Ìý
- Credits: 4.0Ìý
- Prerequisites: CSPB or CSCI 2270 Data Structures and CSPB or CSCI 2824ÌýDiscrete StructuresÌý(all minimum grade C-). Need to be able to write code in ‘C’ for inclusion in the operating system.
- Recommended Prerequisite: CSPB or CSCI 3308ÌýSoftware Development Methods and Tools
- Minimum Passing Grade: C-
- °Õ±ð³æ³Ù²ú´Ç´Ç°ì:Ìý"Operating System Concepts", 10th Edition, Abraham Silberschatz, Peter Galvin, Greg Gagne (electronic or hardcover)Ìý
[video:https://youtu.be/geB44nOIJ3I]
Brief Description of Course Content
Examines the structure and function of operating systems as an intermediary between applications and computer hardware.
Topics include OS design goals, hardware management, multitasking, process and thread abstractions, file and memory management, security, and networking. Upon completion, students should be able to perform operating systems functions at the support level in a single-user environment. Ìý
Microcontrollers are ubiquitous in the modern world, in everything from your toaster, microwave, and refrigerator, to the complex and sophisticated systems in satellites and self-driving vehicles. ÌýWe have augmented our Operating Systems course to use a Raspberry Pi in hands-on assignments such as adding systems calls to the Linux operating system running on the Raspberry Pi. ÌýThe goal is for you to learn to apply the theory of operating systems and gain experience physically working with and changing a real working computer.
Specific Goals for the Course
- Explain basic concepts in the design and structure of operating systems, including kernel/user mode, system calls, preemptive multitasking, and monolithic/microkernel structure.
- Describe how interrupt-based processing achieves efficient management of device input/output communication.
- Define processes and threads, describe different ways to communicate between processes and threads, and apply mutual exclusion-based solutions to synchronize multi-threaded processes without deadlock occurring.
- Identify different scheduling algorithms and their suitability for different types of applications, including compute-bound, I/O-bound and real time.
- Explain the concept of virtual memory, the rationale for on-demand paging, and the role of working sets to avoid thrashing in a caching-based memory hierarchy.
- Demonstrate understanding of fundamental concepts in file system design, including linked and indexed file allocation, mounting, a virtual file system layer, memory mapping, journaling, and performance optimizations for storage media (magnetic and solid state).
- Describe basic concepts to secure and protect operating systems.
- Explain basic concepts in networked operating systems design, including layered network architecture and distributed file systems structure.
- Describe the basic concept of a virtual machine and different types of virtual machines.
- Successfully modify, add functionality to, and re-compile the kernel of an operating system.
- Operating System Design and Structure
- Device Input/Output Management
- Process and Thread Management and Scheduling
- Inter-Process Communication and Synchronization
- Memory ManagementÌý
- File System and Storage ManagementÌý
- Security
- Networking
- Virtual Machines