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.

Mark Harrison
  • 875
  • 1
  • 7
  • 10

1 Answers1

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.

dave
  • 35,301
  • 3
  • 80
  • 160
  • Added a note about cooperative multiprogramming, since the question got widened in scope. – dave Nov 05 '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. – dave Nov 05 '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. – dave Nov 05 '19 at 21:33
  • The Talk page of that same Wikipedia article gives priority to the Dutch: the Electrologica EL-X1. – dave Nov 05 '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. – dave Nov 05 '19 at 21:48
  • On the third hand, the EL-X1 paper is written as if this were a special-purpose demo rather than a fully-realized implementation. – dave Nov 05 '19 at 22:11