Purpose: Managing disk I/O to improve performance.
Classical Algorithms: First-come-first-serve, elevator algorithms (scan, look, C-scan, C-look), shortest seek time first (obsolete with modern drives).
Modern Considerations: Native Command Queuing (NCQ) for internal disk scheduling.
Key Roles: Stakeholders, interests, primary and supporting actors.
Requirements Types: Functional (what the system does), Non-functional (quality attributes, what the system is).
CPU and Multi-Programming
Multi-programming: Running multiple processes concurrently by CPU switching.
Hardware Requirements: Interrupts, CPU protection levels (kernel/user mode), mode switches.
Kernel Architectures
Functions of the Kernel: Abstraction, arbitration, ensuring system stability and performance.
Types: Monolithic (e.g., Linux, Windows NT), Microkernels (e.g., L4, Mach).
Hybrid Designs: Combine features of both for performance and modularity.
Unified Modeling Language (UML)
Purpose: Standardized way to model software designs (classes, behaviors, interactions).
Types of Diagrams: Structural (class diagrams), Behavioral (activity, state machine), Interaction.
Memory Allocation
Dynamic: Allocating memory as needed to prevent space wastage and handle high multiprogramming.
Methods: Power of two, buddy system, slab allocation (for kernels).
Process Management
Process Contexts: Information needed to stop and restart a process (CPU registers, program counter, memory contents).
States: New, ready, running, waiting, terminated.
Scheduling: Job (long-term), Midterm, and Short-term (CPU) scheduling.
Process Control Blocks (PCBs): Arrays and linked lists managing processes' state information.
Conclusion and Key Takeaways
Operating systems are essential for managing hardware resources and providing a uniform interface for applications.
Abstraction and arbitration are fundamental to managing the diverse and concurrent needs of applications and hardware.
Comprehensive understanding of OS functions, different kernel types, and effective memory and process management techniques is crucial for designing and maintaining robust, efficient computer systems.