好的,我们今天支持每进程内存分页/保护。多年来,我一直在想通过提供页面级保护来获得什么样的好处,这可以说是我们OS支持的最小执行单元:线程。 This question on Software Transactional Memory让我回到了最前沿。
拥有页面级线程所有权的好处
下行:
任何其他缺点,你可以从支持这样的模型看到的好处?
答案 0 :(得分:1)
这种编程模型已经可以通过进程和共享内存来实现。它没有被大量使用,理由很充分:进程间消息传递更安全,更容易推理。
答案 1 :(得分:1)
每线程每页内存保护可用于有效实施parallel garbage collection。
要解决的问题是,为了收集内存区域,垃圾收集器需要对该区域的独占访问,否则其他线程(所谓的“mutator”线程)将能够读取并编写不一致状态的对象(例如,从oldspace复制到newspace的中途。)
使用每线程内存保护,垃圾收集器可以控制对内存区域的访问,以便只有收集器线程可以访问它;其他线程尝试访问内存区域将导致收集器可以处理的分段错误(例如,通过阻塞线程直到收集器完成该区域)。