异步IO
来源:互联网 发布:网页信息抓取软件 编辑:程序博客网 时间:2024/05/22 07:05
首先解释一下异步IO的概念:和同步IO相对的,当异步过程调用时,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
异步IO是在多用户、多任务机上产生的,过去我们用的DOS是一种单用户、单任务操作系统,应用程序需要读或写操作时,通过DOS功能调用(INT 21),由功能程序负责读写,应用程序在等待完成,由于DOS的单任务性,不会发生有多个任务同时执行IO操作的。但是在多任务操作系统中,由于多个任务可能同时执行IO操作,操作系统在执行IO操作时,就有同步和异步两种方式:
1.同步方式:一个任务的IO完成后,再开始另一个任务的IO操作;
2.异步方式:IO操作按一定的规则执行,可能先申请的后完成,后申请的先完成。
在单任务系统中,异步方式没有优越性,反而增加了调度的开销,但在多任务系统中,如果按同步方式,先申请先执行,在磁盘IO中,则磁头移动的过程中是不能读写的,定位以后才能读写,这样移动的过程就浪费了,磁盘的效率就低。在异步方式中,磁头移动的过程中,如果途中有其它合适的IO操作,先完成这个IO操作,然后再继续移动,这样效率就提高了,也就有可能后申请,先完成。异步方式在多任务系统中,IO操作的效率是提高很明显的。磁头移动过程,需要一定的规则来进行调度,通常采用“电梯算法”,这个算法具体是:磁头沿一个方向移动,有合适的IO就处理,然后继续移动,直到这个方向的前面没有IO申请,再向反方向移动。
早在80年代,NETWARE操作系统就采用了电梯算法,也就是NETWARE在服务器硬盘上操作速度快的其中一个原因,SCSI硬盘在单任务操作系统中是没什么优越性的,但是在多任务系统中,其效率就很高,就是因为SCSI硬盘在处理IO申请时,采用了电梯算法。(当然SCSI硬盘的平均寻道时间短、平均等待时间短、缓存大也是快速的原因)
到目前为止,所有的多任务操作系统都采用了电梯算法,估计HP小型机也不例外。并且不需要用户设置,系统默认就是采用的。
在数据库应用中,这是典型的多任务应用,采用异步IO是最为明智的,可以说大型数据库毫不例外地从中获得好处,因为IO的时间占用与CPU相比是1000倍以上的,往往IO是数据库的瓶颈,所以IO性能提高可以使数据库的性能相应提高。Oracle 10g中默认支持了异步IO。
- 异步IO
- 异步IO
- 异步IO
- 异步IO
- 异步io
- 异步IO
- 异步 IO
- 异步IO
- 异步IO
- 异步IO
- 异步io
- 异步IO
- 异步IO
- 异步IO
- 异步IO
- 异步IO
- 同步IO,异步IO
- 同步IO 异步IO
- 对PyIntObject的认识(对象池)
- 计算机丢失tbb_debug解决方案
- [Unity3D]使方块运动的程序脚本的使用与说明
- perl unicode
- POJ 1485
- 异步IO
- 设计点滴记录
- Oracl11g 修改字符集 改成 ZHS16GBK
- Could not load file or assembly 'XXX' or one of its dependencies.
- 【计算机图形学】六、Mandelbrot集
- NFS服务的配置(虚拟机下的Linux,开发板是ARM9 S3C2410) .
- Jsmooth的使用
- 算法导论学习笔记--1--分治排序
- 牛逼笔记:java面向对象一