💻 Operating Systems

Comprehensive Study of Operating System Concepts and Implementation

Dr. Nikhil Kumar Rajput

📚 Course Overview

This comprehensive course covers operating system design, implementation, and management. Students will learn fundamental OS concepts and gain hands-on experience with system programming.

  • OS Architecture & System Calls
  • Process Management & Scheduling
  • Memory Management & Virtual Memory
  • File Systems & Storage Management
  • I/O Management & Device Drivers
  • Security & Protection Mechanisms

🎯 Learning Objectives

By the end of this course, you will be able to:

  • Understand core OS principles and design
  • Implement system-level programs
  • Analyze system performance and optimization
  • Design synchronization and concurrency solutions
  • Manage system resources effectively
  • Implement basic OS components

💼 Laboratory Work

Practical programming and system administration:

  • Linux Commands & Shell Programming
  • Process Creation & Management
  • CPU Scheduling Algorithm Simulation
  • Memory Management Implementation
  • File System Operations
  • System Programming with C
  • Device Driver Development

📊 Assessment Methods

Your understanding will be evaluated through:

  • Programming Assignments (30%)
  • Laboratory Exercises (25%)
  • Mid-term Examination (20%)
  • Final Project (15%)
  • Quizzes & Participation (10%)

🛠️ Development Environment

Tools and platforms for system programming:

  • Linux (Ubuntu/CentOS) Virtual Machines
  • GCC Compiler & GDB Debugger
  • System Call Interface & Libraries
  • Virtual Machine Monitors
  • Performance Analysis Tools
  • Version Control with Git

📖 Reference Materials

  • Operating System Concepts by Silberschatz
  • Modern Operating Systems by Tanenbaum
  • Operating Systems: Three Easy Pieces
  • Linux Kernel Development by Love
  • Advanced Programming in UNIX Environment

🚀 System Programming Example

Sample process creation and synchronization in C

#include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <pthread.h> int main() { pid_t pid = fork(); if (pid == 0) { // Child process printf("Child process: PID = %d\n", getpid()); execl("/bin/ls", "ls", "-l", NULL); } else if (pid > 0) { // Parent process printf("Parent process: PID = %d\n", getpid()); wait(NULL); // Wait for child } else { perror("Fork failed"); } return 0; }
UNIVERSITY OF DELHI SYLLABUS

📘 Course Curriculum

Unit-wise syllabus aligned with the University of Delhi curriculum.

Unit 1: Introduction and Processes

  • Operating system functions and structure
  • Process concept and PCB
  • System calls

Unit 2: CPU Scheduling

  • Scheduling criteria
  • FCFS, SJF and Round Robin
  • Priority and multilevel queue scheduling

Unit 3: Process Synchronization and Deadlocks

  • Critical section problem
  • Semaphores and classic problems
  • Deadlock prevention, avoidance and detection

Unit 4: Memory Management

  • Contiguous allocation
  • Paging and segmentation
  • Virtual memory and page replacement

Unit 5: File Systems and Storage

  • File concepts and directory structure
  • File allocation methods
  • Disk scheduling