[发明专利]一种对共享资源互斥访问的同步方法、装置和网络设备无效
申请号: | 200910091209.2 | 申请日: | 2009-08-14 |
公开(公告)号: | CN101631328A | 公开(公告)日: | 2010-01-20 |
发明(设计)人: | 宋树迎 | 申请(专利权)人: | 北京星网锐捷网络技术有限公司 |
主分类号: | H04W24/00 | 分类号: | H04W24/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100036北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 共享资源 访问 同步 方法 装置 网络设备 | ||
技术领域
本发明涉及一种对共享资源互斥访问的同步方法、装置和网络设备,属于数据通信技术领域。
背景技术
下面先对本发明中涉及的几个概念进行解释。
共享资源:指系统中有多个线程会访问的数据;要防止共享资源的并发访问,因为如果多个执行线程同时访问和操作数据,就有可能发生各线程之间相互覆盖共享数据的情况,造成被访问数据处于不一致状态。
竞争条件:当计算结果完全依赖于两个或者多个线程如何交替执行的时候,构成一个竞争条件,例如:多个线程并发访问共享资源的时候,其运算结果就依赖于线程交替执行的顺序,所以会构成竞争条件。
临界区:即访问和操作共享资源的代码段。多个执行线程并发访问同一个资源通常是不安全的,为了避免在临界区中并发访问,编程者必须保证这些代码原子地执行,即代码在执行结束前不可被打断,就如同整个临界区是一个不可分割的指令一样;
同步技术:为了防止竞争条件和保证临界区能够原子的执行,需要引入一些技术,这些技术被称为同步技术。
现有的同步技术主要有以下几种:
1)原子操作:最基本的同步技术,需要CPU的支持,对内存实现读-修改-写的原子操作;
2)自旋锁:当某个线程需要共享资源时候,需要首先获取锁,完成访问时候释放锁,当锁已经被其他的访问者取得时候,则等待直到锁被释 放,最多只能有一个读者或者一个写者能够获取锁,以此保证临界区的原子操作;
3)读写自旋锁:自旋锁的改进版本,允许某一时刻,有多个读者获取读锁,或者一个写者获取写锁;
4)信号量:类似于自旋锁,不同之处在于,当访问者想要访问共享资源,资源却被其他的访问者占用的时候,该线程挂起,直到资源可用然后被系统唤起;同自旋锁一样,最多只能有一个读者或者一个写者能够访问共享资源;
5)读写信号量:信号量的改进版本,允许某一时刻,有多个读者同时读取,或者一个写者写入。
考虑到并发效率和系统开销等因素,各种同步技术分别有其局限性而适用于不同的场合,原子操作有很好的并发效率和较低的系统开销,但只能操作CPU支持的原子变量,通常为单个整型变量,如果共享资源无法用单个整型变量表示,则无法适用;自旋锁和读写自旋锁不适用于对资源的长时间频繁访问,如果临界区代码较长,访问频繁,则在锁的获取过程中等待的时间较长,浪费系统资源;信号量和读写信号量应用到临界区简短的情形下就会得不偿失,因为任务的挂起唤醒等操作导致系统开销很大,同时使用信号量的时候,代码必须允许被挂起。
如果对共享资源的访问操作比较复杂,即临界区较长,访问频繁,读操作远多于写操作,那么综合考虑的结果就是使用读写信号量,此时我们不得不接受任务挂起唤醒等大量的系统开销,同时如果在某些嵌入式系统中,一些内核路径(如中断处理)访问共享资源的时候不允许挂起,则只能选择自旋锁,这又会导致大量的等待,浪费系统资源。
专利《一种多CPU互斥的方法》(申请号200610021196.8)提出了一种读操作不用通过互斥机制,像独占资源一样直接访问的方法,该专利的主要方案是:a,确定共享信息的基本数据单位,并用指针指向它。b,执行写操作之前先在缓冲区填写好完整信息。c,通过改写指针的一条指令提交修改后的共享数据。d,读操作直接访问共享数据。
但此专利对使用情境做了如下限制:
1,指针赋值操作必须为原子指令,而这并不是所有CPU能够支持的。
2,规定了一个写操作提交到原数据资源释放的时间间隔T,读者或其他写者对共享资源的访问时间必须在时间间隔T内完成。
上述专利没有对写者之间的数据一致性做出保证,使用的限制条件极大的约束了该方法的应用范围,尤其是第2条,几乎限制了只有某些特殊情况的才能使用此技术,因为读操作或者写操作对共享资源的最大访问时间只有在很少的特殊情况下才能确定,而如果时间间隔T设置的时间过长,则会造成对系统资源的浪费。
发明内容
本发明的目的是提供一种对共享资源互斥访问的同步方法、装置和网络设备,降低系统开销,并提高系统的满足并发效率,使得多个读者和一个写者能够同时进行对共享资源的访问。
为实现上述目的,本发明提供了一种对共享资源互斥访问的同步方法,所述方法包括:
锁住锁一,将共享资源指针变量指向共享资源的原始副本,解开锁一;所述锁一为读写自旋锁;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京星网锐捷网络技术有限公司,未经北京星网锐捷网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910091209.2/2.html,转载请声明来源钻瓜专利网。