Job control (computing): Difference between revisions

Content deleted Content added
Remove fluff
History: Edit for brevity
Line 7:
 
== History ==
Job control has developed from [[History of computing| the early days of computers]] where humanwhen [[Computer operator| operators]] were responsible for setting up, monitoring and controlling every jobjobs, to modern [[operating system]]s,systems which take on the bulk of the work of job control.
 
It became obvious to the earlyEarly computer developers realized that their fast machinescomputers spent most of thetheir time idle because the single program they were executingsoftware had to wait while a relatively slow [[peripheral]] device completed an essential operation such as reading or writing data; in modern terms, programs were [[I/O-bound]], not [[compute-bound]]. [[Data buffer| Buffering]] only provided a partial solution;, but eventually an output buffer would occupy all available memory or an input buffer would be emptied by the programempty, and the system would be forced tothen wait for a relatively slow device to complete anits operationtask.
 
A more general solution is [[Computer multitasking| multitasking]]. MoreA thancomputer oneexecutes runningmultiple programprograms, orconcurrently by loading a program into a [[Process (computing)|process]], isthat presentcan inbe paused when the computerprocessor attime anycan givenbetter time.be Ifused for a process that is unablenot towaiting. continue,The itsprocess's [[context (computing)|context]] canis becached storedin memory and theanother computerprocess's cancontext startis orused resumeto theresume execution of anotherthat process. AtThe firstsoftware quiteresponsible unsophisticatedfor andcontext relyingswapping on special programming techniques, multitasking soon became automated, and was usually performed by a special processis called the [[Scheduling (computing)|scheduler]], havingworks thewith ability to interrupt and resume the execution of other processes. Typically aperipheral [[device driver|driver]]s for a peripheral deviceto suspendssuspend execution of the currentactive process if the device is unable to complete an operation immediately, and the scheduler places the process on its [[job queue |queue]] of sleepinginactive jobs. When the peripheral completedcompletes the operation, the process isavailable re-awakenedto be resumed by the scheduler. Similar suspension and resumption applies to any operation that may alsoinvolve applywaiting; toincluding asynchronous [[inter-process communication]], where processes have to communicate with one another in an asynchronous manner but may sometimes have to wait for a reply.
 
However, this low-level scheduling has its drawbacks. A process that seldom needswaits to(i.e. interactdoes withnot peripheralsuse ora other processesperipheral) would simply hog the processor resource until it completed or was halted by manual interventioninterrupted. TheOther result,processes particularlywould forthen interactivebe systemsstarved runningof tasksprocessor thatresources frequentlyand interactmight withbecome theslow. outsideThis world,can isbe thatresolved thevia system[[Preemption is(computing)|preemptive]] sluggish and slow to react inmultitasking, a timely manner.k.a. Thistime problemslicing, isin resolved by allocating a "timeslice" towhich each process, ais periodswapping ofout uninterruptedafter executionit afterhas whichhad the schedulerprocessor automaticallyfor putsa itperiod onof thetime. sleepFurther, queue.a Processprocess couldcan be given differenta priorities,priority andthat theallows schedulerit couldto thenbe allocategiven varyingmore shares of available execution timeaccess to eachthe process onrelative theto basislower ofpriority the assigned prioritiesprocesses.
 
This system of [[Preemption (computing)|pre-emptive]] multitasking forms the basis of most modern job control systems.
 
=={{anchor}}Batch processing==