当前位置: 技术问答>linux和unix
操作系统对于"堆"内存的管理,一个疑惑
来源: 互联网 发布时间:2016-10-31
本文导语: 我对于堆内存的使用,是这样理解的。各位斧正: 1. 每个程序有一个堆空间,OS为每个程序维护一个堆空间的可用空间链表(各种算法) 2. OS本身要维护一个堆空间的可用空间链表,用于分配给各个程序 那么,岂不是...
我对于堆内存的使用,是这样理解的。各位斧正:
1. 每个程序有一个堆空间,OS为每个程序维护一个堆空间的可用空间链表(各种算法)
2. OS本身要维护一个堆空间的可用空间链表,用于分配给各个程序
那么,岂不是说
1.实际内存地址的计算需要经过3次映射,物理地址->OS地址空间->程序地址空间
2.而且,堆内存管理的算法,也许要执行两遍,OS为自己执行一次,然后再为各个程序执行一次。
我的这个疑惑本身有什么问题呢? 我的理解哪里存在错误?
谢谢!
1. 每个程序有一个堆空间,OS为每个程序维护一个堆空间的可用空间链表(各种算法)
2. OS本身要维护一个堆空间的可用空间链表,用于分配给各个程序
那么,岂不是说
1.实际内存地址的计算需要经过3次映射,物理地址->OS地址空间->程序地址空间
2.而且,堆内存管理的算法,也许要执行两遍,OS为自己执行一次,然后再为各个程序执行一次。
我的这个疑惑本身有什么问题呢? 我的理解哪里存在错误?
谢谢!
|
1、每个进程有堆空间 由结构体vm_area_struct来维护
2、不存在这种说法。进程的堆空间都是进程的私有空间,不存在全局的堆空间
1、逻辑地址-》线性地址-》物理地址
2、不存在这个问题。
2、不存在这种说法。进程的堆空间都是进程的私有空间,不存在全局的堆空间
1、逻辑地址-》线性地址-》物理地址
2、不存在这个问题。