Batch operating system
Batch operating systems were the first operating systems, and were common up to the 1980s or so; some are still running today. The essence of a batch OS is its lack of interaction with users; a job - a program, along with all its input data - is handed in to the system; when there is an opportunity, it is run; and any resultant output is provided back to the person who submitted the job.
They were a development of the earliest stages of computer use, when magnetic tape drives were the principal secondary storage devices. Initially, users signed up for blocks of time on the computer; set-up, etc, meant that a lot of time on these rare and expensive machines was wasted.
An operational efficiency technique was adopted at an early stage: the programs and data of groups of jobs were collected onto magnetic tape; once a tape was full, it was mounted on a drive, and all the jobs on it were run, with the output being spooled to on another drive, to be printed on an off-line line printer later.
The time from when the job is submitted, to when the results are ready for the user, it called the 'turn-around'. That operational approach unfortunately increased average turn-around times: it increased the efficiency of the computer (since tapes could be read a lot faster than punched card decks), but also increased the turn-around time considerably.
The earliest batch OS's were not multi-tasking; each job ran to completion, before the next job started. However, this did not make efficient use of a system; while a job was waiting for I/O to complete, the rest of the system was idle.
Once interrupts were available, multi-tasking was added, because having a mix of jobs running at any time is the best way to maximize the use of the system. However, this brought in other issues: e.g. in the earliest stages of this change, all jobs which were running at any time had to be resident in main memory together, which might not be possible. This also required the addition of security, so that a job which encountered a programing mistake could not damage other job(s).