Operating Systems — Lecture Notes and Course Materials
This page provides open educational resources for the study of Operating Systems, including lecture slides, course material, assignments, examples, and examination resources. The material is intended primarily for undergraduate students, teachers, and independent learners of Computer Science and Computer Applications.
The resources were developed and used during teaching of Operating Systems and related Computer Science subjects. They provide an introduction to the principles by which operating systems manage processors, memory, storage, input-output devices, processes, threads, and other computer resources.
The material also includes examples and discussions related to Linux and Unix-based operating systems, making the theoretical concepts relevant to practical computing environments.
What You Will Find
- Lecture slides covering major Operating Systems concepts
- Explanations of processes, threads, scheduling, synchronization, and deadlocks
- Memory management, paging, virtual memory, and page replacement
- Storage management, disk scheduling, and file systems
- Assignments and exercises
- Class test and examination resources
- Examples related to Linux and Unix operating systems
- References for further study
Course Information
This course was taught to Bachelor of Computer Applications (BCA), II Year students at Jai Narain Vyas University, Jodhpur during the academic session 2023.
Prerequisites
Course Description
Operating Systems introduces the fundamental concepts and principles of modern operating systems. It explains how an operating system acts as an interface between computer hardware and application software and how it manages system resources.
The course covers process management, CPU scheduling, threads, concurrency, synchronization, deadlocks, memory management, virtual memory, storage management, file systems, and input-output management. Examples from Linux and Unix-based systems are also used to illustrate important concepts.
Learning Outcomes
- Understand the basic concepts, functions, and services of operating systems.
- Understand process states, process management, and CPU scheduling algorithms.
- Analyze threads, multithreading, and concurrency issues.
- Understand interprocess communication and synchronization mechanisms.
- Explain deadlock prevention, avoidance, detection, and recovery.
- Understand memory allocation, paging, segmentation, and virtual memory.
- Understand storage management, disk scheduling, and file systems.
- Understand the role of operating systems in Linux and modern computing systems.
Lecture Notes and Course Modules
Module 1: Introduction to Operating Systems
Topics Covered
- Operating system definitions and characteristics
- Types of operating systems
- Functions and services of operating systems
- Hardware concepts related to operating systems
- System calls and operating system structure
Learning Resources
- Operating System Concepts — Reference Book
-
Introduction to Operating Systems — Slides
Course aims, computer systems, introduction to operating systems, program execution, operating system functions, CPU, memory and I/O management, and history of operating systems. Take a Test -
Operating System Types and Process Introduction
Batch systems, multiprogramming, real-time operating systems, multiprocessor systems, time-sharing systems, distributed systems, and monolithic systems. - Home Assignment #1
-
User and Operating System Interface
Operating system structure, command interpreters, system calls, UNIX commands, implementing the cat command, GUI, and system calls.
Module 2: Process Management
Topics Covered
- Process concepts, states, and Process Control Block (PCB)
- Process scheduling and scheduling criteria
- CPU scheduling algorithms
- Multiple processor scheduling
- Real-time scheduling
- Threads and multithreading in Linux
Learning Resources
-
Introduction to Process Management
Process states, process creation, fork(), operating system data structures, state transitions, and process-related system calls. -
Process Scheduling
Scheduling criteria, operating system scheduler, FIFO, SJF, Round Robin, static priority, and dynamic priority scheduling. - Home Assignment #2
-
Threads and Concurrency
Thread definition, single and multithreaded processes, process versus threads, advantages of threads, and thread creation. -
Programming Multi-core Systems
Multicore programming, parallelism, multithreading models, pthreads, signal handling, and thread cancellation. -
Threads and Concurrency — Part 2
Thread creation in UNIX, sharing global data, multiple threads, compilation, and execution. - Class Test #1 — Question Paper and Solution
-
Problems of Multithreading
Shared data, race conditions, and synchronization problems.
Module 3: Process Synchronization
Topics Covered
- Interprocess communication
- Critical section problem
- Mutex locks and semaphores
- Classical synchronization problems
- Deadlock characterization and handling
- Deadlock prevention, avoidance, detection, and recovery
- Process scheduling in Linux
Learning Resources
-
Critical Section
Interprocess communication, shared memory, message passing, producer-consumer problem, mutual exclusion, kernel critical section, and mutex locks. - Home Assignment #3
-
Semaphore
wait(), signal(), semaphore implementation, semaphore use in single-processor and multiprocessor systems, deadlock, and starvation. -
Deadlocks
Deadlock characterization and methods for handling deadlocks. -
More on Deadlocks
Deadlock prevention and deadlock avoidance techniques. -
Assignment No. 4: Deadlocks
Deadlock detection, prevention, and avoidance.
Module 4: Memory Management
Topics Covered
- Logical and physical address space
- Memory allocation and swapping
- Contiguous memory allocation
- Segmentation and paging
- Virtual memory
- Demand paging
- Page replacement algorithms
- Memory management in Linux
Learning Resources
- Logical vs Physical Address Space, Swapping and Memory Protection
- Fixed and Variable Size Partitions, Segmentation
- Segmentation and Paging
- Paging, Demand Paging and Performance Study
-
Assignment No. 5: Memory Management
Segmentation and paging. -
Memory Management
Demand paging and page replacement algorithms including FIFO and LRU.
Module 5: I/O Management and File Systems
Topics Covered
- Disk scheduling algorithms
- Disk management
- Swap space management
- Disk reliability and stable storage
- File concepts and directory structures
- Linux file systems
Learning Resources
-
Storage Management
Mass-storage structure, disk management, and swap-space management. - File Concepts and Directory Structures
- File System in Linux
-
Assignment No. 6: Storage Management
File management and disk operation.
Additional Course Resources
Assignments
Examination Resources
Recommended Textbook
About These Course Materials
These lecture notes and supporting resources were developed and used in teaching Operating Systems. They have been organized and made available as an open educational resource for students, teachers, and independent learners.
The material is intended to complement standard textbooks and classroom instruction. Readers are encouraged to consult the recommended textbook and other scholarly references for a deeper understanding of Operating Systems.
Related Computer Science Resources
Operating Systems is closely connected with several fundamental areas of Computer Science. Related learning resources available on this website include: