Memory 进程内存管理查询

Memory 进程内存管理查询,memory,memory-management,process,kernel,Memory,Memory Management,Process,Kernel,下面是一张图片,总结了我对内核组织的进程内存布局的理解。我想了解 1) 分段和分页过程何时发生?在编译期间或程序执行之后 2) 在任何给定实例中,是否可以通过任何方式访问进程中任何给定实体(变量、对象)的物理地址 我在《理解内核》一书中发现的信息很少,或者可能是解释与我的理解相去甚远,我不确定。也许有人能帮我 @Keen Learner,1)程序执行后立即进行分段和分页过程。只有当程序中存在的部分代码试图访问受保护内存或其进程/虚拟内存块中不存在的内存时,才会出现分段错误。分页进程,因为我们不能

下面是一张图片,总结了我对内核组织的进程内存布局的理解。我想了解

1) 分段和分页过程何时发生?在编译期间或程序执行之后

2) 在任何给定实例中,是否可以通过任何方式访问进程中任何给定实体(变量、对象)的物理地址

我在《理解内核》一书中发现的信息很少,或者可能是解释与我的理解相去甚远,我不确定。也许有人能帮我


@Keen Learner,1)程序执行后立即进行分段和分页过程。只有当程序中存在的部分代码试图访问受保护内存或其进程/虚拟内存块中不存在的内存时,才会出现分段错误。分页进程,因为我们不能在主内存中同时拥有所有与进程相关的页面。在流程执行期间,只会相应地引入或交换相应的页面。2) 据我所知,没有访问变量物理地址的机制/方法,因为我们使用的所有东西都是虚拟地址,将其转换为物理地址是MMU的工作。希望我已经澄清了您的疑问:-)

高瑟姆感谢您的澄清。所以这就让我假设编译过程中编译器会生成逻辑地址?