使用线程级内存保护/分页时会出现哪些运行时问题?

时间:2010-05-18 13:23:31

标签: multithreading paging stm

好的,我们今天支持每进程内存分页/保护。多年来,我一直在想通过提供页面级保护来获得什么样的好处,这可以说是我们OS支持的最小执行单元:线程。 This question on Software Transactional Memory让我回到了最前沿。

拥有页面级线程所有权的好处

  • 操作系统支持在访问时锁定页面
  • 理论上,如果操作系统具有在线程生命周期内拥有所有权的机制,则可以防止内存损坏。

下行:

  • 标准的死锁检测 锁定技术已经存在 很难
  • 调试器/ OS 支持确定页面级别 所有权

任何其他缺点,你可以从支持这样的模型看到的好处?

2 个答案:

答案 0 :(得分:1)

这种编程模型已经可以通过进程和共享内存来实现。它没有被大量使用,理由很充分:进程间消息传递更安全,更容易推理。

答案 1 :(得分:1)

每线程每页内存保护可用于有效实施parallel garbage collection

要解决的问题是,为了收集内存区域,垃圾收集器需要对该区域的独占访问,否则其他线程(所谓的“mutator”线程)将能够读取并编写不一致状态的对象(例如,从oldspace复制到newspace的中途。)

使用每线程内存保护,垃圾收集器可以控制对内存区域的访问,以便只有收集器线程可以访问它;其他线程尝试访问内存区域将导致收集器可以处理的分段错误(例如,通过阻塞线程直到收集器完成该区域)。