【问题标题】:Questions about memory management of a process关于进程内存管理的问题
【发布时间】:2016-03-26 18:01:05
【问题描述】:

我几乎没有操作系统的问题。我谷歌了很多,但无法找到任何答案。谁能帮帮我。

第一季度。内核为用户程序提供了多少内存,有什么限制吗?

第二季度。用户程序最多可以拥有的地址范围是多少,是什么决定的?

第三季度。如果将多余的内存分配给用户程序,比如 malloc 在无限循环中,会发生什么?

【问题讨论】:

    标签: memory-management process operating-system kernel userspace


    【解决方案1】:

    第一季度。内核为用户程序提供了多少内存,有没有限制?

    各不相同。在现代系统中,这受到进程配额、系统参数和页面文件大小(如果到达那里,最终还有硬件的虚拟地址空间大小)的限制。

    第二季度。用户程序最多可以拥有的地址范围是多少,是什么决定的?

    因人而异。这是由硬件和操作系统的页表配置决定的。某些 CPU 类型在总虚拟地址空间内分配固定范围的用户地址。其他的则具有单一范围的逻辑地址,并允许操作系统将其划分为用户地址和系统地址。后者更灵活。前者允许对页表进行分页。

    第三季度。如果将多余的内存分配给用户程序,比如 malloc 在无限循环中,会发生什么?

    分配请求将失败。在 malloc 的情况下,您会得到一个返回的空指针。在系统服务级别,你会得到一个失败代码。

    【讨论】:

    • 对于 Linux ans1) 它是可配置的 ans2) 它也是可配置的 (通常是 0x00000000 - 0xbfffffff) ans 3) 如果一个进程分配了太多内存,那么其他进程将被交换到磁盘,最终整个系统和特定系统将耗尽内存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多