你的位置:首页 > 软件开发 > 操作系统 > 图解I/O的五种模型

图解I/O的五种模型

发布时间:2016-01-10 01:00:18
1.1 五种I/O模型 1)阻塞I/O2)非阻塞I/O3)I/O复用4)事件(信号)驱动I/O5)异步I/O 1.2 为什么要发起系统调用? 因为进程想要获取磁盘中的数据,而能和磁盘打交道的只能是内核, 进程通知内核,说要磁盘中的数据此过程就是系统调用 1 ...

图解I/O的五种模型

 

1.1 五种I/O模型  

1)阻塞I/O

2)非阻塞I/O

3)I/O复用

4)事件(信号)驱动I/O

5)异步I/O

 

1.2 为什么要发起系统调用? 

因为进程想要获取磁盘中的数据,而能和磁盘打交道的只能是内核, 进程通知内核,说要磁盘中的数据

此过程就是系统调用 

 

1.3 一次I/O完成的步骤

当进程发起系统调用时候,这个系统调用就进入内核模式, 然后开始I/O操作

I/O操作分为俩个步骤: 

         1) 磁盘把数据装载进内核的内存空间

         2) 内核的内存空间的数据copy到用户的内存空间中(此过程才是真正I/O发生的地方) 

图解I/O的五种模型

注意: io调用大多数都是阻塞的

 过程分析

       整个过程:此进程需要对磁盘中的数据进行操作,则会向内核发起一个系统调用,然后此进程,将会被切换出去,

此进程会被挂起或者进入睡眠状态,也叫不可中 断的睡眠,因为数据还没有得到,只有等到系统调用的结果完成后,

则进程会被唤醒,继续接下来的操作,从系统调用的开始到系统调用结束经过的步骤:

①进程向内核发起一个系统调用,

②内核接收到系统调用,知道是对文件的请求,于是告诉磁盘,把文件读取出来

③磁盘接收到来着内核的命令后,把文件载入到内核的内存空间里面

④内核的内存空间接收到数据之后,把数据copy到用户进程的内存空间(此过程是I/O发生的地方)

⑤进程内存空间得到数据后,给内核发送通知

⑥内核把接收到的通知回复给进程,此过程为唤醒进程,然后进程得到数据,进行下一步操作

2.1 阻塞

    是指调用结果返回之前,当前线程会被挂起(线程进入睡眠状态) 函数只有在得到结果之后,才会返回,才能继续执行

阻塞I/O系统怎么通知进程? 

I/O 完成后, 系统直接通知进程, 则进程被唤醒   

 

图解I/O的五种模型


原标题:图解I/O的五种模型

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录