页表

时间:2015-11-06 00:57:41

标签: memory-management kernel cpu dynamic-memory-allocation tlb

假设我们有具有MMU的CPU,其工作方式如下:

  • 用于内存管理仅用于分页
  • 每个进程都有自己的页表
  • 每个进程的虚拟地址分为用户空间和内核 空间(就像许多带分页的CPU一样)
  • 内核空间(具体是他的虚拟地址)在所有人之间共享 进程(例如更高的地址)

现在想象一下,我们正在运行多个进程(当然是在非特权模式下)。当我们想为任何进程分配额外的内存时,它只是在我看来应用以下场景。我们执行系统调用,OS通过更新进程页表或报告一些错误代码来提供(在特权模式下)。

我的问题:但是现在,当我们想为内核分配一些内存时,我们必须在其内核部分地址中更新所有进程的所有表吗?据我所知,没有任何内核页表,理论上可以解决这个问题(但带来其他问题),在类似工作的CPU中。那么如何解决这种情况,是否有可能发生?

抱歉我的英文。

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决方案。我想,这个链接说明了一切:

ARM Solution

非常重要的是要理解表6.13。翻译表大小。简而言之,每个进程的虚拟空间当然分为内核空间和用户空间。但是,两个空格都有自己的表格。当进程切换时,内核表指针是常量,但用户表指针被改变。我希望,你明白这一点。

抱歉我的英文。

相关问题