复习一下IO多路复用吧,
本文会先解释什么是 用户空间和内核空间、进程切换、阻塞、文件描述符
select、epoll模式
概念说明
用户空间和内核空间
为了保证用户进程不能直接操作内核,保护内核安全,操作系统会把虚拟内存分为两个部分:内核空间、用户空间。其中内核使用的空间就叫内核空间,同时进程在内核空间我们叫内核态,在用户空间运行叫用户态
进程切换
为了控制进程的执行和获得并发执行的能力,内核需要挂起正在运行在CPU的进程,并且恢复挂起的进程,这种行为被称为进程切换,从一个进程的运行切换到另外一个进程运行是很耗资源的(需要保存更新上下文数据、内存管理的数据结构等)。
阻塞
正在执行的进程,由于期待的某些事情未发生,如请求系统资源失败、等待某些操作的完成、新数据尚未到达或无新工作等,由系统主动执行阻塞原语(Block),使自身转为阻塞状态。
文件描述符
文件描述符(File Descriptor)是一个用于表述指向文件引用的一个抽象化概念
缓存IO
缓存IO又被称为标准IO,大多数文件系统的默认IO操作都是缓存IO。在Linux的缓存IO机制中,操作系统会把IO的数据缓存在文件系统中页缓存中(page cache)中,也就是说,数据会被先拷贝到操作系统内核的缓存区中,然后才会从操作系统内核的缓冲区拷贝到引用程序的地址空间。
IO模式
写在最后
永远相信美好的事情即将发生