一种基于原子操作的设备IO队列方法技术

技术编号:11440234 阅读:78 留言:0更新日期:2015-05-13 10:24
一种基于原子操作的设备IO队列方法,该队列由首指针、尾指针、数据结点和临时结点构成,入队操作可以由多个生产者同时进行;出队操作只能由一个消费者进行;出队操作需要一个临时结点参与,替换队列中的第一个数据结点并将第一个数据结点取出,在此过程中使用原子比较并交换(CAS)操作判断尾指针是否也指向第一个数据结点,如果是就将尾指针指向临时结点;该队列还包括释放控制权的操作,释放控制权就是移除第一个结点,需要使用原子比较并交换(CAS)操作判断尾指针是否也指向第一个结点,如果是就将尾指针改为空指针,如果移除第一个结点使队列被清空则表示控制权被释放。

【技术实现步骤摘要】
一种基于原子操作的设备IO队列方法
本专利技术涉及计算机系统软件编程领域,特别是一种基于原子操作的设备IO队列方法。
技术介绍
在计算机系统里对设备IO的访问都是独占的,即便是对称多处理器的系统,即便是在用户角度看上去多个任务在同时访问某一硬件设备,在底层实际的运作过程中都是通过将队列中的请求一个个提交给硬件设备去串行化的完成。虽然部分硬件支持硬件内部的命令队列,但依然需要软件队列去管理其他的请求。这里就涉及到多个任务同时访问IO队列的互斥问题,一般设计中都使用锁去控制多个任务同时访问队列的问题,即只有一个任务可以成功的获得锁,当这个任务访问完队列后再将锁释放,其他任务才能获得锁去操作队列。在处理器较少的情况下这种对共享资源加锁的访问方式是合适的,但当系统内的处理器足够多时这种设计将成为发挥多处理器效能的瓶颈,因此通过原子操作实现的IO队列将能有效解决这一问题。我们通常讲的原子队列在学术界是指能够进行多进多出的通用原子队列,即任何时刻可以有多个生产者和多个消费者同时进行入队和出队的操作。这种通用的原子队列由于实现上过于复杂,且在实际的具体应用中开销过大并不实用。专
技术实现思路
本专利技术本文档来自技高网
...
一种基于原子操作的设备IO队列方法

【技术保护点】
一种基于原子操作的设备IO队列方法,该方法的队列由首指针、尾指针、数据结点和临时结点构成;首指针指向队列的第一个结点,尾指针指向队列的最后一个结点;每个结点包含一个链接指针,结点与结点之间通过链接指针连接起来,第一个结点的链接指针指向第二个结点,最后一个结点的链接指针为空;其特征在于进行出队列操作时需要临时结点的参与,将队列中的第一个数据结点替换成临时结点,使首指针指向临时结点,并将第一个数据结点取出;同时用原子比较并交换操作判断尾指针是否也指向第一个数据结点,如果尾指针指向第一个数据结点则原子化的将尾指针替换成指向临时结点的指针,如果尾指针不指向第一个数据结点就将临时结点包含的链接指针指向第...

【技术特征摘要】
1.一种基于原子操作的设备IO队列方法,该方法的队列由首指针、尾指针、数据结点和临时结点构成;首指针指向队列的第一个结点,尾指针指向队列的最后一个结点;每个结点包含一个链接指针,结点与结点之间通过链接指针连接起来,第一个结点的链接指针指向第二个结点,最后一个结点的链接指针为空;其特征在于进行出队列操作时需要临时结点的参与,将队列中的第一个数据结点替换成临时结点,使首指针指向临时结点,并将第一个数据结点取出;同时用原子比较并交换操作判断尾指针是否也指向第一个数据结点,如果尾指针指向第一个数据结点则原子化的将尾指针替换成指向临时结点的指针,如果尾指针不指向第一个数据结点就将临时结点包含的链接指针指向第二个数据结点。2.根据权利要求1所述的一种基于原子操作的设备IO队列方法,其特征是:入队操作...

【专利技术属性】
技术研发人员:龙恢管志坚
申请(专利权)人:长沙新弘软件有限公司
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1