Difficulty: Easy
Correct Answer: both (a) and (b)
Explanation:
Introduction / Context:
Multiprogramming—keeping multiple programs in memory and allowing them to make progress seemingly at once—was a landmark capability in computing. It relied on both hardware advancements (I/O subsystems) and software sophistication (operating systems). This question asks you to identify the necessary enablers.
Given Data / Assumptions:
Concept / Approach:
To realize multiprogramming, two pillars were required: (1) I/O devices and controllers capable of operating in parallel with the CPU (e.g., DMA, channels), so the CPU need not busy-wait; and (2) an operating system to manage memory, schedule jobs, handle interrupts, and coordinate context switches. Without either, true multiprogramming would stall or be unmanageable.
Step-by-Step Solution:
1) Identify hardware need: independent I/O so CPU can compute while devices transfer data.2) Identify software need: OS to manage ready/blocked states, interrupts, and resource allocation.3) Conclude that both hardware capability and OS software are required.
Verification / Alternative check:
Historical systems (e.g., IBM 7090 → 360 series) introduced channel I/O and sophisticated OSes (e.g., MVT/MVS), demonstrating that only with both elements could multiprogramming flourish, improving utilization and throughput.
Why Other Options Are Wrong:
Common Pitfalls:
Confusing multiprogramming with multiprocessing (multiple CPUs). Multiprogramming can occur on a single CPU by overlapping CPU and I/O, but it requires both I/O autonomy and OS scheduling.
Final Answer:
both (a) and (b).
Discussion & Comments