内存管理-66-内存管理锁汇总


一、mm中的锁次序

1. rmap.c 中的注释

//Lock ordering in mm:

inode->i_mutex (while writing or truncating, not reading or faulting)
    mm->mmap_sem
        page->flags PG_locked (lock_page)
            hugetlbfs_i_mmap_rwsem_key (in huge_pmd_share)
                mapping->i_mmap_rwsem
                    anon_vma->rwsem
                        mm->page_table_lock or pte_lock
                            pgdat->lru_lock (in mark_page_accessed, isolate_lru_page)
                            swap_lock (in swap_duplicate, swap_info_get)
                                mmlist_lock (in mmput, drain_mmlist and others)
                                mapping->private_lock (in __set_page_dirty_buffers)
                                    mem_cgroup_{begin,end}_page_stat (memcg->move_lock)
                                        i_pages lock (widely used)
                                inode->i_lock (in set_page_dirty's __mark_inode_dirty)
                                bdi.wb->list_lock (in set_page_dirty's __mark_inode_dirty)
                                    sb_lock (within inode_lock in fs/fs-writeback.c)
                                    i_pages lock (widely used, in set_page_dirty,
                                        in arch-dependent flush_dcache_mmap_lock,
                                        within bdi.wb->list_lock in __sync_single_inode)

anon_vma->rwsem,mapping->i_mutex (memory_failure, collect_procs_anon)
    ->tasklist_lock
        pte map lock

 

posted on 2026-04-25 14:09  Hello-World3  阅读(2)  评论(0)    收藏  举报

导航