【发布时间】:2016-03-26 18:01:05
【问题描述】:
我几乎没有操作系统的问题。我谷歌了很多,但无法找到任何答案。谁能帮帮我。
第一季度。内核为用户程序提供了多少内存,有什么限制吗?
第二季度。用户程序最多可以拥有的地址范围是多少,是什么决定的?
第三季度。如果将多余的内存分配给用户程序,比如 malloc 在无限循环中,会发生什么?
【问题讨论】:
标签: memory-management process operating-system kernel userspace
我几乎没有操作系统的问题。我谷歌了很多,但无法找到任何答案。谁能帮帮我。
第一季度。内核为用户程序提供了多少内存,有什么限制吗?
第二季度。用户程序最多可以拥有的地址范围是多少,是什么决定的?
第三季度。如果将多余的内存分配给用户程序,比如 malloc 在无限循环中,会发生什么?
【问题讨论】:
标签: memory-management process operating-system kernel userspace
第一季度。内核为用户程序提供了多少内存,有没有限制?
各不相同。在现代系统中,这受到进程配额、系统参数和页面文件大小(如果到达那里,最终还有硬件的虚拟地址空间大小)的限制。
第二季度。用户程序最多可以拥有的地址范围是多少,是什么决定的?
因人而异。这是由硬件和操作系统的页表配置决定的。某些 CPU 类型在总虚拟地址空间内分配固定范围的用户地址。其他的则具有单一范围的逻辑地址,并允许操作系统将其划分为用户地址和系统地址。后者更灵活。前者允许对页表进行分页。
第三季度。如果将多余的内存分配给用户程序,比如 malloc 在无限循环中,会发生什么?
分配请求将失败。在 malloc 的情况下,您会得到一个返回的空指针。在系统服务级别,你会得到一个失败代码。
【讨论】: