60 lines
2.1 KiB
Groff
60 lines
2.1 KiB
Groff
|
|
|
|
CHMEM(1) Minix Programmer's Manual CHMEM(1)
|
|
|
|
|
|
NAME
|
|
chmem - change memory allocation
|
|
|
|
SYNOPSIS
|
|
chmem [+] [-] [=] amount file
|
|
|
|
EXAMPLES
|
|
|
|
chmem =50000 a.out # Give a.out 50K of stack space
|
|
|
|
chmem -4000 a.out # Reduce the stack space by 4000 bytes
|
|
|
|
chmem +1000 file1 # Increase each stack by 1000 bytes
|
|
|
|
DESCRIPTION
|
|
|
|
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 malloc , brk , or 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.
|
|
|
|
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. MINIX 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 brk , sbrk , or malloc , and do not have any
|
|
local arrays usually do not need more than 8K of stack space.
|
|
|
|
The 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.
|
|
|
|
SEE ALSO
|
|
install(1), brk(2).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1
|
|
|