
Explore how an operating system mediates user and hardware communication, allocates resources, and coordinates program execution, from bootstrapping with firmware to the kernel and system software.
Explore how computer hardware and the operating system coordinate input, output, and memory, including devices, buffers, drivers, interrupt handling, DMA, and secondary and tertiary storage.
This lecture explains computer system architecture, from cores and CPUs to multiprocessor and cluster designs, covering symmetric and asymmetric multiprocessing, shared memory, fault tolerance, and SAN storage.
Boots from ROM into main memory, loads the kernel, and starts system services. Covers trap handling, system calls, multiprogramming and multitasking, and user versus kernel modes.
Explore how the operating system manages resources—processes, memory, and storage—through CPU scheduling, memory management, disk scheduling, and file system management with access control.
Explore how protection enforces user authorization while security safeguards data, and see how usernames, passwords, group access, and read or modify permissions govern banking app access.
Explore kernel data structures such as arrays, linked lists, stacks, queues, trees (binary, binary search), hash functions and maps, and bitmaps in main memory, focusing on space and time complexity.
Explore evolving computing environments, from client-server and peer-to-peer networks to cloud and mobile computing, and examine real-time embedded systems with sensors and IoT.
Explore free software, open source software, and hybrid systems with examples like Gentoo and macOS. Understand operating system services, including user interfaces, program execution, I/O, file systems, and security.
Learn how system calls and APIs let user programs access operating system services, perform read and write operations, and support categories like process control and file management.
Discover how system software provides file management, compilation, linking, and loading to convert main.c into an executable, and how it enables runtime process communication via virtual connections.
Explore operating system design and implementation by examining user and system goals, policy versus mechanism, and how low-level implementations in assembly and C shape kernels, drivers, and schedulers.
Explore operating system structures: monolithic, layered, modular, and microkernel, and learn how these designs affect performance, extensibility, debugging, and portability.
Learn debugging and performance tuning for operating systems via failure analysis, crash dumps, and log files, and monitor with tracing tools such as ps, top, vmstat, iostat, and BPF.
Explore how to build and boot an operating system from source, configure the kernel, compile and install steps, and the boot process from bootstrap to root filesystem.
Explore how the operating system manages processes, memory layouts (text, data, heap, stack), and CPU scheduling. Understand process states, process control blocks, and threading concepts, including multithreading on multi-core systems.
Explore how multiprogramming maximizes CPU utilization by managing ready and wait queues, differentiating CPU bound and input-output bound processes, and performing context switches and preemption.
Explore how processes are created and terminated, including parent and child relationships, fork and exec, and resource allocation for child processes, process IDs, plus concepts like zombie and orphan processes.
Examine inter-process communication between independent and cooperating processes, highlighting information sharing and modularity, and compare shared memory versus message passing as methods of data exchange.
Explore client-server communication using sockets and remote procedure calls, including IP and port addressing, connection oriented and connectionless models, marshalling, and reliability mechanisms like at most once and exactly once.
Explore threads and multicore programming, comparing single-threaded and multi-threaded processes, and explain concurrency, parallelism, synchronization, load balancing, and speedup via Amdahl's law.
Explore multithreading models, many-to-one, one-to-one, and many-to-many, and how user and kernel threads interact under user and kernel modes.
Explore thread libraries and their APIs for creating and managing threads in multithreaded environments, including user and kernel space, and examples using Pthreads, asynchronous or synchronous threading, and join.
Explore implicit threading in operating systems, including thread libraries, thread pools, and fork-join, with OpenMP, Grand Central Dispatch, and TBB for efficient concurrent execution.
Explore threading issues including fork and exec behavior, signal handling, asynchronous and deferred cancellation, and the role of thread local storage in user and kernel thread mappings.
Learn how process synchronization prevents data inconsistency and race conditions by regulating access to shared data and critical sections with mutual exclusion, progress, bounded waiting, and kernel modes.
Explore solutions to the critical section problem, from Peterson's software algorithm to hardware approaches using test and set, compare and swap, and mutex locks.
An operating system course typically covers fundamental concepts and advanced topics related to operating systems, which are essential software that manage computer hardware resources and provide services for computer programs. Operating system courses typically combine theoretical knowledge with practical exercises to give students a comprehensive understanding of how operating systems work, their design principles, and their role in modern computing environments. The course may also explore recent trends and emerging technologies in operating system design and implementation. A deep dive on Virtual memory concept, paging, segmentation is performed in this course so a complete knowledge regarding virtual memory can be gained. I/O hardware components, Device management, buffering, caching gives a basic idea on input and output management. Students may clearly understand how memory and device management is performed in real time operating systems. The page replacement algorithms helps students to understand how swapping mechanisms are done and how the operating system manages multi programming by swapping the pages among various process in the system. Similarly how cache memory is managed to provide frequently used pages to the processor. By having these basic knowledge students can code these operations for practice. More contents are planned to upload in future covering all topics in operating systems