Operation System
What do you mean by an operating system?
An Operating System (OS) is system software that manages computer hardware and software resources and provides common services for programs.
- Manages CPU, memory, storage, I/O devices, and processes.
- Schedules tasks and allocates resources fairly and efficiently.
- Provides abstractions (files, processes, threads) and security.
- Acts as an intermediary between users/applications and hardware.
Scheduling Algorithm
Common CPU scheduling algorithms:
- FCFS (First Come First Serve): processes execute in arrival order; easy to implement (FIFO queue) but may have high average waiting time.
- SJF/SJN (Shortest Job First/Next): runs the process with the smallest burst time; minimizes average waiting time; may cause starvation for long jobs.
- Priority Scheduling: runs the highest priority process first; equal priorities use FCFS; risk of starvation for low-priority processes (can use aging).
- SRTF (Shortest Remaining Time First): preemptive version of SJF; always runs the job with the shortest remaining time; good for short jobs; can preempt longer jobs.
- Round Robin (RR): each process gets a fixed time slice (quantum); preempted after quantum expires; improves responsiveness in time-sharing systems.
Difference between Counting and Binary Semaphores
- Binary semaphore: takes values 0/1; used for mutual exclusion (mutex-like behavior).
- Counting semaphore: holds a non-negative integer; controls access to a resource pool with multiple instances.
- Binary semaphores are simpler and enforce exclusive access; counting semaphores manage capacity.
What is Deadlock?
Deadlock occurs when processes are blocked, each holding a resource and waiting for others to release theirs.
Necessary conditions (Coffman):
- Mutual exclusion
- Hold and wait
- No preemption
- Circular wait
Ram vs Cache
- Cache: very fast, small memory close to the CPU; stores frequently used data/instructions; organized in levels (L1/L2/L3).
- RAM: larger main memory; stores programs and data currently in use; slower than cache but faster than disk.
Thread vs Process
- Process: an executing program with its own memory space.
- Thread: lightweight execution unit within a process; shares process memory.
Multi-thread vs multi-process
- Multiprocessing: multiple processes (often across CPUs/cores) with isolated memory; improves parallelism and isolation; IPC required.
- Multithreading: multiple threads within one process sharing memory; lower overhead; easier sharing; needs careful synchronization.
Virtual Memory (VM), VM paging and Page Fault
- Virtual Memory: abstraction that gives processes the illusion of a large, contiguous memory space; enables memory protection and isolation.
- Paging: divides virtual memory into fixed-size pages mapped to physical frames; avoids external fragmentation.
- Page Fault: occurs when a process accesses a page not in physical memory; OS loads the page from disk (swap/page file) into RAM.
Ram vs Rom
- RAM (Random Access Memory): volatile; temporary working memory for active programs/data.
- ROM (Read-Only Memory): non-volatile; permanently stores firmware/instructions.
Solution to the Critical Section Problem
- A correct solution must satisfy:
- Mutual Exclusion: only one process in the critical section at a time.
- Progress: if no process is in the critical section, selection of the next entrant cannot be postponed indefinitely.
- Bounded Waiting: each process has a bounded waiting time before entering the critical section.