select、epoll模式

本文最后更新于:2021年9月20日 上午

复习一下IO多路复用吧,

本文会先解释什么是 用户空间和内核空间、进程切换、阻塞、文件描述符

select、epoll模式

概念说明

用户空间和内核空间

为了保证用户进程不能直接操作内核,保护内核安全,操作系统会把虚拟内存分为两个部分:内核空间、用户空间。其中内核使用的空间就叫内核空间,同时进程在内核空间我们叫内核态,在用户空间运行叫用户态

进程切换

为了控制进程的执行和获得并发执行的能力,内核需要挂起正在运行在CPU的进程,并且恢复挂起的进程,这种行为被称为进程切换,从一个进程的运行切换到另外一个进程运行是很耗资源的(需要保存更新上下文数据、内存管理的数据结构等)。

阻塞

正在执行的进程,由于期待的某些事情未发生,如请求系统资源失败、等待某些操作的完成、新数据尚未到达或无新工作等,由系统主动执行阻塞原语(Block),使自身转为阻塞状态。

文件描述符

文件描述符(File Descriptor)是一个用于表述指向文件引用的一个抽象化概念

缓存IO

缓存IO又被称为标准IO,大多数文件系统的默认IO操作都是缓存IO。在Linux的缓存IO机制中,操作系统会把IO的数据缓存在文件系统中页缓存中(page cache)中,也就是说,数据会被先拷贝到操作系统内核的缓存区中,然后才会从操作系统内核的缓冲区拷贝到引用程序的地址空间。

IO模式

写在最后

永远相信美好的事情即将发生


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!