一般来讲,设备驱动运行在操作系统层面,而普通应用则运行在用户态层面。数据传输时,首先在操作系统层面需要开辟缓冲区来对数据做缓存,然后再将数据拷贝到用户态或从用户态拷贝过来。
数据拷贝的目的是为了实现用户态和内核态的数据保护和隔离,但性能上却增加了一次本地的数据拷贝。
因此,高效率的驱动往往设计为零拷贝模式,即驱动直接对用户态缓冲区操作,从而避免来一次数据拷贝。
一般来讲,设备驱动运行在操作系统层面,而普通应用则运行在用户态层面。数据传输时,首先在操作系统层面需要开辟缓冲区来对数据做缓存,然后再将数据拷贝到用户态或从用户态拷贝过来。
数据拷贝的目的是为了实现用户态和内核态的数据保护和隔离,但性能上却增加了一次本地的数据拷贝。
因此,高效率的驱动往往设计为零拷贝模式,即驱动直接对用户态缓冲区操作,从而避免来一次数据拷贝。