
Understand how the operating system acts as the user and hardware interface, managing files, input/output, resources, and system services to simplify programming and application access.
Track how hardware upgrades drive new services and paging capabilities, and how OS evolution shifts from serial processing to batch, multiprogramming, and time sharing, enabling multi-user and single-user systems.
Explore the process concept, its components such as text, data, heap, and stack, and the process control block that stores state, memory limits, and input and output information for execution.
Explore process scheduling, including ready, job, and device queues, long and short term schedulers, multiprogramming, time sharing, context switching, and swapping.
Explore inter-process communication through shared memory and message passing, enabling information sharing and data exchange between cooperating processes. Understand synchronization and buffering, including producer-consumer problems and blocking versus non-blocking communication.
Explore process synchronization and mutual exclusion via the Peterson solution for two processes, covering the critical section with software, hardware, and programming language constructs like mutexes, spinlocks, and semaphores.
Explore Peterson's solution and hardware synchronization techniques to solve the critical section problem, focusing on mutual exclusion, progress, bounded waiting, and atomic operations like test-and-set and swap.
Explore fcfs, sjf, and srtf scheduling, including preemption and priority scheduling, and examine their effects on waiting time, turnaround time, and completion time, with notes on starvation.
Explore round robin scheduling, a fair algorithm that gives each process a small time quantum, typically 10 to 100 milliseconds.
Explore memory management concepts, including main memory and registers, memory protection with base and limit registers, and address binding and relocation across compile, load, and execution time.
Understand how logical addresses, often called virtual addresses, become physical addresses through the memory management unit, and explore relocation, base address, relocation register, address binding, and dynamic loading and linking.
Describe segmentation architecture by mapping a two-part logical address (segment number and offset) through a segment table with base and limit, applying protection bits and traps, for dynamic physical memory.
Explore segmentation as a memory management schema that supports the user view of memory, treating memory as variable size logical segments for programming with a main program and its procedures.
Explore virtual memory as an extension of main memory that separates logical and physical addresses, enabling processes to execute with parts not fully loaded and translated via page tables.
Demand paging loads pages only as needed from secondary memory into RAM, using a page table to mark valid and invalid entries and swap pages in and out.
Explore how the operating system handles page faults when a referenced page is not in memory, including validation, trap, disk read, frame allocation, and updates to the page table.
Explore demand paging and its impact on virtual memory, page faults, and performance, including how memory access time and disk reads shape the effective access time.
Explore the mass storage structure and magnetic disks, including hard disks, storage area networks, and network attached storage, and evaluate disk scheduling algorithms and performance factors.
Explore the file system interface, its design tradeoffs, and core access methods—sequential, direct (relative), and index access—alongside file concepts, name, directory, sharing, linking, and text file structures.
Explore basic file attributes—identifier, location, type, size, protection, and time, date, and security—and describe operations such as creation, writing, reading, deleting, truncating, and file types.
The course will provide an introduction to Operating Systems (OS), their design and implementation. We will discuss the goals of an OS, and some successful and not-so- successful OS designs. Understanding operating systems is an increasingly important skill in the current job market. According to research from the U.S. Bureau of Labor Statistics, computer support specialist jobs are projected to grow 6 percent by 2031, and many of these positions require a strong knowledge base in operating systems. An operating system is the most important software that runs on a computer. It manages the computer's memory and processes, as well as all of its software and hardware. It also allows you to communicate with the computer without knowing how to speak the computer's language. The operating system directs the input and output of data, keeps track of files, and controls the processing of computer programs, allocating computer resources to various functions. The operating system also serves as an interface between the computer and the user. Most computer programs complete a task and then end.The main objectives of an operating system include Efficiency, Hardware abstraction, Convenience, and System resource management.However, they also come with disadvantages including complexity, susceptibility to vulnerabilities, and potential for system failures.