【问题标题】:mmap semaphore locking pages in the kernel内核中的 mmap 信号量锁定页面
【发布时间】:2011-07-24 07:45:21
【问题描述】:

如果我已经持有 mm_struct 的 mmap 信号量(读取)并且我想向页面结构的成员写入一些数据,我应该 up_read 信号量并尝试在 mm_struct 上获取 down_write 还是应该使用单独的锁(它是我创建的结构成员,它是一个列表)。另外,如果我已经持有一个 down_read 信号量,并且我调用了另一个 down_reads 相同信号量的方法,那么根据我的理解,这不应该是死锁吗?

【问题讨论】:

  • 明确地说,这是您编译的自定义内核,在 mm_struct 中添加了成员​​,只有您的代码可以访问?
  • @Corey,是的,但是该成员已添加到页面结构中,这就是我考虑在页面本身上使用另一个锁的原因。
  • 而不是 mmap 信号量

标签: linux-kernel semaphore kernel mmap


【解决方案1】:

我找到的解决方案是 down_read 不会导致死锁。相反,我使用自旋锁来维护修改列表并更改页面标志的专有权利。这让我可以避免同一页面上出现多个错误的问题,还可以让我看到如果我当前持有锁,那么页面错误处理程序可以返回,因为我已经处理了该错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多