文章目录
背景
今天看RXW源码的时候,看到了一个虚拟地址,我就很好奇,为什么要用虚拟地址呢?
在这里,buffer是一个MEDIA_BUFFER类型,而MEDIA_BUFFER是一个泛型指针
通过将这个泛型指针转换为MEDIA_BUFFER_IMPLE结构体指针类型,BUFFER指针指向了一个结构体,这个结构体里void* ptr指针参数【作者称之为虚拟地址】,这个参数指向的内存是否就是保存我们真实图像内容的内存?
虚拟地址
那么为什么作者称这个结构体里的void* ptr为缓存的虚拟地址呢?
因为在计算机里面,虚拟地址和物理地址的映射关系由操作系统决定,不是人为决定的,每个虚拟地址都能链接到真实的物理地址,通过使用虚拟地址,不同程序中也能有相同的(虚拟)地址,但是链接的却是不同的物理地址,这让它们不会相互影响对方所指向的内存。
此外还涉及到内存分页机制的问题,
现代计算机都使用分页(Paging)的方式对虚拟地址空间和物理地址空间进行分割和映射,以减小换入换出的粒度,提高程序运行效率。
具体可以自己慢慢去了解,,,我反正是看不怎么懂