我们知道,linux系统在读取数据的时候,并不是直接从磁盘或者网卡读取到用户进程中的,其中会经历过从设备到内核缓冲区,再由内核缓冲区到用户缓冲区的过程,这个过程最早是由CPU进行的,后来设计了DMA设备在这个过程中解放了CPU,但是仍然不能完全避免CPU的操作 低效的IO系统 在不存在DMA设备的时
背景 我们知道epoll是对多路复用接口select/poll的一个更进一步的优化,它是真正基于事件驱动的IO模型,epoll的实现依赖于在IO的过程中当状态为可读或者不可读的时候发出信号,随后CPU执行中断,并根据先前注册的回调方法调用用户代码进行处理。 这里其实就衍生出一个问题,就是什么时间发送
大页内存 随着应用对内存需求的不断增长,操作系统原本的虚拟内存机制所划分的4KB的分页机制显的有些小了,例如,当物理内存增长到GB甚至TB级别的时候,4KB的分页机制可能会产生很多的缺页中断。 例如,当应用需求的内存是2MB时,需要512个页面,进而在TLB中需要512个表项也就是说操作系统需要经历