关闭。这个问题需要更多focused .它目前不接受答案。
想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .
6年前关闭。
Improve this question
进程的内存映射似乎被分割成段(堆栈、堆、bss、数据和文本),
过程的便利性和物理 RAM 只是一个线性阵列
地址或者物理 RAM 是否也碎片化成这些
段?
操作系统是否为进程提供了这些段的抽象?
最佳答案
在支持虚拟内存的现代操作系统中,进程的地址空间被划分为这些段。在一般情况下,进程的地址空间以完全随机的方式转换到物理 RAM 上(具有一些固定的粒度,通常为 4K)。彼此相邻的地址空间页面不必投影到 RAM 的相邻物理页面中。 RAM 的物理页不必与进程的地址空间页保持相同的相对顺序。这一切都意味着在 RAM 中没有这样的段分离,也不可能有。
为了优化内存访问,操作系统可能(通常会)尝试将进程地址空间的顺序页面映射到 RAM 中的顺序页面,但这只是一种优化。在一般情况下,映射是不可预测的。最重要的是,RAM 由系统中的所有进程共享,属于不同进程的 RAM 页在 RAM 中任意交错,这消除了在 RAM 中存在此类“段”的任何可能性。 RAM 中没有特定于进程的排序或分段。 RAM只是虚拟内存机制的缓存。
同样,每个进程都使用自己的虚拟地址空间。这是这些分割市场可以存在的地方。该进程无法直接访问 RAM。该进程甚至不需要知道 RAM 存在。
关于内存段和物理 RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278319/