NAME
brk, sbrk - change data segment size
SYNOPSIS
#include <unistd.h>
int brk(void *end_data_segment);
void *sbrk(intptr_t increment);
DESCRIPTION
brk() sets the end of the data segment to the value specified by end_data_segment,
when that value is reasonable, the system does have enough memory and the process
does not exceed its max data size (see setrlimit(2)).
sbrk() increments the program's data space by increment bytes. sbrk() isn't a sys-
tem call, it is just a C library wrapper. Calling sbrk() with an increment of 0
can be used to find the current location of the program break.
RETURN VALUE
On success, brk() returns zero, and sbrk() returns a pointer to the start of the
new area. On error, -1 is returned, and errno is set to ENOMEM.
CONFORMING TO
4.3BSD
brk() and sbrk() are not defined in the C Standard and are deliberately excluded
from the POSIX.1 standard (see paragraphs B.1.1.1.3 and B.8.3.3).
NOTES
Various systems use various types for the parameter of sbrk(). Common are int,
ssize_t, ptrdiff_t, intptr_t. XPGv6 obsoletes this function.
SEE ALSO
execve(2), getrlimit(2), malloc(3)
The brk() and sbrk() functions are used to change the amount of memory
allocated in a process's data segment. They do this by moving the loca-
tion of the ``break''. The break is the first address after the end of
the process's uninitialized data segment (also known as the ``BSS'').
brk and sbrk設置的是BSS里的邊界,具體什么是BSS呢
bss = "Block Started by Symbol" (由符號啟始的區塊)
Dennis Ritchie 曾說過:
這個縮寫也許有其它說法,但事實上我們采用這個縮寫的本意是
"Block Started by Symbol"。它是 FAP 上的偽指令,FAP
(Fortran Assembly [-er?] Program) 是指 IBM 704-709-7090-7094
這種機型的組譯器。這個指令可定義自己的標號,并且預留一定數目
的字組空間。還有另一個偽指令 BES,是 "Block Ended by
Symbol",跟 BSS 指令幾乎一樣,不同點在于標號是定義在預留字組
空間尾端的地址 + 1 的地方。在這些機器上,Fortran 的數組是以反
方向儲存,而且數組的索引是從 1 算起。
這種用法是合理的,因為這跟 UNIX 上標準的程序加載器一樣,程序
碼當中并非真的放入這一整塊預留空間,而是先用一個數目表示,在
加載時才真的把所需的預留空間定出來。
from:
Linux man page and
http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=linuxK&Number=300677&page=16&view=collapsed&sb=5&o=all&fpart=
posted on 2010-02-18 19:23
chatler 閱讀(662)
評論(0) 編輯 收藏 引用 所屬分類:
Linux_Coding