【问题标题】:What do brk and sbrk stand for?brk 和 sbrk 代表什么?
【发布时间】:2011-10-15 13:12:54
【问题描述】:

虽然我知道 Unix 系统调用 brk 和函数 sbrk 做什么,但我不知道它们代表什么。谁能赐教?

【问题讨论】:

  • 只要做一个'man brk'就可以从描述中清楚地看出意思。

标签: c unix sbrk brk


【解决方案1】:

它来自“中断值”。

我引用: “通过重置进程的中断值并分配适当的空间来进行更改。中断值是超出数据段末尾的第一个位置的地址。”

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

【讨论】:

  • 加油! “brk”确实是break,现在你仍然想念“s”。你在这里做一个悬念。
  • 如果我不得不猜测一下,sbrk 中的“s”代表“空格”,因为它的参数添加(或删除)<increment>空格 i> 到堆中。
  • @Iguananaut:S 也可以是 Successor 函数,即增量的数学版本。
【解决方案2】:

只需阅读man page

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

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

sbrk() 将程序的数据空间 增加字节数。以 0 为增量调用 sbrk() 可用于查找程序中断的当前位置。

【讨论】: