IO操作概念。同步、异步、阻塞、非阻塞
2016-08-09 16:18
274 查看
“一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作。
同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO。
阻塞IO和非阻塞IO的区别在于第一步,发起IO请求是否会被阻塞,如果阻塞直到完成那么就是传统的阻塞IO,如果不阻塞,那么就是非阻塞IO。
同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发
IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。而阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状
态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回
一个状态值。
所以,IO操作可以分为3类:同步阻塞(即早期的IO操作)、同步非阻塞(NIO)、异步(AIO)。
同步阻塞:
在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。JAVA传统的IO模型属于此种方式。
同步非阻塞:
在此种方式下,用户进程发起一个IO操作以后边可返回做其它事情,但是用户进程需要时不时的询问IO操作是否就绪,这就要求用户进程不停的去询问,从而引入不必要的CPU资源浪费。其中目前JAVA的NIO就属于同步非阻塞IO。
异步:
此种方式下是指应用发起一个IO操作以后,不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序。”
1)同步阻塞
2)同步非阻塞
3)异步阻塞
4)异步非阻塞
同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO。
阻塞IO和非阻塞IO的区别在于第一步,发起IO请求是否会被阻塞,如果阻塞直到完成那么就是传统的阻塞IO,如果不阻塞,那么就是非阻塞IO。
同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发
IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。而阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状
态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回
一个状态值。
所以,IO操作可以分为3类:同步阻塞(即早期的IO操作)、同步非阻塞(NIO)、异步(AIO)。
同步阻塞:
在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。JAVA传统的IO模型属于此种方式。
同步非阻塞:
在此种方式下,用户进程发起一个IO操作以后边可返回做其它事情,但是用户进程需要时不时的询问IO操作是否就绪,这就要求用户进程不停的去询问,从而引入不必要的CPU资源浪费。其中目前JAVA的NIO就属于同步非阻塞IO。
异步:
此种方式下是指应用发起一个IO操作以后,不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序。”
1)同步阻塞
2)同步非阻塞
3)异步阻塞
4)异步非阻塞
相关文章推荐
- 整理io中的同步异步,阻塞非阻塞概念
- 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型
- IO概念---同步/异步、阻塞/非阻塞
- java IO 概念误区---------同步/异步与阻塞/非阻塞的区别
- IO模型 阻塞 非阻塞 同步 异步概念对比区分
- IO操作中的同步/异步、阻塞/非阻塞的含义
- IO概念---同步/异步、阻塞/非阻塞
- 并发编程基础概念(一) IO-同步,异步,阻塞,非阻塞(转)
- 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型
- 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型
- 并发编程基础概念(一) IO-同步,异步,阻塞,非阻塞
- IO操作:同步,异步,阻塞,非阻塞
- IO 概念误区---------同步/异步与阻塞/非阻塞的区别
- IO - 同步,异步,阻塞,非阻塞概念
- 关于IO操作的阻塞,非阻塞,异步,同步的简明解释
- java IO 概念误区---------同步/异步与阻塞/非阻塞的区别
- 转载一个关于阻塞/非阻塞以及同步/异步IO的分析
- 关于socket中阻塞,非阻塞,同步,异步的概念
- 转: 基本概念:同步、异步、阻塞和非阻塞
- 基本概念:同步、异步、阻塞和非阻塞