Path: utzoo!attcan!uunet!lll-winken!ames!hc!lanl!beta!hwe From: hwe@beta.lanl.gov (Skip Egdorf) Newsgroups: comp.arch Subject: Re: History Question: Origin of fork() Summary: actually sds-940 Message-ID: <23246@beta.lanl.gov> Date: 20 Jan 89 03:32:30 GMT References: <43676@linus.UUCP> <5608@phoenix.Princeton.EDU> Organization: Los Alamos National Laboratory Lines: 65 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