我对 Linux 内核中文件的 I/O 代码的一部分感到好奇

I am curious about a part of the file I/O code in the Linux kernel

提问人:user2550115 提问时间:9/23/2023 最后编辑:0andriyuser2550115 更新时间:9/26/2023 访问量:53

问:

我有一个关于 Linux 文件 I/O 的问题。

写入文件时,内核使用以下函数generic_file_aio_write()

mutex_lock(inode->mutex);

代码将运行。(https://elixir.bootlin.com/linux/v2.6.39.4/source/mm/filemap.c#L2545)

我好奇的是,仅通过查看名称,该函数似乎仅在线程内共享锁。mutex_lock()

但翻阅各种书籍,似乎这个过程也共享锁。mutex_lock()

此函数在不同进程之间共享锁是否正确?mutex_lock()

之所以出现这个问题,是因为在较旧的内核版本中,该函数是在执行锁定时执行的。 (https://elixir.bootlin.com/linux/v2.6.6/source/mm/filemap.c#L1977down(&inode->i_sem))

从相关书籍和简单的实验中,我确认锁在不同的进程之间是共享的,但是 目前还不清楚,所以我想找到一个更明确的方法。mutex_lock(inode->mutex)generic_file_aio_write()

linux io linux-内核

评论

0赞 Barmar 9/23/2023
互斥锁的全部意义在于锁定不同线程之间的某些内容。
0赞 dimich 9/23/2023
地址空间的内核部分在所有进程之间共享。没有进程/线程分离。
0赞 Community 9/25/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。
0赞 user2550115 10/10/2023
@dimich 谢谢你的回答。您能告诉我一个可以检查它的文件或方法吗?

答: 暂无答案