OPERATING SYSTEM NOTES
Chapter 1: Introduction to Operating Systems
------------------------------------------------
Definition:
An Operating System (OS) is system software that manages computer hardware, software resources,
and provides services to users and applications.
What Operating Systems Do:
- Manage hardware resources (CPU, memory, I/O devices).
- Provide environment for application execution.
- Offer user interfaces (GUI/CLI).
- Ensure system security and protection.
Computer-System Organization:
- CPU, memory, I/O devices interact via system buses.
- Interrupts allow asynchronous event handling.
Computer-System Architecture:
- Single-processor systems: One main CPU.
- Multiprocessor systems: Multiple CPUs, increased throughput.
- Clustered systems: Multiple machines working together.
Operating-System Structures:
- Monolithic kernels
- Microkernels
- Layered systems
- Modular kernel designs
Operating-System Operations:
- Bootstrap program loads OS at startup.
- Dual-mode operation (User mode & Kernel mode).
Process Management:
- Processes are active programs in execution.
- OS handles creation, scheduling, synchronization, communication.
Memory Management:
- Tracks memory usage, allocates memory, prevents conflicts.
Storage Management:
- File systems
- Disk scheduling
- Secondary storage management
Protection and Security:
- Protection: Controlling access to system resources.
- Security: Prevent unauthorized access, attacks, malware.
Distributed Systems:
- Multiple computers connected via a network.
Special-Purpose Systems:
- Real-time systems
- Embedded systems
Computing Environments:
- Traditional PCs
- Mobile systems
- Cloud computing
- Client-server systems
------------------------------------------------
Chapter 2: Operating System Structures
------------------------------------------------
Operating System Services:
- Program execution
- I/O operations
- File system manipulation
- Communication
- Error detection
- Resource allocation
User Operating System Interface:
- CLI: Command Line Interface.
- GUI: Graphical User Interface.
- Touch Interface.
System Calls:
- Interface between user program and OS.
- Types:
* Process control
* File manipulation
* Device management
* Information maintenance
* Communication
Types of System Calls:
- fork(), exec(), wait(), open(), close(), read(), write()
System Programs:
- Provide convenient environment for program development.
- Examples: text editors, compilers, linkers, loaders.
Operating System Design and Implementation:
- Goals: Efficiency, reliability, flexibility.
- Written in C/C++ generally.
Operating System Structure:
- Simple structure (MS-DOS)
- Layered structure
- Microkernels (minimize kernel functionality)
- Modules (loadable kernel modules)
Virtual Machines:
- Hardware abstraction providing isolated OS environments.
Operating System Generation:
- OS tailored to specific hardware.
System Boot:
- Bootloader (MBR/UEFI) loads OS kernel.
------------------------------------------------
Chapter 3: Processes
------------------------------------------------
Process Concept:
- A program in execution.
- Components:
* Program counter
* Stack
* Heap
* Data section
Process Scheduling:
- Decides which process runs next.
Operations on Processes:
- Process creation (fork)
- Process termination (exit)
Cooperating Processes:
- Share data and resources.
- Allow information sharing, computation speed-up.
Inter-process Communication (IPC):
- Shared memory
- Message passing
Communication in Client-Server Systems:
- Communication using sockets, pipes, RPC.
------------------------------------------------
Chapter 5: CPU Scheduling
------------------------------------------------
Basic Concepts:
- CPU scheduling increases CPU utilization.
- Scheduler picks next process to execute.
Scheduling Criteria:
- CPU utilization
- Throughput
- Turnaround time
- Waiting time
- Response time
Scheduling Algorithms:
- FCFS (First Come First Serve)
- SJF (Shortest Job First)
- Priority Scheduling
- Round Robin Scheduling
- Multilevel Queue Scheduling
- Multilevel Feedback Queue Scheduling
Multiple-Processor Scheduling:
- Load balancing
- Symmetric multiprocessing (SMP)
- Asymmetric multiprocessing
Real-Time Scheduling:
- Hard real-time systems
- Soft real-time systems
Thread Scheduling:
- User-level threads
- Kernel-level threads
Operating Environment:
- Multicore processors
- Multithreading support