【发布时间】:2011-10-15 13:12:54
【问题描述】:
虽然我知道 Unix 系统调用 brk 和函数 sbrk 做什么,但我不知道它们代表什么。谁能赐教?
【问题讨论】:
-
只要做一个'man brk'就可以从描述中清楚地看出意思。
虽然我知道 Unix 系统调用 brk 和函数 sbrk 做什么,但我不知道它们代表什么。谁能赐教?
【问题讨论】:
它来自“中断值”。
我引用: “通过重置进程的中断值并分配适当的空间来进行更改。中断值是超出数据段末尾的第一个位置的地址。”
【讨论】:
sbrk 中的“s”代表“空格”,因为它的参数添加(或删除)<increment>空格 i> 到堆中。
只需阅读man page:
brk() 和 sbrk() 改变了程序中断的位置,它定义了进程的数据段的结束(即程序中断是未初始化结束后的第一个位置)数据段)。增加program break有给进程分配内存的效果;减少中断会释放内存。
brk() 将数据段的末尾设置为 addr 指定的值,当该值合理时,系统有足够的内存,并且进程不超过其最大数据大小(参见 setrlimit(2))。
sbrk() 将程序的数据空间 增加字节数。以 0 为增量调用 sbrk() 可用于查找程序中断的当前位置。
【讨论】: