概述内核中的红黑树不受保护?
在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.
总结
以上是内存溢出为你收集整理的内核中的红黑树不受保护?全部内容,希望文章能够帮你解决内核中的红黑树不受保护?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
© 版权声明
THE END
请登录后查看评论内容