gpt4 book ai didi

linux - 内核中的红黑树没有保护?

转载 作者:IT王子 更新时间:2023-10-29 00:37:47 24 4
gpt4 key购买 nike

在Linux内核中,为了存储进程的内存区域,Linux同时使用链表和红黑树。 find_vma是一个函数,它定位第一个内存区域,其 vm_end 字段大于通过红黑树传递的地址。但是,我发现 find_vma() 中的红黑树没有任何保护(如锁)。如果另一个线程调用 rb_erase 怎么办?函数同时删除树上的一些元素?

最佳答案

是的,find_vma 函数调用受到保护,不会通过信号量进行并发访问。在调度程序中,函数也与信号量调用一起使用。

        2209         down_read(&mm->mmap_sem);
2210 vma = find_vma(mm, start);
....
up_read(&mm->mmap_sem);



mmap_sem is used to protect this function call which is a read-write semaphore.
struct rw_semaphore mmap_sem; defined inside struct mm_struct.

关于linux - 内核中的红黑树没有保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com