vm_object —— 虚拟内存的容器抽象
虚拟内存对象(VMO)表示可以映射到多个地址空间的虚拟内存连续区域。
内核和用户空间使用VMO来表示分页和物理内存。 它们是在进程之间以及内核和用户空间之间共享内存的标准方法。
VMO通过vmo_create系统调用创建,可以使用vmo_read和vmo_write对它们执行基本I/O操作。 并使用vmo_set_size设置VMO的大小, 相反,通过vmo_get_size可获取VMO当前大小。
VMO的大小将由内核向上舍入至下一页面边界的大小。
通过vmo_read或vmo_write,或通过vmar_map写入VMO的映射,页面被按需提交(或分配)到VMO上。 通过使用带ZX_VMO_OP_COMMIT和ZX_VMO_OP_DECOMMIT的标志调用vmo_op_range,可以手动从VMO提交和解除页面,但这被视为低层次的操作。 vmo_op_range也可用于对VMO所拥有的页面进行缓存和锁操作。
具有涉及缓存策略的特殊使用方法的进程可以使用vmo_set_cache_policy来更改给定VMO的策略。 此用法通常适用于设备驱动程序。
- vmo_create —— 创建VMO
- vmo_read —— 从VMO中读取数据
- vmo_write —— 写入数据到VMO
- vmo_get_size —— 获取VMO当前的大小
- vmo_set_size —— 调整VMO的大小
- vmo_op_range —— 在指定范围内的vmo上执行操作
- vmo_set_cache_policy —— 为vmo拥有的页面设置缓存策略
- vmar_map —— 将VMO映射到进程中
- vmar_unmap —— 从进程中取消映射内存