NOSLEEP in Sys V.3.1 fork.c

Johannes Heuft jh at pcsbst.UUCP
Wed Aug 31 17:04:45 AEST 1988


In article <5905 at nsc.nsc.com> rfg at 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



More information about the Comp.unix.wizards mailing list