Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1209534
  • 博文数量: 398
  • 博客积分: 10110
  • 博客等级: 上将
  • 技术积分: 4055
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 20:01
个人简介

新博客http://www.cnblogs.com/zhjh256 欢迎访问

文章分类

全部博文(398)

文章存档

2012年(1)

2011年(41)

2010年(16)

2009年(98)

2008年(142)

2007年(100)

我的朋友

分类: Oracle

2007-12-25 13:36:54

    对于到裸设备和快速I/O文件的内核异步I/O (KAIO),内核分配一个异步I/O请求数据结构并调用设备驱动其中的一个条目指针设置异步I/O请求。设备驱动器然后将物理I/O操作放入队列并返回控制给调用进程。当物理I/O操作完成时,硬件产生一个CPU中断,CPU切换到中断服务上下文并带哦用设备驱动器中断服务过程更新异步I/O请求数据结构并可能以SIGIO唤醒调用进程。如果SIGIO异步通知没有实施/启用,进程必须调用aio_error()通知请求完成。aio_return()调用用来得到和处理I/O请求的结果。
    因为内核包括为异步I/O包含了具体的支持,所以成为内核异步IO;而线程异步IO实施是仅仅使用内核轻量级处理函数模仿,通过在不同的线程中实施多个同步IO请求。由于独立的I/O请求和完成,内核异步IO同时调用分段的异步I/O。
    最重要的是KAIO请求完成发生在中断服务上下文中,并且完全在设备驱动器中断服务过程中实施。这就是为什么内核异步io仅在裸设备和快速io中可用,并且要求驱动器在OS内核中。一些OS同时要求额外的步骤以配置KAIO。
如下:
    Solaris  不需要特别的配置;
    HP-UX  asynchdisk和asynchdsk驱动器必须包含在内核中;/dev/async设备文件的主号必须是101;max_async_ports必须大于所有实例中的processes参数,dba用户组必须具有MLOCK权限,在/etc/privgroup中。
    AIX   smit aio菜单下的state参数必须为available。
    Tru64 Unix  不需要特别的配置;
    Linux  在2.5内核中不可用;
    Windows NT/2000 不可用;
当kaio可用时,无论何时在数据库文件上请求异步i/o,Oracle将自动使用内核异步io。
阅读(746) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~