2

好的,所以我们今天支持每个进程的内存分页/保护。多年来,我一直想知道通过为我们的操作系统今天支持的可以说是最小的执行单元提供页面级保护可以获得什么样的好处:线程。 这个关于软件事务内存的问题让我回到了最前沿。

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

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

缺点:

  • 使用标准锁定技术进行死锁检测已经足够困难了
  • 用于确定页面级所有权的调试器/操作系统支持

从支持这样的模型中你可以看到任何其他的缺点和优点吗?

4

2 回答 2

1

这种编程模型已经可以使用进程和共享内存。它用得不多,有充分的理由:进程间消息传递更安全,也更容易推理。

于 2010-05-18T13:32:26.323 回答
1

每线程每页内存保护可用于有效地实现并行垃圾回收

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

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

于 2016-02-09T13:47:36.730 回答