How can I get bigger processes on 4.1BSD ?

Mike.Accetta%cmu-cs-ius at sri-unix.UUCP Mike.Accetta%cmu-cs-ius at sri-unix.UUCP
Fri Jan 13 02:28:09 AEST 1984


Bill,

What panic message are you getting?  You probably also have to change
the definition of NDMAP in h/dmap.h.  The setup document mentions this
file but neglects to describe what constants to change.  We were able
to use 12Mb data segment sizes after doubling this constant from 16 to
32.

To explain, the paging system allocates chunks of paging space for the
data segment geometrically beginning with a size of DMMIN up to a
maximum of DMMAX.  It stores the pointers to the beginning of each of
these chunks in the dm_map array.  Paging area memory for a large
process would thus get allocated something like this:

	Chunk	Size (sectors)
	  0		32	\
	  1		64	|
	  2		128	|	< .5 Mb
	  3		256	|
	  4		512	/
	  5		1024	\
	  6		1024	|
	  7		1024	|
	  8		1024	|
	  9		1024	|
	 10		1024	|	5.5 Mb
	 11		1024	|
	 12		1024	|
	 13		1024	|
	 14		1024	|
	 15		1024	/

Which as you can see causes the dm_map array to run out of room
slightly before the process size can reach 6Mb.  By adding another 16
elements to the the end of the array, you gain 16*.5Mb = 8Mb more
process address space for a maximum of slightly under 14Mb (actually
the minimum number which you need to increase NDMAP by is more like 12
or 13 for 12Mb data segments depending on how you define MAXDSIZ).

When you change this constant it is also advisable to recompile the
various user programs (w, ps and pstat are the ones that come to mind
immediately) which include this file for examining the user area of a
process and for grabbing the command line arguments from the paging
area when a process is not resident.

			- Mike Accetta



More information about the Comp.unix mailing list