我对操作系统的问题很少。我谷歌很多,但无法找到任何答案。任何人都可以帮助我。
Q1。内核为用户程序提供了多少内存,是否有任何限制?
Q2。用户程序的最大地址范围是多少,是什么决定了它?
Q3。如果将多余的内存分配给用户程序,比如无限循环中的malloc,会发生什么?
答案 0 :(得分:1)
Q1。内核为用户程序提供了多少内存,是否有任何限制?
Varies。在现代系统中,这受到过程配额,系统参数和页面文件大小的限制(如果到达那里,最终会受到硬件的虚拟地址空间大小的限制)。
Q2。用户程序的最大地址范围是多少,是什么决定了它?
而异。这由硬件和操作系统的页表配置决定。某些CPU类型在总虚拟地址空间内分配固定范围的用户地址。其他人具有单一范围的逻辑地址,并允许操作系统将其划分为用户和系统地址。后者更灵活。前者允许页面表的分页。
Q3。如果将多余的内存分配给用户程序,比如无限循环中的malloc,会发生什么?
分配请求将失败。在malloc的情况下,您将获得返回的空指针。在系统服务级别,您将收到失败代码。