This repository contains the code and materials used for CMPSC 473 - Operating Systems. The course delves into fundamental concepts of operating systems, providing practical implementations and examples in C and Python.
The repository is organized into modules, each focusing on a core topic in operating systems. Below is an overview of the included modules:
- CLI: Explores the implementation of a command-line interface, a fundamental way users interact with an operating system.
- Debugging: Provides resources and exercises for debugging programs, a crucial skill for any systems programmer.
- Deep C Dive: Offers a deeper exploration of the C programming language, which is foundational for understanding and working with operating systems.
- ELF Loaders: Covers the Executable and Linkable Format (ELF), the standard binary file format for Unix and Unix-like systems, and the process of loading ELF files into memory.
- Init: Discusses the
initprocess, the first process started during the booting of the operating system, and its role in initializing the system. - Inter-Process Communication (IPC): Investigates the mechanisms that allow different processes to communicate with each other.
- Malloc: Details the implementation of
malloc, the standard C library function for dynamic memory allocation. - Memory Virtualization: Explores how operating systems create the illusion of a private, contiguous memory space for each process.
- Processes and Threads: Differentiates between processes and threads and examines how the operating system manages them.
- Synchronization: Covers the various techniques and primitives used to coordinate the execution of concurrent processes and threads to prevent race conditions.
- User-Kernel Interface: Examines the boundary between user-level applications and the operating system kernel and the mechanisms (like system calls) for crossing this boundary.
To explore the materials in this repository, you can clone it to your local machine using the following command:
git clone https://github.com/Arslan8/operating-systems-course.gitEach module's directory contains its own set of source code, and may include a dedicated README.md file with more specific instructions and explanations.
This repository is primarily for educational purposes as part of an operating systems course. While direct contributions may not be the focus, feedback and suggestions are welcome. Please feel free to open an issue to report any problems or to suggest improvements to the course materials.