标签:维护 内核空间 保护 poll 模式 io多路复用 需要 缓冲 机制
操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的 所有权限;为了保证用户进程不能直接操作内核,操作系统将虚拟空间划分为两部分:1.内核空间,2.用 户空间,Linux将1G的空间划分为内核空间,3G的为用户空间
其形式上是一个非负整数,实际上是一个索引值,指向内核为每个进程所维护的该进程打开文件的记录 表,当程序打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符;文件描述符这一概 念 只适用于Linux系统
又称为标准I/O,数据会先被拷贝到操作系统的内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝 到应用程序的地址空间
当一个read操作发生时,他会经历两个阶段:
1.等待数据准备(存到缓冲区)
2.将数据从内核拷贝到进程中
Linux操作系统的五种网络模式的方案:
1.阻塞I/O:特点:在IO执行的两个阶段都被阻塞了
2.非阻塞I/O:特点:如果数据没准备好,不会阻塞,会直接返回错误;用户进程需要不断的主动询问数 据好了没有
3.I/O多路复用:就是select,poll,epoll特点:通过一种机制使一个进程能同时等待多个文件描述符,而 这些文件描述符,其中的任意一个进入读就绪状态,select()函树就返回;
4.信号驱动I/O
5.异步I/O:用户进程发起read操作之后,立刻可以开始做其他事,而对于内核kernel来说,当他收到一个 asynchronous read(异步读)之后,首先它会立刻返回,所以不会对用户进程产生任何阻塞, 然后,kernel会等数据准备完成后将数据拷贝到用户内存,当这一切都完成后,kernel就会给用 户进程发送一个signal,告诉它read操作完成了
阻塞IO,非阻塞IO和IO多路复用都是同步IO;异步IO就是异步IO
IO多路复用:
epoll:当内存有数据时,直接返回给用户程序让用户程序取数据,并发送给用户该数据的文件描述符,如果用户不取,下次继续发送,则是“水平触发”。如果用户不取,下次不再发送,则是“边缘触发”
标签:维护 内核空间 保护 poll 模式 io多路复用 需要 缓冲 机制
原文地址:https://www.cnblogs.com/python-road/p/9159688.html