,异常,陷入等
- 进程/线程 管理
- 系统调用,调用硬件等
- 用户内存地址的转换,由程序地址转为物理地址映射
零拷贝
在上面,我们简单的了解了用户态和内核态的区别,在用户态中,所有的内存地址都是独立的虚拟地址.../test.txt");//在fpm中执行
它的流程为:
1:从硬盘中读取数据到内核态缓冲区,第一次复制拷贝
2:内核态复制数据到用户态,第二次拷贝
3:用户态获取数据之后,echo 发送数据,复制数据到内核态...,socket缓冲区中,第三次拷贝
4:内核态 socket缓冲区中数据复制到网卡中,转成网卡协议发送,第四次拷贝
可以看出,当我们通过http请求一个文件时,会出现4次拷贝....操作系统会根据读取的文件,预存储到内核态内存中,因为硬盘效率非常慢,所以当有多次相同文件读取请求时,可以将文件数据从内核态缓存中直接复制到用户态内存中,节省文件操作
零拷贝技术就是避免cpu将数据从一块存储位置拷贝到另一块位置...,通过以下技术可以实现零拷贝:
mmap
mmap 可以将一个文件预加载到内核空间中,并于用户空间共享内存地址,这样就可以避免数据从内核态复制到用户态中,可节省一次拷贝.例如:
#include <