- Multiprogramming is a concept where we never allow the CPU to sit idle as long as there are processes requesting for CPU. Initially, all processes reside in the Secondary memory . From this , a few processes are selected and are brought into the main memory.
- Various scheduling algorithms are implemented for this like: FIFO(First Come First Out) and LRU(Least Recently Used).
- Once the process in Main Memory, the Operating System picks a process and allocates CPU to it. Again, this allocation is through scheduling algorithms like: First Come First Serve (FCFS) and Shortest Job First(SJF).
- Now, CPU is busy with the execution of that process and when that process requires I/O, and if the I/O is busy, then the process waits for the I/O to become free. But during this free period, the CPU doesn't sit idle, rather, it performs the execution of another process.
Example: Use a browser, play video, download apps and transfer data at the same time. In actual all process are working one at a time on the processor. Switching between process/program is so fast that you will never notice.
- High and efficient CPU utilization.
- User feels that many programs are allotted CPU almost simultaneously.
- CPU scheduling is required.
- To accommodate many jobs in memory, memory management is required.
- A time sharing operating system is that in which each task is given some time to execute and all tasks are given time so that all processes run seamlessly without any problem.
- Suppose there are many users attached to a single system then each user has given time of CPU. No user can feel to have trouble in using the system.
- Provides the advantage of quick response.
- Avoids duplication of software.
- Reduces CPU idle time.
- Problem of reliability.
- Question of security and integrity of user programs and data.
- Problem of data communication