通过一些方法从用户态陷入到内核态执行:
- io相关操作,设置时钟指令,内存操作(申请内存,清理内存)
- 终端,异常,陷入等
- 进程/线程 管理
- 系统调用,调用硬件等
- 用户内存地址的转换,由程序地址转为物理地址映射
零拷贝...操作系统会根据读取的文件,预存储到内核态内存中,因为硬盘效率非常慢,所以当有多次相同文件读取请求时,可以将文件数据从内核态缓存中直接复制到用户态内存中,节省文件操作
零拷贝技术就是避免cpu将数据从一块存储位置拷贝到另一块位置...,通过以下技术可以实现零拷贝:
mmap
mmap 可以将一个文件预加载到内核空间中,并于用户空间共享内存地址,这样就可以避免数据从内核态复制到用户态中,可节省一次拷贝.例如:
#include <...2:将内核空间的内存地址以及偏移量传输到socket缓冲区中
3:socket直接从内核空间读取数据
4:将内核空间的数据通过socket复制到网卡中,第二次拷贝
sendfile只能实现文件->socket...关于select,epoll的优缺点说明
下一篇: 一致性哈希算法原理以及实现方案