Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🖥️ Operating Systems Course Notes

Course Code: CMP 232 | Credit Hours: 3-1-2 | Syllabus

Status

A structured repository for Pokhara University's Operating Systems (CMP 232). Contains theory, code examples, practical labs, and project work to help students master Operating Systems from basics to advanced concepts. This work is an independent effort by Kushal Prasad Joshi, inspired by the curriculum of Pokhara University, and is intended to support students in their academic journey. While based on the university's course structure, this work is not officially affiliated with or endorsed by Pokhara University.


Syllabus Table

Specific Objectives Contents
  • Familiarize with basic concepts of Operating systems, and its architecture.
  • Understanding the successive evolution of operating system.
Unit 1: Introduction
1.1 Concept and function of operating systems
1.2 Operating systems concept and functionality
  Processes, Files, System Calls, The Shell
1.3 Operating System Structure
  Monolithic, Layered, Virtual Machines, Client-server, Microkernel, Exokernel
1.4 Types and Evolution of Operating Systems
  • Familiarize with Task, Process and threads.
  • Implement resource allocation techniques.
  • Understand mutual exclusion for resource utilization.
Unit 2: Processes and Threads
2.1 Process
  Definition, states, transition diagram
  Process Control Block (PCB)
  Concurrent and Parallel processes
2.2 Interprocess Communication and Synchronization
  Race Condition, Critical Regions, Mutual Exclusion (Dekker’s, Peterson’s algorithms)
  Semaphore, Monitors, Bounded Buffer, Message Passing
  Classical IPC Problems (Dining Philosophers, Readers-Writers, Sleeping Barber)
2.3 Process Scheduling
  Scheduling Algorithms (FCFS, SJF, Round-Robin, Priority)
2.4 Threads
  Thread Models (Many-to-One, One-to-One, Many-to-Many)
  User Space vs Kernel Space Threads
  • Conceptualize the role and working procedure of memory.
  • Familiarize with virtual memory management.
  • Understand page replacement algorithms.
Unit 3: Memory Management
3.1 Storage Organization and Memory Hierarchy
3.2 Contiguous vs Non-Contiguous Allocation
3.3 Fragmentation (Internal/External)
3.4 Paging and Page Tables
  Hierarchical, Hashed, Inverted Page Tables
3.5 Virtual Memory and Demand Paging
3.6 Page Replacement Algorithms (FIFO, LRU, Optimal, Clock)
3.7 Segmentation and Compaction
  • Conceptualization of Kernel and its role in system software.
Unit 4: Kernel
4.1 Kernel Architecture and Types
4.2 Context Switching (Kernel vs User Mode)
  • Understand the role of input/output devices.
  • Understand different approaches for optimal output.
Unit 5: Input/Output Management
5.1 I/O Hardware (Device Controllers, DMA)
5.2 I/O Software (Interrupt Handlers, Device Drivers)
5.3 Deadlock Handling (Banker’s Algorithm, Resource Allocation Graph)
5.4 RAID and RAM Disks
  • Understand the file and filing mechanism.
  • Familiarize with directory management techniques.
Unit 6: File Systems
6.1 File Organization (Blocking, Buffering, File Attributes)
6.2 Directory Management (Hierarchical, Path Names)
6.3 File Access Methods (Sequential, Direct)
6.4 File System Implementation (Contiguous, Linked Allocation)
  • Familiarize with current trends of operating systems.
Unit 7: New Trends in Operating Systems
7.1 Real-Time and Distributed OS
7.2 Cloud and Mobile OS
7.3 Security Issues and Memory Bottlenecks

📜 License

This repository is licensed under the MIT License. You are free to use, modify, and distribute the code, provided that the original copyright notice and license text are included in all copies or substantial portions of the Software.


Happy Reading! 🎉

About

My work for the Operating Systems (CMP 232) course at Pokhara University as a part of my bachelor's program. It contains complete labs.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages