A group of jobs that are ready to be executed is called job pool. Since there is more than one job that can be executed, it is possible for the operating system to make a decision about which job to execute next. That decision keeps CPU utilization as high as possible.
In general, it is not possible for a single user to keep CPU or I/O devices busy at all times. Multiprogramming allows the system .to increase CPU utilization by ensuring that the CPU always has a job to execute.
The CPU has a pool of jobs. When the currently executing job has to wait (if it is performing some I/O), it is removed from the CPU- Another job is selected and the CPU now executes it. This process ensures that CPU is always executing a job if there is a job to execute. In a non-multiprogrammed system, if a job had to wait for an I/O operation, CPU would also have to wait until I/O was finished.
CPU requires sophisticated data structures to implement multiprogramming. CPU must be able to decide which job is to be executed next. Some jobs will fit into memory at once. Some jobs may have to remain on disk. The operating system must be able to perform some sort of scheduling on the jobs in job pool. It determines which jobs will stay on the disk and which ones will be loaded into memory. The operating system must have some form of memory management. Memory management is used to keep track of which jobs are stored, where and how much space is available.
Sometimes, there may be many jobs that can run at any one time. The interaction between jobs must be controlled. In general, one job should not be able to manipulate the data or program code of another job.
In general, it is not possible for a single user to keep CPU or I/O devices busy at all times. Multiprogramming allows the system .to increase CPU utilization by ensuring that the CPU always has a job to execute.
The CPU has a pool of jobs. When the currently executing job has to wait (if it is performing some I/O), it is removed from the CPU- Another job is selected and the CPU now executes it. This process ensures that CPU is always executing a job if there is a job to execute. In a non-multiprogrammed system, if a job had to wait for an I/O operation, CPU would also have to wait until I/O was finished.
CPU requires sophisticated data structures to implement multiprogramming. CPU must be able to decide which job is to be executed next. Some jobs will fit into memory at once. Some jobs may have to remain on disk. The operating system must be able to perform some sort of scheduling on the jobs in job pool. It determines which jobs will stay on the disk and which ones will be loaded into memory. The operating system must have some form of memory management. Memory management is used to keep track of which jobs are stored, where and how much space is available.
Sometimes, there may be many jobs that can run at any one time. The interaction between jobs must be controlled. In general, one job should not be able to manipulate the data or program code of another job.