只有线程或者进程处于内核态的时候才能进行系统调用,如果处于用户态的话,是需要转换为内核态才能访问。
一般用户线程或者进程是不需要切换到内核态运行的,除非:
1. 系统调用,其实系统调用本身就是中断,但是软件中断,跟硬中断不同。
2.
**
# 通过mmap实现的零拷贝(常用来处理大文件)
当进行mmap系统调用的时候,将文件的内容的全部或一部分直接映射到进程的地址空间(虚拟内存),映射完成后,进程可以像访问普通内存一样做其他的操作,
txt");
channel.transferTo(0, channel.size(), out.getChannel());
上面这种方式其实调用的是Linux系统的sendfile系统指令,无论什么语言代码实现的零拷贝其实调用的都是操作系统本身提供的系统指令
来源:
https://www.toutiao.com/i6810663802636337677/
“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com
来都来了,走啥走,留个言呗