66 lines
1.9 KiB
Groff
66 lines
1.9 KiB
Groff
|
.TH CHMEM 1
|
||
|
.SH NAME
|
||
|
chmem \- change memory allocation
|
||
|
.SH SYNOPSIS
|
||
|
\fBchmem\fR [\fB+\fR]\fR [\fB\-\fR] [\fB=\fR] \fIamount file\fR
|
||
|
.br
|
||
|
.de FL
|
||
|
.TP
|
||
|
\\fB\\$1\\fR
|
||
|
\\$2
|
||
|
..
|
||
|
.de EX
|
||
|
.TP 20
|
||
|
\\fB\\$1\\fR
|
||
|
# \\$2
|
||
|
..
|
||
|
.SH EXAMPLES
|
||
|
.EX "chmem =50000 a.out" "Give \fIa.out\fP 50K of stack space"
|
||
|
.EX "chmem \-4000 a.out" "Reduce the stack space by 4000 bytes"
|
||
|
.EX "chmem +1000 file1" "Increase each stack by 1000 bytes"
|
||
|
.SH DESCRIPTION
|
||
|
.PP
|
||
|
When a program is loaded into memory, it is allocated enough memory
|
||
|
for the text and data+bss segments, plus
|
||
|
an area for the stack.
|
||
|
Data segment growth using
|
||
|
.I malloc ,
|
||
|
.I brk ,
|
||
|
or
|
||
|
.I sbrk
|
||
|
eats up stack space from the low end.
|
||
|
The amount of stack space to allocate is derived
|
||
|
from a field in the executable program's file header.
|
||
|
If the combined stack and data segment growth exceeds the stack space
|
||
|
allocated, the program will be terminated.
|
||
|
.PP
|
||
|
It is therefore important to set the amount of stack space carefully.
|
||
|
If too little is provided, the program may crash.
|
||
|
If too much is provided, memory will be wasted, and fewer programs will be able
|
||
|
to fit in memory and run simultaneously.
|
||
|
\s-2MINIX\s+2
|
||
|
does not swap, so that when memory is full, subsequent attempts to fork will
|
||
|
fail.
|
||
|
The compiler sets the stack space
|
||
|
to the largest possible value (for the Intel CPUs, 64K \- text \- data).
|
||
|
For many programs, this value is far too large.
|
||
|
Nonrecursive programs that do not call
|
||
|
.I brk ,
|
||
|
.I sbrk ,
|
||
|
or
|
||
|
.I malloc ,
|
||
|
and do not have any local arrays usually do not need more than 8K of stack
|
||
|
space.
|
||
|
.PP
|
||
|
The
|
||
|
.I chmem
|
||
|
command changes the value of the header field that determines the stack allocation, and
|
||
|
thus indirectly the total memory required to run the program.
|
||
|
The = option sets the stack size
|
||
|
to a specific value; the + and \- options increment and decrement the
|
||
|
current value by the indicated amount.
|
||
|
The old and new stack sizes are printed.
|
||
|
.SH "SEE ALSO"
|
||
|
.BR install (1),
|
||
|
.BR brk (2).
|