优化数据复制:fbufs与TCOW技术解析
在数据处理和传输过程中,数据复制是一个常见且关键的操作。然而,传统的页面重映射方式存在诸多开销,影响了系统的性能。本文将深入探讨fbufs和TCOW(transient copy-on-write)这两种技术,它们分别通过不同的方式优化了数据复制过程。
1. 传统页面重映射的问题
传统观点认为,通过对页表进行写入操作,就可以将一个大缓冲区从应用程序传输到内核(反之亦然)。如图所示,假设操作系统要将进程1的虚拟页10中的数据快速复制到进程2的虚拟页8中,简单的做法是让进程2中对应虚拟页8的页表项指向进程1中虚拟页10所指向的数据包数据。
但实际上,这种简单描述掩盖了许多额外的开销:
- 多级页表 :现代系统大多使用多级页表映射,因为从20位的虚拟页进行映射需要大量的页表内存。因此,实际的映射可能需要更改至少一级和二级页表中的映射。为了实现可移植性,还存在与机器无关和与机器相关的表,所以涉及多次写入操作,而不仅仅是一次。
- 获取锁和修改页表项 :页表是共享资源,必须使用锁进行保护,这就需要获取和释放锁。
- 刷新转换后备缓冲区(TLB) :为了节省转换时间,常用的页表映射会被缓存在TLB中。当写入虚拟页8的新位置时,必须找到并刷新(即移除)或更正TLB中所有与虚拟页8相关的条目。
- 在目标域分配虚拟内存 :虽然假设虚拟内存位置8是目标页面的位置,但在进行复制之前,需要进行一些计算以在目标进程中找到一个空闲的页表项。
-
超级会员免费看
订阅专栏 解锁全文
7

被折叠的 条评论
为什么被折叠?



