gpt4 book ai didi

c - 地址转换示例

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:57 24 4
gpt4 key购买 nike

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

1]RAM是否也像硬盘一样维护栈、堆、代码和数据段。

2] 运行的进程不会没有边界,堆栈、数据、代码和堆必须在 RAM 中增长。

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

4] 由于进程在物理内存中不连续,CPU 如何获取进程的正确地址来执行。

enter image description here

最佳答案

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

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

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

关于c - 地址转换示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19741451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com