[comp.arch] History Question: Origin of fork

dee@linus.UUCP (David E. Emery) (01/18/89)

Who "invented" fork?  What system was the first to use fork?
(where fork did the Unix thing, i.e.  created a complete copy of the calling
 process as a new O.S. process)

Just curious, mostly...		dave emery
				emery@mitre.org

haahr@phoenix.Princeton.EDU (Paul Gluckauf Haahr) (01/20/89)

In article <43676@linus.UUCP> dee@linus.UUCP (David E. Emery) writes:
> Who "invented" fork?  What system was the first to use fork?
> (where fork did the Unix thing, i.e.  created a complete copy of the calling
> process as a new O.S. process)

in the unix retrospective from the 1978 bstj, dennis ritchie attributed
the idea to genie, the operating system for the sds-9 (from sigma data
systems, later xerox data systems)

hwe@beta.lanl.gov (Skip Egdorf) (01/20/89)

In article <5608@phoenix.Princeton.EDU>, haahr@phoenix.Princeton.EDU (Paul Gluckauf Haahr) writes:
> In article <43676@linus.UUCP> dee@linus.UUCP (David E. Emery) writes:
> > Who "invented" fork?  What system was the first to use fork?
> > (where fork did the Unix thing, i.e.  created a complete copy of the calling
> > process as a new O.S. process)
> 
> in the unix retrospective from the 1978 bstj, dennis ritchie attributed
> the idea to genie, the operating system for the sds-9 (from sigma data
> systems, later xerox data systems)

I was going to answer this at work today but decided to wait 'till I
got home to my large dusty piles of literature...

[from BSTJ v63 n8 part2, Oct 1984, The Evolution of the UNIX Time
Sharing System, D. M. Ritchie, Page 1584]

   "[... speaking of a split fork and exec...] The separation of the functions
is certainly not unique to UNIX, and in fact was present in the Berkeley
time-sharing system, (2) "

Ref (2) is
2. L. P. Deutsch and B. W. Lampson, "SDS 930 Time-sharing System Preliminary
   Reference Manual," Doc. 30.10.10, Project GENIE, Univ. Cal. at Berkeley
   (April 1965)


And, From my SDS 940 Time Sharing System Manual dated 1967,

(note 1: The 920, 930, and 940 were a similar family of systems with
         minor variations on features)
(note 2: I told you that my piles of literature were large and dusty...)
(note 3: BRS is a trap, syscall, type instruction)

BRS 9, FKST, Fork Start.
   BRS 9 is used to create a lower fork. ... BRS 9 creates a new fork
   as a lower fork of the fork creating it, which is called the controlling
   fork. The fork is lower in the  hierarchy of forks than the controlling
   fork. The controlling fork may itself be a fork of some still higher
   fork.
   When BRS 9 is executed by a user fork, the user fork is dismissed
   until the lower fork terminates...
   A user may not have more than eight forks in his fork structure.
   This includes the system fork and one fork for each system BRS
   that is active...

BRS 30, FKRD, Fork Read.
   Reads the current status of a lower fork ...

BRS 81, WREAL, Wait on REAL time
   The fork is dismissed for T [a parameter of the call] milliseconds.

BRS 106, FKWA, Fork Wait
   Fork is dismissed until some lower fork terminates.

BRS 10, PPAN, Programmed Panic
   BRS 10 terminates the fork that issues it.

Well, you get the idea. (And I know that this was not a tutorial.
It was only meant to convey the flavor.)

Now, Does anyone know where the SDS 930 System referenced above came
up with the idea of fork? Or was it a unique invention?

					Skip Egdorf
					hwe@lanl.gov

vjs@rhyolite.SGI.COM (Vernon Schryver) (01/21/89)

In article <23246@beta.lanl.gov>, hwe@beta.lanl.gov (Skip Egdorf) writes:
> In article <5608@phoenix.Princeton.EDU>, haahr@phoenix.Princeton.EDU (Paul Gluckauf Haahr) writes:
> > In article <43676@linus.UUCP> dee@linus.UUCP (David E. Emery) writes:
> > > Who "invented" fork?  What system was the first to use fork?
> > > (where fork did the Unix thing, i.e.  created a complete copy of the calling
> > > process as a new O.S. process)
> > 
> > in the unix retrospective from the 1978 bstj, dennis ritchie attributed
> > the idea to genie, the operating system for the sds-9 (from sigma data
> > systems, later xerox data systems)
>...
> Ref (2) is
> 2. L. P. Deutsch and B. W. Lampson, "SDS 930 Time-sharing System Preliminary
>    Reference Manual," Doc. 30.10.10, Project GENIE, Univ. Cal. at Berkeley
>    (April 1965)


Scientific Data Systems, SDS, built a nice line of "scientific"
machines (think of Nova's but the previous generation; if you don't
recall the Nova, then think of PC's used in labs to do data analysis
and instrument control).

I understand that people at Berkeley (the names above were among the
powerful) took an SDS-930 (24-bit words, 16-bit address, 1.75 usec
cycle time, LDA was 2 cycles, STA 3 cycles, cpu was 3 bits wide, all
silicon, mostly 4"x5" (?) boards with a couple of gates or maybe a flip
flop except the CTE (serial comm.) which was racks of surface mount
stuff--4 cards/channel) and added paging (without extending the cycle),
user/system mode, and the return-to-user-trap to make the 940.

There was serious talk of a follow-on from SDS, the 9000 series, but
instead, the Sigma series came out, to the disappoint of some.  Then
Xexox bought SDS, turned it into XDS, and ran it into the ground--or so
it seemed from a 1000 miles away.  The 940 was <<The>> timesharing
machine for a long time--all 45 (?) that were built were cherished.
They figured heavily in the histories of Tymshare and Comshare, as well
as a few odd places, including the famous San Francisco coop.  I've met
people who ran chunks of the 940 system under some kind of PDP-10 (?)
emulator.  There was the 1-board implementation in Hawaii, and the
magnificent dream of the BCC-5000 (or was it 500?).  "My" 940 was
scrapped only a few years ago by the Dept of Comm.

I don't think the 930 could run any flavor of TSS--no paging, no user mode.
The 910 and 920 were smaller and slower.  I think only 1-bit cpu's.

There was also a tape file system...

(This is certainly partly wrong, since it is based on my failing memory.)

Can anyone who thinks that fame from a job done well is lasting list
all of the Famous Names from project GENIE?  In their day, they were as
influential among people who might have read this newsgroup as any of
those who have worked on 4.xBSD.

My trivia questions:  was the 940 syspop "sti" a predecessor of the 4.x BSD 
	ioctl TIOSTI as fork(2) was?  Or just a case of parallel evolution?

    Was Deutsch's QED an ancestor of ex?


Vernon Schryver
Silicon Graphics
vjs@sgi.com

steve@polyslo.CalPoly.EDU (Steve DeJarnett) (01/21/89)

In article <43676@linus.UUCP> dee@linus.UUCP (David E. Emery) writes:
>Who "invented" fork?  What system was the first to use fork?

	According to "The Design and Implementation of 4.3BSD Unix":
"The fork operation to create new processes comes from Berkeley's GENIE
 (SDS-940, later XDS-940) operating system.  Allowing a user to create 
 processes inexpensively led to using one process per command, rather than
 running commands as procedure calls, as is done in Multics."

-------------------------------------------------------------------------------
| Steve DeJarnett            | Smart Mailers -> steve@polyslo.CalPoly.EDU     |
| Computer Systems Lab       | Dumb Mailers  -> ..!ucbvax!voder!polyslo!steve |
| Cal Poly State Univ.       |------------------------------------------------|
| San Luis Obispo, CA  93407 | BITNET = Because Idiots Type NETwork           |
-------------------------------------------------------------------------------

eps@noe.UUCP (Eric P. Scott) (01/23/89)

In article <25259@sgi.SGI.COM> vjs@rhyolite.SGI.COM (Vernon Schryver) writes:
>My trivia questions:  was the 940 syspop "sti" a predecessor of the 4.x BSD 
>	ioctl TIOSTI as fork(2) was?  Or just a case of parallel evolution?

Given the time frame, my "best guess" is that BSD people got the
idea from TOPS-20, much as job control (and a bunch of other
things) betray a heavy ITS influence.  Sockets look a lot like
some prior British networking stuff, etc.

					-=EPS=-

kent@decwrl.dec.com (Christopher A. Kent) (02/22/89)

I believe that the concepts of fork and join first appeared in

J. B. Dennis and E. C. Van Horn, "Programming Semantics for
Multiprogrammed Computations", CACM", V9n3, March 1966.
-- 
Chris Kent	Western Research Laboratory	Digital Equipment Corporation
kent@decwrl.dec.com	decwrl!kent			(415) 853-6639

bobmon@iuvax.cs.indiana.edu (RAMontante) (02/27/89)

kent@decwrl.dec.com (Christopher A. Kent) <106@gnomee.pa.dec.com> :
-I believe that the concepts of fork and join first appeared in
-
-J. B. Dennis and E. C. Van Horn, "Programming Semantics for
-Multiprogrammed Computations", CACM", V9n3, March 1966.


Peterson and Silberschatz trace fork/join to this paper, but also to
M. Conway, "A Multiprocessor System Design", Proc. AFIPS Fall Joint
Computer Conference, 1963.