关于对进程mm结构操作加锁的问题

内核编译和嵌入式产品的设计与开发
回复
imsi
帖子: 7
注册时间: 2010-06-01 9:18

关于对进程mm结构操作加锁的问题

#1

帖子 imsi » 2010-06-01 12:26

在2.4.0的内核代码中有两个函数:find_vma()和insert_vm_struct()。

前一个函数是纯查询操作,没有加锁;后者需要插入修改进程mm结构中的vma列表和AVL树,加了锁。

我的问题是:难道就因为前一个函数是纯查询操作就可以不加锁吗?既然加锁就说明有可能并发访问,那读也是访问啊,为什么不需要加锁?如果一个过程写了一半被一个读的过程打断,那它读到的岂不是一个错误的数据?
回复