Operating Systems: Key Concepts & Types
Operating Systems: Key Concepts & Types
To run a program on a completely dedicated machine: 1) Manually load the program into memory through front panel switches or from paper tape/punched cards. 2) Use buttons to set the starting address and start execution. 3) Monitor execution via display lights on the console, halting for error checks. 4) Obtain output from printer or punched media. Modern processes automate most of these steps using an operating system to load, execute, and manage programs, including error handling, with minimal user intervention, thereby significantly reducing manual oversight and potential for human error .
User goals in OS design focus on ease of use, performance, and reliability, prioritizing user experience with intuitive interfaces and quick response times. System goals emphasize resource efficiency, security, stability, and maintainability. These goals influence implementation significantly; for instance, prioritizing user experience may require robust error handling and support for intuitive interfaces, while system goals necessitate efficient resource management algorithms, security protocols, and modular structures to facilitate maintenance and updates .
The microkernel approach minimizes the functions running in kernel mode, executing only essential services like communication and basic process management, while other services, such as device drivers and file systems, run in user mode. This design increases modularity and reliability but may introduce performance overhead from increased context switching. The modular approach structures the operating system as a collection of independent modules that interoperate, facilitating customization and extending functionality without affecting the core system. This structure supports easy maintenance and scalability .
Real-time operating systems are designed to handle tasks with strict timing constraints, ensuring critical tasks complete on time. They are categorized into hard real-time systems, guaranteeing task completion, and soft real-time systems, where critical tasks are prioritized without an absolute guarantee. In contrast, time-sharing systems, or multitasking systems, are designed to handle multiple users efficiently without strict time constraints, using virtual memory to support the extensive data requirements of concurrent users. These designs address distinct needs, with real-time systems prioritizing predictability and reliability, while time-sharing systems focus on maximizing resource utilization and user-task interactivity .
Advantages of open-source operating systems include cost-effectiveness, as they are freely available, and flexibility, allowing users to modify the source code as needed. These attributes attract developers who want customization options and businesses seeking to reduce licensing costs. However, disadvantages include a lack of official support and potential security risks due to varying levels of code quality. Users who prioritize stability and quick support, such as enterprise environments relying on consistent performance, might find these aspects unfavorable .
Over the past decade, personal computer operating systems have increased in complexity, rivaling or even surpassing mainframe operating systems. This shift is due to several factors, including the integration of PCs into business and enterprise environments, necessitating sophisticated OS features like multitasking and advanced security. Additionally, the rise in user expectations and the demand for more robust software capabilities have driven PC operating systems to evolve rapidly. Meanwhile, mainframe OSs have maintained sophistication to manage numerous users and data protection .
Batch operating systems handle I/O overlapping through a technique called spooling, which queues I/O operations so that printing or other I/O can occur while the CPU performs other computations. This method requires an intermediary storage system to temporarily hold data to be printed or transferred, freeing the CPU to execute other tasks. Additionally, the system must have effective job scheduling to manage multiple overlapping jobs efficiently, necessitating algorithms that optimize resource use without creating significant bottlenecks .
Batch operating systems initially ran one program at a time with a monitor required for program scheduling and loading. As they evolved, advanced batch systems began overlapping CPU and I/O operations using spooling, allowing the I/O of one job to overlap with the computation of another. This evolution led to the development of multiprogrammed batch systems, which allowed multiple programs to run 'at the same time' by employing job and CPU scheduling. The implications for CPU and I/O scheduling were significant, as these systems needed efficient scheduling algorithms to manage multiple concurrent tasks while optimizing the CPU and I/O device utilization, reducing waiting time and improving overall system throughput .
Multiprocessor systems offer increased throughput and reliability by sharing physical resources and potentially sustaining operation despite a processor failure. They also may cost less than multiple single-processor setups. However, the speedup of an n-processor system isn't an n-fold increase due to coordination overhead. In symmetric multiprocessing, each processor runs its OS copy and communicates as needed, allowing equal task management. Conversely, asymmetric multiprocessing designates one master processor to assign tasks to other slave processors, simplifying task management but potentially creating a bottleneck at the master processor .
A Process Control Block (PCB) is a data structure that stores information about a specific process running on an operating system. It includes details such as process state, process ID, CPU registers, memory management information, and I/O status. The PCB is essential for context switching, as it allows the operating system to save the state of a process and restore it later, ensuring that processes can be resumed from the same point after an interruption. PCBs are pivotal in process management, enabling efficient multitasking and resource allocation within the system .