Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

History Question: Origin of fork()

4 views
Skip to first unread message

David E. Emery

unread,
Jan 18, 1989, 10:41:03 AM1/18/89
to
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
em...@mitre.org

Paul Gluckauf Haahr

unread,
Jan 19, 1989, 3:36:01 PM1/19/89
to
In article <43...@linus.UUCP> d...@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)

Skip Egdorf

unread,
Jan 19, 1989, 10:32:30 PM1/19/89
to

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
h...@lanl.gov

Vernon Schryver

unread,
Jan 20, 1989, 3:16:52 PM1/20/89
to
In article <23...@beta.lanl.gov>, h...@beta.lanl.gov (Skip Egdorf) writes:
> In article <56...@phoenix.Princeton.EDU>, ha...@phoenix.Princeton.EDU (Paul Gluckauf Haahr) writes:
> > In article <43...@linus.UUCP> d...@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
v...@sgi.com

Steve DeJarnett

unread,
Jan 20, 1989, 4:38:42 PM1/20/89
to
In article <43...@linus.UUCP> d...@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 -> st...@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 |
-------------------------------------------------------------------------------

Eric P. Scott

unread,
Jan 22, 1989, 1:53:27 PM1/22/89
to
In article <25...@sgi.SGI.COM> v...@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=-

Christopher A. Kent

unread,
Feb 21, 1989, 9:59:55 PM2/21/89
to
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
ke...@decwrl.dec.com decwrl!kent (415) 853-6639

RAMontante

unread,
Feb 26, 1989, 7:33:59 PM2/26/89
to
ke...@decwrl.dec.com (Christopher A. Kent) <1...@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.

0 new messages