brk和sbrk代表什么意思?

9

虽然我知道Unix系统调用brk和函数sbrk的作用,但我不知道它们代表什么。有人能告诉我吗?


5
只需执行“man brk”命令,根据描述即可明确含义。 - Pirooz
2个回答

14

这来自于“断点值(break value)”。

引用: “更改是通过重新设置进程的断点值并分配适当数量的空间来完成的。断点值是数据段结束位置之后第一位置的地址。”

(资料来源:http://www.s-gms.ms.edus.si/cgi-bin/man-cgi?brk+2)


5
加油!"brk"的确是断开的意思,现在你还缺少一个"s"。你正在制造悬念。 - v.oddou
如果我必须猜测的话,我会认为sbrk中的“s”代表“空间”,因为它的参数向堆添加(或移除)<increment> 空间 - Iguananaut
@Iguananaut:S 也可以是后继函数,它是增量的数学版本。 - Joshua
或者 's' 可以代表 "shift",意为将 break 向负方向移动以减少或向正方向移动以增加。 - Richard Chambers

3

仅仅阅读man页面:

brk()和sbrk()改变了程序断点的位置,这定义了进程数据段的结束位置(即,程序断点是未初始化数据段结束后的第一个位置)。增加程序断点会分配内存给进程;减少断点则会释放内存。

当值合理、系统有足够的内存并且进程没有超过其最大数据大小(参见setrlimit(2))时,brk()将数据段的结束设置为addr指定的值。

sbrk()通过increment字节增加程序的数据空间。调用具有0增量的sbrk()可用于查找程序断点的当前位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接