Virtual Memory Object(虚拟内存对象)


英文原文快照


名称

vm_object —— 虚拟内存的容器抽象

概要

虚拟内存对象(VMO)表示可以映射到多个地址空间的虚拟内存连续区域。

描述

内核和用户空间使用VMO来表示分页和物理内存。 它们是在进程之间以及内核和用户空间之间共享内存的标准方法。

VMO通过vmo_create系统调用创建,可以使用vmo_readvmo_write对它们执行基本I/O操作。 并使用vmo_set_size设置VMO的大小, 相反,通过vmo_get_size可获取VMO当前大小。

VMO的大小将由内核向上舍入至下一页面边界的大小。

通过vmo_readvmo_write,或通过vmar_map写入VMO的映射,页面被按需提交(或分配)到VMO上。 通过使用带ZX_VMO_OP_COMMITZX_VMO_OP_DECOMMIT的标志调用vmo_op_range,可以手动从VMO提交和解除页面,但这被视为低层次的操作。 vmo_op_range也可用于对VMO所拥有的页面进行缓存和锁操作。

具有涉及缓存策略的特殊使用方法的进程可以使用vmo_set_cache_policy来更改给定VMO的策略。 此用法通常适用于设备驱动程序。

系统调用