Multiprogramming has become possible when the disks are introduced into the computer world. The concept of multiprogramming depends on the ability of a computer to store instructions for long-term use. The goal is to reduce the CPU time inactive by allowing new tasks to grab the CPU when the current active task has to wait (eg for user I / O). It is also at this moment that the operating systems have been given a new responsibility - decision-making. Before multiprogramming is introduced, the role of the operating system is simple and uncomplicated - to load and run a memory program via the CPU. With the advent of multiprogramming, operating systems are confronted with different program implementation mechanisms because many tasks now have to be loaded into memory at the same time and there are many options to take the CPU time. In one or more programming systems, one or more programs are loaded with basic memory ready to be performed. A program at the same time This ensures that the CPU implements its instructions (ie, there is the most active system process) while everyone is waiting for his moves. The main idea of ​​multiprogramming is to maximize the use of CPU time. Suppose the editing process performs an I / O task (which by definition does not need to complete the CPU). Then the operating system can interrupt the process and give control over any of the other memory programs that are ready to be created (ie the process of moving the context). In this way, waiting for no time wasted CPU system in I / O activity, and is a process operation that is conducted until it voluntarily releases the CPU or blocks for I / O operations. If so, this is the ultimate goal of multi-programming with CPU in the process of keeping the process ready for implementation. To ensure that this system is working properly, the operating system needs more programs to be loaded into separate areas of the primary memory and prevent the necessary safety changes for another process. Other problems that should be resolved are the presence of multiple memory fragmentation programs when the program is in or out of the main memory. Another problem that can not fit the memory of good programs that can be solved by using paging and virtual memory should be solved. Processing of the control panel (CPU) is very fast, but the input / output (I / O) devices are slow. Multiprogramming is a technique that has been developed to reduce the effect of this mismatch between CPU and I / O devices, so that CPU time is better used. Commercial applications are the I / O programs that are bound. In contrast to this, scientific and technical programs are involved in very small I / O operations and large amounts of calculations, that is, programs that are connected to the CPU. I / O operations are very slow. Individual I / O processors that manage CPU-initiated I / O operations. Multiprogramming increases CPU utilization by scheduling jobs for CPU to get work done at any time. Multiprogramming requires more advanced operating systems. The operating system maintains multiple memory programs at the same time to have a part of the work ready to run the CPU. The operating system needs better memory management, work planning and CPU planning facilities. Multiprogramming thus requires large memories, fast secondary storage devices and fast ALU. The multiprogramming control system runs one program at a time. If that program requires some I / O operation, which is a slow process, the CPU switches to another implementation work when the first implementation of the program waits for the I / O operation to complete. If the second task also requires I / O operation, the CPU is provided with a third task, and so on. Always a program in three states: ready, active and blocked. Until the first program completes my / O operation, it is blocked and when my / O operation is complete, it goes to the Ready state. It moves the status operation when the CPU is returned here to the operating system message about completing the I / O operation. Multiprogramming is introduced into operating systems to overcome the problem of using CPU and main memory. Multiprogramming is the interwoven implementation of two or more separate and independent programs from the same computer. The CPU almost immediately goes from one task to another. At any time, a program controls only the CPU. So, the CPU is almost always busy. The memory is divided for some programs to live in memory. Above all, tasks waiting for entry into the main memory are queued for a fast secondary storage device such as a magnetic disk. Two types of planning are introduced to process this decision-making process - planning work and CPU planning. Task planning refers to selecting tasks that must be loaded into memory. CPU planning refers to selecting a work that exists in memory to run via the CPU. In a computer system both decisions are made by the operating system.