Skip to content

Arslan8/operating-systems-course

Repository files navigation

Operating Systems Course

Overview

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.

Course Content

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 init process, 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.

Getting Started

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.git

Each module's directory contains its own set of source code, and may include a dedicated README.md file with more specific instructions and explanations.

Contributions

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.

About

Code used in teaching OS class.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7

Languages