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.

  • Your description also fits the more primitive cooperative model of multitasking. Are you asking which OS had the first scheduler? – snips-n-snails Nov 5 '19 at 18:44
  • @snips-n-snails, I would be interested in that as well. Updated question. – Mark Harrison Nov 5 '19 at 19:07
  • 2
    Related: The history of context switch. – Stephen Kitt 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

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.

  • Added a note about cooperative multiprogramming, since the question got widened in scope. – another-dave 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. – another-dave 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. – another-dave Nov 5 '19 at 21:33
  • The Talk page of that same Wikipedia article gives priority to the Dutch: the Electrologica EL-X1. – another-dave 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. – another-dave 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.