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
Upon completion of this course, students are able to:
- 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
- Virtual Machines
Basic arithmatic, averages, recursions, and random numbers and distributions.
Return to Course List