This repository contains course materials, lab work, assignments, and exam preparation resources for CSE321: Operating Systems.
Contains coursework assignments:
- Theory Assignment 1 - Research and Explore the CPU allocation fairness issues of Multi-Level Feedback Queue (MLFQ) CPU Scheduling Algorithm by analyzing key areas
- Theory Assignment 2 - Research and Explore the limitations of standard Unix file permissions and the necessity of Extended Access Control Lists (ACLs) by analyzing key areas
Comprehensive lab exercises and projects covering core OS concepts:
- Lab 1 - Process management (fork, exec, file I/O, zombie processes)
- Lab 2 - Shell scripting (bash scripts, variables, expressions)
- Lab 3 - Synchronization mechanisms:
- Semaphores (sem_init, sem_wait, sem_post, sem_destroy)
- Mutexes (pthread_mutex_init, pthread_mutex_lock, pthread_mutex_unlock, pthread_mutex_destroy)
- Counted and binary semaphores
- Mutual exclusion and coordination
- Lab 4 - Inter-process communication:
- Key Generation
- Message Passing
- Pipes (Unidirectional & Bidirectional)
- Shared Memory
- Practice Problems
- Lab 5 - xv6 Operating System:
- xv6-riscv implementation
- Kernel modifications
- System call implementation
- Lab 6 - Online lecture
- Video: Lab 6 Lecture
Lab assessment practice questions and materials:
-
Lab Assessment 1 [Practice] - C programming fundamentals:
- Number comparisons, prime checkers
- String manipulations (palindrome, password validator)
- File operations and text processing
-
Lab Assessment 2 [Practice] - Advanced process and thread management:
- Fork and process creation
- File operations with processes
- pthread implementation
- Mutex and synchronization
- Multi-threading exercises
Note: This folder contains practice questions for lab assessments.
- Lab Assignment 1 - Multithreading and synchronization problems:
- Problem 1: Multithreaded Fibonacci computation and search using dynamic memory allocation and thread communication
- Problem 2: Sandwich Maker synchronization problem using mutex locks and semaphores (supplier-consumer pattern with three makers)
- Lab Assignment 2 - Lottery Scheduler implementation in xv6
- Repository: Lottery-Scheduler-xv6
- Implementation of lottery scheduling algorithm for CPU scheduling in xv6 operating system
Course project - MetaData Journaling in VSFS:
- Repository: MetaData-Journaling-VSFS
- File system journaling implementation
- Metadata journaling for crash consistency
- VSFS (Very Simple File System) modifications
- Files:
journal.c,mkfs.c,validator.c
Topic-wise practice problems organized by key OS concepts:
- Process - Process creation, management, and lifecycle
- Threads - Multi-threading and thread management
- CPU Scheduling - Scheduling algorithms and policies
- Process Synchronization - Mutexes, semaphores, deadlocks
- File Systems - File management and storage
- Memory Management - Virtual memory, paging, segmentation
Past exam questions organized by semester and exam type:
- Fall 2024 Midterm
- Spring 2025 Midterm
- Summer 2025 Midterm
- Fall 2024 Final Questions
- Spring 2025 Final
- Summer 2024 Final Questions
- Summer 2025 Final
Quiz materials organized by section:
- NTR - Quiz materials
- RHD - Quiz materials (MID and FINAL sections)
- Languages: C, Shell Script (Bash)
- Systems: xv6-riscv (educational operating system)
- Concepts: Process management, threading, IPC, memory management, file systems
- Process creation and management (fork, exec)
- Inter-process Communication (pipes, message queues, shared memory)
- Thread programming (pthreads)
- Synchronization primitives (mutex, semaphores)
- CPU scheduling algorithms
- Memory management
- File systems
- Operating system design (xv6)
- GCC compiler
- Make build system
- QEMU (for xv6 emulation)
- Linux/Unix environment or WSL on Windows
gcc filename.c -o output
./outputchmod +x script.sh
./script.shYou will need the original xv6-riscv source code as a base:
- Official Repository: https://github.com/mit-pdos/xv6-riscv
cd Lab/Lab 5/Lab Works/xv6-riscv/
make qemu- Some directories are excluded from version control (see
.gitignore) - Lab 5 contains the xv6 operating system implementation
- Practice problems are available for each major topic
- Course Code: CSE321
- Course Title: Operating Systems
- Last Updated: January 2026
Abdullah Al Fahad
This repository serves as a comprehensive resource for learning and practicing operating system concepts.