Q1. Explain Multiprogramming.
Ans. Except as simple embedded systems, mono-programming is hardly used any more. Most modern systems allow multiple processes to run at the same time. Having multiple processes running at once means that when one process is blocked waiting for input/output to finish another one can use the CPU. The multiprocessing increases the CPU utilization. Network servers always have the ability to run multiple processes at the same time, but most client machines also have ability now-a-days.
The easiest way to achieve multiprogramming is simply to divide memory up into n (possibly unequal) partitions. This partitioning can be done manually when the system is started up.
When a job arrives it can be put into the input queue for the smallest partition large enough to hold it. Since the partitions are fixed in this scheme any space in a partition not used by a job is lost. The disadvantage of sorting the incoming jobs into separate queues becomes apparent when the queue for a large partition is empty but the queue for a small partition is full, as is the case for partition 1 and 3.