地址转换的例子

时间:2013-11-02 11:32:32

标签: c operating-system ram internals

我对地址空间有疑问。 我认为如果4 GB的RAM分为内核空间(1GB)和用户空间(3GB)的两半。

1] RAM还将堆栈,堆,代码和数据部分维护为硬盘。

2]运行过程不会给出堆栈,数据,代码和堆必须在RAM中增长的边界。

3]我的想法是堆栈,堆,代码和数据段都在进程创建时给进程的连续地址空间。

4] CPU如何获取正确的进程地址,因为进程在物理内存中不是连续的。

enter image description here

1 个答案:

答案 0 :(得分:2)

不,只有虚拟内存地址空间被分成两部分。物理内存,即机器中的RAM,包含映射到虚拟内存地址的完全随机的块集合。从操作系统页面和用户程序页面。与图像显示非常相似,尽管在底部显示操作系统页面有点误导。

映射不断变化,页面错误是将虚拟内存页映射到RAM的基本机制。当程序访问尚未存在于RAM中的虚拟内存页面时触发。根据需要,可以取消映射RAM页面以腾出空间,将其内容丢弃或写入页面文件。代码通常是可丢弃的,它可以从可执行文件中读回,数据通常不会。

RAM中的某些页面很特殊,它们包含驱动程序使用的代码和数据。它们是页面锁定。当驱动程序处理设备中断并且中断处理程序使用的代码/数据必须存在于RAM中以允许处理中断时,需要在此关键时刻无法承受页面错误。图像被绘制的可能原因。