Operating System Overview
Operating System Overview¶
Overview¶
An Operating System (OS) is system software that manages computer hardware and provides services to application programs. This lesson covers the definition of operating systems, their roles, development history, and kernel architecture.
Table of Contents¶
- What is an Operating System?
- Roles of an Operating System
- History of Operating Systems
- Kernel Architecture
- System Calls
- Interrupt Handling
- Practice Problems
1. What is an Operating System?¶
Definition¶
Operating System = Intermediary between hardware and users
βββββββββββββββββββββββββββββββββββββββββββ
β Users/Application Programs β
βββββββββββββββββββββββββββββββββββββββββββ€
β Operating System (OS) β
β - Resource Manager β
β - Control Program β
βββββββββββββββββββββββββββββββββββββββββββ€
β Hardware β
β CPU, Memory, Disk, I/O Devices β
βββββββββββββββββββββββββββββββββββββββββββ
Two Perspectives of OS¶
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Perspective 1: Resource Manager β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β - CPU time distribution β
β - Memory space allocation β
β - Disk/I/O device management β
β - Resolve resource conflicts between programs β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Perspective 2: Service Provider β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β - File system access β
β - Process execution environment β
β - User interface (CLI/GUI) β
β - Network communication β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2. Roles of an Operating System¶
Core Functions¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β OS Core Functions β
βββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββ€
β Process Mgmt β Process creation/termination/schedulingβ
βββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ€
β Memory Mgmt β Memory allocation/deallocation, virtualβ
βββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ€
β File System β File create/delete/read/write β
βββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ€
β I/O Mgmt β Device drivers, buffering, spooling β
βββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ€
β Security β Access control, user authentication β
βββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ€
β Networking β Protocol stack, socket interface β
βββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββ
Resource Management Example¶
// Process reading a file
// (How OS mediates)
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
// 1. Open file (request to OS)
int fd = open("data.txt", O_RDONLY);
// 2. Read file (OS handles disk I/O)
char buffer[1024];
ssize_t bytes = read(fd, buffer, sizeof(buffer));
// 3. Close file (OS releases resource)
close(fd);
return 0;
}
/*
User Program Operating System Hardware
β β β
βββ open() βββββββββββΆ β
β βββ Disk access ββββΆ
β ββββ Data ββββββββββ
ββββ fd returned βββββ β
*/
3. History of Operating Systems¶
Evolution by Generation¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Operating System Evolution History β
βββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Era β Features β
βββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 1st Gen β No OS, manual operation β
β 1940-50s β Programmers enter machine code directly β
βββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 2nd Gen β Batch System β
β 1950-60s β Job automation, resident monitor β
βββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 3rd Gen β Multiprogramming, time-sharing β
β 1960-70s β Multiple programs execute concurrently, β
β β interactive usage β
βββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 4th Gen β Distributed systems, network OS β
β 1970-Now β GUI, multiprocessor, cloud β
βββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββ
Batch System¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Batch System Operation β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Job1 βββΆ Job2 βββΆ Job3 βββΆ Job4 βββΆ ... β
β β
β β’ Only one job executes at a time β
β β’ CPU idle time occurs (waiting for I/O) β
β β’ Improved efficiency with automatic job switching β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Timeline:
ββββββββ¬βββββββββββββββββββ¬βββββββ¬βββββββββββββββββββ
βJob1 β I/O wait (waste)βJob2 β I/O wait β
ββββββββ΄βββββββββββββββββββ΄βββββββ΄βββββββββββββββββββ
CPU CPU idle CPU CPU idle
Multiprogramming¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Multiprogramming Operation β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Multiple programs loaded in memory simultaneously β
β β
β βββββββββββ β
β β OS β β
β βββββββββββ€ β
β β Program1β βββ CPU executing β
β βββββββββββ€ β
β β Program2β βββ Waiting for I/O β
β βββββββββββ€ β
β β Program3β βββ Ready state β
β βββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Timeline:
ββββββββ¬βββββββ¬βββββββ¬βββββββ¬βββββββ¬βββββββ
βJob1 βJob2 βJob3 βJob1 βJob3 βJob2 β
ββββββββ΄βββββββ΄βββββββ΄βββββββ΄βββββββ΄βββββββ
CPU continuously performs different tasks
Time-Sharing System¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Time-Sharing System Operation β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Multiple users use computer simultaneously β
β Each user allocated short time slice β
β β
β UserA βββ¬ββ 10ms βββ¬ββ 10ms βββ¬ββ ... β
β UserB βββΌββ 10ms βββΌββ 10ms βββΌββ ... β
β UserC βββ΄ββ 10ms βββ΄ββ 10ms βββ΄ββ ... β
β β
β β Each user feels like they have exclusive access β
β β Response time important (interactive system) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
4. Kernel Architecture¶
What is a Kernel?¶
Kernel = Core part of the operating system
= Directly interacts with hardware
= Always resident in memory
βββββββββββββββββββββββββββββββββββββββββββ
β User Space β
β βββββββββ βββββββββ βββββββββ β
β β App1 β β App2 β β App3 β β
β βββββββββ βββββββββ βββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ€
β Kernel Space β
β βββββββββββββββββββββββββββββββββββββ β
β β Kernel β β
β β β’ Process management β β
β β β’ Memory management β β
β β β’ File system β β
β β β’ Device drivers β β
β βββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ€
β Hardware β
βββββββββββββββββββββββββββββββββββββββββββ
Monolithic Kernel¶
βββββββββββββββββββββββββββββββββββββββββββββ
β Monolithic Kernel β
βββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββ β
β β Kernel β β
β β ββββββββ¬βββββββ¬βββββββ¬βββββββββββ β β
β β βProcessβMemory βFile β Network β β β
β β β Mgmt β Mgmt βSystem β β β β
β β ββββββββ΄βββββββ΄βββββββ΄βββββββββββ€ β β
β β β Device Drivers β β β
β β ββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββ β
β β
β Advantages: Excellent performance β
β Disadvantages: Hard to maintain, bugs β
β have wide impact β
β Examples: Linux, Unix, MS-DOS β
β β
βββββββββββββββββββββββββββββββββββββββββββββ
Microkernel¶
βββββββββββββββββββββββββββββββββββββββββββββ
β Microkernel β
βββββββββββββββββββββββββββββββββββββββββββββ€
β β
β User space: β
β ββββββββ ββββββββ ββββββββ ββββββββββββ β
β βFile β βDevice β βNetworkβ βProcess β β
β βServer β βDriver β βServer β βServer β β
β ββββββββ ββββββββ ββββββββ ββββββββββββ β
β β² β² β² β
β β IPC β β β
β βΌ βΌ βΌ β
β βββββββββββββββββββββββββββββββββββββββ β
β β Microkernel (minimal) β β
β β - Basic IPC β β
β β - Basic scheduling β β
β β - Basic memory management β β
β βββββββββββββββββββββββββββββββββββββββ β
β β
β Advantages: Stability, easy maintenance β
β Disadvantages: Performance degradation β
β due to IPC overhead β
β Examples: Minix, QNX, L4 β
β β
βββββββββββββββββββββββββββββββββββββββββββββ
Hybrid Kernel¶
βββββββββββββββββββββββββββββββββββββββββββββ
β Hybrid Kernel β
βββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Combines advantages of micro + monolithicβ
β β
β User space: β
β ββββββββ ββββββββ β
β β App β βSubsysβ β
β ββββββββ ββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββ β
β β Hybrid Kernel β β
β β ββββββββββββββββββββββββββββββββ β β
β β β FileSystem β Network β Graphicsβ β β
β β ββββββββββββββββββββββββββββββββ β β
β β ββββββββββββββββββββββββββββββββ β β
β β β Microkernel Core β β β
β β ββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββ β
β β
β Examples: Windows NT, macOS (XNU) β
β β
βββββββββββββββββββββββββββββββββββββββββββββ
Kernel Architecture Comparison¶
βββββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ
β Feature βMonolithicβMicrokernelβ Hybrid β
βββββββββββββββΌβββββββββββΌβββββββββββΌβββββββββββ€
β Performance β High β Low β Medium β
β Stability β Low β High β Medium β
β Maintenance β Hard β Easy β Medium β
β Modularity β Low β High β High β
β Code Size β Large β Small β Medium β
βββββββββββββββΌβββββββββββΌβββββββββββΌβββββββββββ€
β Examples β Linux β Minix β Windows β
β β FreeBSD β QNX β macOS β
βββββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ
5. System Calls¶
What is a System Call?¶
System Call = Interface for user programs to request OS services
βββββββββββββββββββββββββββββββββββββββββββββ
β User Mode β
β β
β βββββββββββββββββββββββββββββββββββ β
β β User Program β β
β β β β
β β read(fd, buffer, size); β β
β β β β β
β β βΌ β β
β β ββββββββββββββββββββ β β
β β β System Call Interfaceβ β β
β β β (Library function) β β β
β β ββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββ€
β Kernel Mode (trap) β
β βΌ β
β βββββββββββββββββββββββββββββββββββ β
β β System Call Handler β β
β β β β
β β β Perform actual file read β β
β β β Return result to user β β
β βββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββ
System Call Processing Steps¶
Steps:
1. User program calls system call
2. Library sets parameters in registers
3. Software interrupt (trap) occurs
4. User mode β Kernel mode transition
5. Find handler using system call number
6. Execute handler
7. Kernel mode β User mode return
8. Return result
ββββββββββββββββββββββββββββββββββββββββββββββββββ
β System Call Table β
ββββββββββ¬ββββββββββββββββββββββββββββββββββββββββ€
β Number β System Call β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββ€
β 0 β read() β
β 1 β write() β
β 2 β open() β
β 3 β close() β
β ... β ... β
β 39 β fork() β
β 60 β exit() β
ββββββββββ΄ββββββββββββββββββββββββββββββββββββββββ
System Call Categories¶
// 1. Process Control
fork(); // Create process
exec(); // Execute program
exit(); // Terminate process
wait(); // Wait for child process
// 2. File Management
open(); // Open file
read(); // Read file
write(); // Write file
close(); // Close file
// 3. Device Management
ioctl(); // Control device
read(); // Read from device
write(); // Write to device
// 4. Information Maintenance
getpid(); // Get process ID
time(); // Get time
// 5. Communication
socket(); // Create socket
send(); // Send data
recv(); // Receive data
System Call Example¶
// File writing example in Linux
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main() {
const char *msg = "Hello, OS!\n";
// System call 1: open()
int fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd < 0) {
// System call: write() to stderr
write(2, "Error opening file\n", 19);
return 1;
}
// System call 2: write()
ssize_t bytes_written = write(fd, msg, strlen(msg));
// System call 3: close()
close(fd);
return 0;
}
/*
Trace system calls with strace:
$ strace ./a.out
openat(AT_FDCWD, "output.txt", O_WRONLY|O_CREAT|O_TRUNC, 0644) = 3
write(3, "Hello, OS!\n", 11) = 11
close(3) = 0
*/
6. Interrupt Handling¶
What is an Interrupt?¶
Interrupt = Signal that notifies CPU of event requiring attention
ββββββββββββββββββββββββββββββββββββββββββββββββββ
β Interrupt Types β
ββββββββββββββββββββ¬ββββββββββββββββββββββββββββββ€
β Hardware Interruptβ Software Interrupt β
ββββββββββββββββββββΌββββββββββββββββββββββββββββββ€
β β’ Timer β β’ System call (trap) β
β β’ Keyboard input β β’ Exception β
β β’ Mouse movement β - Division by zero β
β β’ Disk I/O done β - Invalid memory access β
β β’ Network packet β - Page fault β
ββββββββββββββββββββ΄ββββββββββββββββββββββββββββββ
Interrupt Handling Process¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Interrupt Handling Process β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
1. CPU executing instructions
β
βΌ
2. Interrupt occurs (e.g., keyboard input)
β
βΌ
3. Save current state (PC, registers)
β
βΌ
4. Find handler address in interrupt vector table
β
βΌ
5. Execute Interrupt Service Routine (ISR)
β
βΌ
6. Restore saved state
β
βΌ
7. Resume interrupted program
βββββββββββββββββββββββββββββββββββββββββββββββ
β Interrupt Vector Table β
βββββββββ¬ββββββββββββββββββββββββββββββββββββββ€
β Numberβ Handler Address β
βββββββββΌββββββββββββββββββββββββββββββββββββββ€
β 0 β 0x00001000 (Division error) β
β 1 β 0x00001100 (Debug) β
β 2 β 0x00001200 (NMI) β
β ... β ... β
β 32 β 0x00002000 (Timer) β
β 33 β 0x00002100 (Keyboard) β
βββββββββ΄ββββββββββββββββββββββββββββββββββββββ
Interrupt Timeline¶
Time β
Process execution: ββββββββββββββββββββββββββββββββββββ
β β
Interrupt ISR
occurs done
Details:
ββββββββββ¬βββββββββ¬βββββββββββββββββ¬βββββββββββββββββ
β Instructionβ Save β Interrupt β Instruction β
β execution β state β handler exec β resume β
ββββββββββ΄βββββββββ΄βββββββββββββββββ΄βββββββββββββββββ
Interrupt Priority¶
High βββββββββββββββββββββββββββ
β β Power Failure β
β βββββββββββββββββββββββββββ€
β β Machine Check β
β βββββββββββββββββββββββββββ€
β β External Interrupt (NMI) β
β βββββββββββββββββββββββββββ€
β β Timer Interrupt β
β βββββββββββββββββββββββββββ€
β β I/O Interrupt β
β βββββββββββββββββββββββββββ€
β β Software Interrupt β
β βββββββββββββββββββββββββββ
Low
Interrupt Handler Example (Conceptual)¶
// Interrupt Service Routine
// Actually written with assembly
// Timer interrupt handler (conceptual code)
void timer_interrupt_handler(void) {
// 1. Decrease current process's time slice
current_process->time_slice--;
// 2. Update system time
system_time++;
// 3. Schedule if time slice is 0
if (current_process->time_slice == 0) {
schedule(); // Select next process
}
// 4. Signal interrupt completion
send_EOI(); // End Of Interrupt
}
// Keyboard interrupt handler (conceptual code)
void keyboard_interrupt_handler(void) {
// 1. Read scan code from keyboard controller
uint8_t scancode = inb(KEYBOARD_DATA_PORT);
// 2. Convert scan code to ASCII
char key = scancode_to_ascii(scancode);
// 3. Store in keyboard buffer
keyboard_buffer_put(key);
// 4. Wake up waiting processes
wakeup_keyboard_waiters();
// 5. Send EOI
send_EOI();
}
7. Practice Problems¶
Problem 1: Basic Concepts¶
Fill in the blanks.
- The two perspectives of an operating system are __ and service provider.
- The goal of multiprogramming is to reduce __ to increase CPU utilization.
- The kernel structure where all functions are integrated is called __.
Show Answer
1. Resource manager 2. CPU idle time 3. Monolithic kernelProblem 2: System Call Classification¶
Classify the following system calls into appropriate categories.
fork(), open(), socket(), getpid(), ioctl()
| Process Control | File Management | Device Management | Information Maintenance | Communication |
|---|---|---|---|---|
Show Answer
| Process Control | File Management | Device Management | Information Maintenance | Communication | |----------------|----------------|------------------|----------------------|--------------| | fork() | open() | ioctl() | getpid() | socket() |Problem 3: Kernel Architecture Comparison¶
Choose the matching kernel architecture for each description.
A. Monolithic Kernel B. Microkernel C. Hybrid Kernel
- ( ) Kernel contains only minimal functions, rest runs in user space
- ( ) Architecture used by Linux
- ( ) Architecture used by Windows NT
- ( ) Performance degradation due to IPC overhead is a disadvantage
Show Answer
1. (B) Microkernel 2. (A) Monolithic Kernel 3. (C) Hybrid Kernel 4. (B) MicrokernelProblem 4: Interrupt Handling¶
Arrange the interrupt handling process in the correct order.
A. Execute interrupt handler B. Save current state C. Interrupt occurs D. Restore saved state E. Find handler in interrupt vector table
Show Answer
C β B β E β A β D 1. (C) Interrupt occurs 2. (B) Save current state 3. (E) Find handler in interrupt vector table 4. (A) Execute interrupt handler 5. (D) Restore saved stateProblem 5: System Call Code Analysis¶
List the system calls that occur in the following code in order.
#include <unistd.h>
#include <fcntl.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
int fd = open("child.txt", O_WRONLY | O_CREAT, 0644);
write(fd, "child", 5);
close(fd);
} else {
wait(NULL);
write(1, "parent\n", 7);
}
return 0;
}
Show Answer
1. fork() - Create child process Child process: 2. open() - Open file 3. write() - Write to file 4. close() - Close file 5. exit() - Terminate process (implicit) Parent process: 6. wait() - Wait for child process 7. write() - Write to standard output 8. exit() - Terminate process (implicit)Next Steps¶
- 02_Process_Concepts.md - Process memory structure and state transitions