操作系统
文章平均质量分 91
zlpzlpzyd
成长路上......
展开
-
linux支持的零拷贝(zero copy)类型以及java对应的支持
如上述表格,在传统 io 的基础上,mmap 方式少了一次 cpu 复制,sendfile 相比 mmap 少了1次用户态切换,1次内核态切换,系统调用少了1次,sendfile+DMA scatter/gather 在单纯的 sendfile 调用基础上少了1次cpu复制,后面的 direct io、splice、tee 在资源消耗上类似。将内核中的读缓冲区与用户空间的缓冲区进行映射,所有的IO都在内核中完成。将 cpu 的复制操作交给网卡去做,需要网卡支持并且提供对应的驱动程序。原创 2024-01-01 11:50:04 · 482 阅读 · 0 评论 -
linux 的直接direct io O_DIRECT
Direct IO也叫无缓冲IO,裸IO(rawIO),意思是使用无缓冲IO对文件进行读写,不会经过page cache。通常,我们使用的文件流读取、内存映射都属于 Cache IO,因为将数据写入文件,首先会写入cache,最终再落盘到 IO device 或者称为 disk上。cache IO 使得我们在写入、读取(预读取、顺序读取等特性)文件数据的时候,性能得以提升,能够从cache(内存)中读取数据。原创 2024-01-01 01:06:08 · 1152 阅读 · 0 评论 -
java零拷贝zero copy MappedByteBuffer
java零拷贝zero copy MappedByteBuffer原创 2023-12-31 22:13:16 · 999 阅读 · 0 评论 -
linux的页缓存page cache
由于我们开发的程序要运行的话一般都在 linux 上运行,以下以 linux 为例来讲解Page Cache 的本质是由 Linux 内核管理的内存区域。通过 mmap(memory map) 以及 buffered io 将文件读取到内存空间实际上都是读取到 Page Cache 中。mmap 是通过指针操作的方式绕过了内核态直接操作 Page Cache。原创 2023-12-31 17:24:08 · 1709 阅读 · 0 评论 -
操作系统用户态和内核态的由来以及区别
操作系统用户态和内核态的区别 虚拟线程原创 2023-12-29 15:22:02 · 733 阅读 · 0 评论