码迷,mamicode.com
首页 > 其他好文 > 详细

IO多路复用

时间:2018-06-09 20:33:12      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:维护   内核空间   保护   poll   模式   io多路复用   需要   缓冲   机制   

IO 多路复用:

用户空间与内核空间:

   操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的     所有权限;为了保证用户进程不能直接操作内核,操作系统将虚拟空间划分为两部分:1.内核空间,2.用       户空间,Linux将1G的空间划分为内核空间,3G的为用户空间

文件描述符fd:

   其形式上是一个非负整数,实际上是一个索引值,指向内核为每个进程所维护的该进程打开文件的记录         表,当程序打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符;文件描述符这一概     念  只适用于Linux系统

缓存I/O

  又称为标准I/O,数据会先被拷贝到操作系统的内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝    到应用程序的地址空间

IO模式:

当一个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:当内存有数据时,直接返回给用户程序让用户程序取数据,并发送给用户该数据的文件描述符,如果用户不取,下次继续发送,则是“水平触发”。如果用户不取,下次不再发送,则是“边缘触发”

 

IO多路复用

标签:维护   内核空间   保护   poll   模式   io多路复用   需要   缓冲   机制   

原文地址:https://www.cnblogs.com/python-road/p/9159688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!