gpt4 book ai didi

linux - mlock()-ed 页面是静态的,还是可以在物理 RAM 中移动?

转载 作者:可可西里 更新时间:2023-11-01 11:49:44 26 4
gpt4 key购买 nike

根据 mlock() 手册页:

All pages that contain a part of the specified address range are guaranteed to be resident in RAM when the call returns successfully; the pages are guaranteed to stay in RAM until later unlocked.

这是否也能保证这些页面的物理地址在其整个生命周期或解锁之前保持不变?

如果不是(也就是说,如果它可以被内存管理器移动 - 但仍保留在 RAM 中),关于新位置或发生此类更改的事件有什么可以说的吗?

更新:

关于 RAM 中锁定页面的一致性,有什么可以说的吗?如果 CPU 有缓存,那么 mlock-ing 是否保证 RAM 与缓存的一致性(假设回写缓存)?

最佳答案

没有。已mlocked 的页面使用内核的unevictable LRU 列表 进行管理。顾名思义(mlock() 保证)这些页面不能从 RAM 中逐出。但是,页面可以从一个物理页面框架迁移到另一个。这是 Unevictable LRU Infrastructure 的摘录(为清楚起见添加了格式):

MIGRATING MLOCKED PAGES

A page that is being migrated has been isolated from the LRU lists and is held locked across unmapping of the page, updating the page's address space entry and copying the contents and state, until the page table entry has been replaced with an entry that refers to the new page. Linux supports migration of mlocked pages and other unevictable pages. This involves simply moving the PG_mlocked and PG_unevictable states from the old page to the new page.

关于linux - mlock()-ed 页面是静态的,还是可以在物理 RAM 中移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15275423/

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