Path: utzoo!attcan!uunet!husc6!bloom-beacon!apple!bionet!agate!saturn!perry@apollo.COM From: perry@apollo.COM (Jim Perry) Newsgroups: comp.os.research Subject: Re: Earliest use of Threads (was Re: THREADS, Light weight processes) Message-ID: <5368@saturn.ucsc.edu> Date: 4 Nov 88 16:13:00 GMT Sender: usenet@saturn.ucsc.edu Organization: Apollo Computer, Chelmsford, MA Lines: 39 Approved: comp-os-research@jupiter.ucsc.edu In article <5338@saturn.ucsc.edu> fouts@lemming. (Marty Fouts) writes: > >I offer, only half humorously, TSO running under OS/360, as the first >example of "multiple THREADS of control executing within a single >address space" Again, "threads" or multitasking is a very old technology, a natural outgrowth of the fact that I/O is too slow to be done synchronously. In more recent operating systems (well, in Unix, which seems to be what everyone means by OS) I/O scheduling is done among processes, i.e. when a process initiates an I/O operation it is suspended until that operation completes. Other systems allow various mechanisms to allow the process to continue past the I/O call, with some means of announcing when pending operations complete. A program using such a facility is multi-threaded in the simplest sense, and a more elegant model is easily constructed from such a system. The DTSS system (Dartmouth TimeSharing System, though they call it something else these days) relies heavily on this model. Far from the more common approach these days, the command processor (shell equivalent) is a single program, which holds open all user terminals with a task (thread, LWP) to handle each. The original system was based on an assembly language model, and so the notion of a task was loose and up to each application; over the years subroutine packages provided cleaner interfaces in Dartmouth's dialect of XPL and then PL/I. A few years ago the OS, PL/I compiler and runtime system were modified to provide an excellent multitasking model that's cleaner and more usable than anything I've seen since (to be fair, if you get to control the OS, the language, and the runtime system, and are unconcerned about portability, you have a lot more leeway than e.g. trying to make something that does all this in portable C). I know that IBM PL/I and Ada also provide language support for multitasking, and have been somewhat surprised not to see these mentioned. Has the CS world really forgotten everything that came before C and UNIX, or is that just a feature of the UNIX bias of usenet? -- Jim Perry perry@apollo.com Apollo Computer, Chelmsford MA