Summary
Highlights
The operating system design is constrained by the underlying computer architecture. The video explores how the OS leverages or fails to leverage hardware features, impacting the user experience. The initial focus is on categorizing computer architectures, starting with single-processor systems.
The video describes single-processor systems. It also touches on multi-core systems, where multiple cores exist within the same CPU, capable of parallel or independent operation. Threading will be discussed later.
Multiprocessor systems, also known as parallel systems, feature multiple processors that can work concurrently. These are tightly coupled systems sharing a common memory for program and data access, facilitating easy data sharing between processors.
The benefits include increased throughput, economy of scale and enhanced reliability. Thoughput increases because the system can complete more tasks with more processors. Reliability is improved since other processors can take over if one fails.
Multiprocessor systems are divided into symmetric and asymmetric types. Symmetric multiprocessing involves identical processors handling any task, simplifying scheduling. Asymmetric multiprocessing uses specialized processors for different tasks (e.g., CPUs and DSPs), requiring task-specific assignment.
In symmetric multiprocessing, each CPU has dedicated registers and cache, but shares main memory. This can lead to cache coherence issues where variable values differ across caches. Cache coherence problems needs to be addressed.
Multi-core systems integrate multiple computing cores onto a single chip, offering efficiency gains over multiple single-core chips. On-chip communication is faster than off-chip communication in multi-processor systems.
Integrating multiple processors on a single chip is known as System-on-Chip (SoC). Multi-core systems consume less power than multiple single-core chips due to reduced off-chip communication. Multi-core systems are multi-processor systems but not all multi-processor systems are multi-core systems.
Clustered systems are similar to multi-processor systems but consist of multiple independent systems working together, often sharing storage via storage area networks (SAN). SANs are high-availability networks.
Clustering can be symmetric or asymmetric, with one machine in hot standby mode. High-performance computing utilizes clustering to speed up intensive calculations, requiring applications optimized for parallel execution. Distributed lock management is used in clustered systems.
Multi programmed systems, allow multiple programs to reside in memory simultaneously, maximizing CPU and I/O device utilization. This approach involves batch systems, where jobs are processed sequentially without user interaction, and interactive systems.
Interactive systems extend batch processing by enabling user interaction during program execution, requiring fast response times. CPU scheduling becomes necessary when multiple processes are ready to run, influenced by the swapping process.
Virtual memory creates a large logical address space for programs by using disk space as an extension of RAM, enabling programs to exceed physical memory limitations. In memory, there are different jobs.
Operating systems use user mode and kernel mode to protect themselves and other computer components. The mode bit represents the current execution mode of the processor i.e either user or kernel. Kernel mode execution is protected.
When a program requires access to system resources, it makes system calls. System calls trigger a switch from user mode to kernel mode, where privileged instructions are executed and the system call is handled, before returning to user mode. When this happens, kernel resources will be protected.