Job control is the term for managing various actions on a computer system. Computers are capable of doing multiple things at the same time, but in many cases, only a single process can operate in a given area at any one time. Computers use a job control system to manage their tasks, letting one process use resources in one area while another uses resources in a different area. These systems monitor the priority of operations and keep important tasks running faster and less important tasks in the background.
Job control systems developed early on in the design of modern computers to alleviate speed problems. In many early systems, the central systems of the computer were more than capable of speeding through the tasks given to them. The speed problems happened in the communications with peripheral systems. Not only were the systems slower, but the transferal time between the systems groups was quite long. Additions to peripheral hardware, such as buffers and cache systems, only made certain processes faster and didn’t solve the problem.
Multitasking was an early attempt at job control. The computer was given a new system that kept track of active and inactive jobs. When a system was too busy to handle a new job, it was put into an inactive queue. When the hardware was able to take a new process, the highest-priority process would be made active. This process would then move into the hardware.
The problem with this system was in its decentralized nature. While a single queue held all the active and inactive processes, information pertaining to the hardware came from the hardware itself. The driver for the hardware would report whether it was available or not to the scheduler—if a process entered an error state and continued to use the hardware, it would never become available. In addition, some processes only needed the central processor or a certain peripheral; this would tie up the entire system until those processes ended. In order to combat this problem, modern job control systems were designed.
Job control focuses on the idea of pre-emptive computing. Each process is given an overall priority and, occasionally, secondary priorities relating to certain systems. The computer’s scheduler maintains the queue of processes. When one process comes up that is more important than one that is currently active, the active one will suspend and the new process will take over. When the suspended program is the most important process, it will start up again.