18

What was the first operating system that supported preemptive multitasking?

By preemptive multitasking I mean that user processes were able to run in a time-sliced manner without special programming, not as loaded interrupt services, etc.

I've heard an opinion expressed that it was CTSS, but couldn't find any specific documentation to substantiate this.

Closely related, I would also be interested in the first operating system that implemented cooperative multitasking, where one process would execute only after another process yielded control.

4
  • Your description also fits the more primitive cooperative model of multitasking. Are you asking which OS had the first scheduler? Nov 5 '19 at 18:44
  • @snips-n-snails, I would be interested in that as well. Updated question. Nov 5 '19 at 19:07
  • 2
    Related: The history of context switch. Nov 5 '19 at 19:27
  • 2
    @snips-n-snails "pre-emptive" in the description means tasks can be interrupted without their cooperation.
    – JeremyP
    Nov 6 '19 at 8:07
13

In support of your CTSS suggestion, see this document, in particular page 11, which describes clock-trap handling.

A clock interrupt can cause a program swap, thus multiprogramming with preemption.

This does not itself prove that CTSS was first, but it is strong evidence.

For cooperative multiprogramming, the British were likely near the forefront. The 'master program' for the LEO 3 (1960) would suspend a program that had issued I/O, and run the next available. I do not know whether the first program would be resumed when the I/O completed. Later British systems, e.g. the KDF9 under the timesharing Director, would resume the highest priority program on end of I/O transfer.

The Electrologica X-1 was probably the first to demonstrate cooperative multiprogramming (switching on I/O requests) but since it was not part of an OS, I am not counting it for the purposes of this answer.

The Ferranti Orion's monitor program was, according to an article by George Felton, capable of pre-emptive multitasking by 1963, making it not the first, but one of the first.

6
  • Added a note about cooperative multiprogramming, since the question got widened in scope. Nov 5 '19 at 19:25
  • You could be right - I'm not sure, they were virtually contemporaries. I think I have a dead-tree book on Leo somewhere. Nov 5 '19 at 21:16
  • The writer is not entirely sure where the idea came from: either Stanley Gill brought back the idea to LEO from the US (!), or else the "germ of the idea" came from Manchester, presumably Atlas. But that doesn't say who was first to implement. The first Atlas was running in '62, as was the first in-service installation of LEO III. Wikipedia says this: The first computer using a multiprogramming system was the British Leo III. Nov 5 '19 at 21:33
  • The Talk page of that same Wikipedia article gives priority to the Dutch: the Electrologica EL-X1. Nov 5 '19 at 21:40
  • This 1959 article, based on a 1958 talk, describes multiprogramming with 2 programs based on interrupt-driven I/O. I think I'll have to update that part of my answer after I've read the whole X-1 paper. Nov 5 '19 at 21:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.