Path: utzoo!attcan!uunet!mcvax!unido!pcsbst!jh From: jh@pcsbst.UUCP (Johannes Heuft) Newsgroups: comp.unix.wizards Subject: Re: NOSLEEP in Sys V.3.1 fork.c Message-ID: <335@pcsbst.UUCP> Date: 31 Aug 88 07:04:45 GMT References: <5905@nsc.nsc.com> Reply-To: unido!jh@pcsbst.UUCP (Johannes Heuft) Organization: PCS GmbH, Pfaelzer-Wald-Str. 36, 8000 Muenchen; West-Germany Lines: 29 In article <5905@nsc.nsc.com> rfg@nsc.UUCP (Ron Guilmette) writes: ... >I investigated and found out that the System V.3.1 "fork.c" makes a call to >dupreg() (duplicate region) to create the child process, but it passes in the >NOSLEEP parameter so that it will NEVER WAIT for other processes to swap out. ... >I though that V.3.1 code was pretty stupid so I removed the NOSLEEP and now I >can get many more processes with the same memory configuration. ... >Ron Guilmette >National SemiConductor I assume that you are elaborating on the AT&T SVR3 distribution for the 3B2 machines. If you analyse the paging in this distribution you find that dupreg() finally need contigious physical (!) memory in order to duplicate the region in question. This seems to be due to the the MMU architecture of the 3b2 machine. In this case you need NOSLEEP in order to avoid deadlocks. On the other hand, if your architecture allows a "copy on write" strategy (see the ATT SVR2 for VAX) you only need physical memory for the page table (some deadlock danger here in the SRV2 for VAX!) and SLEEP could be used. In this case, however, the AT&T paging should be rewritten completely. - Here I skip some of my opinions concering AT&T paging. Hope this helped Johannes Heuft unido!pcsbst!jh