[发明专利]一种锁机制的加锁方法、解锁方法和实现方法有效
| 申请号: | 200810066474.0 | 申请日: | 2008-04-07 |
| 公开(公告)号: | CN101256509A | 公开(公告)日: | 2008-09-03 |
| 发明(设计)人: | 万鹏 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | G06F9/46 | 分类号: | G06F9/46 |
| 代理公司: | 深圳市君胜知识产权代理事务所 | 代理人: | 王永文 |
| 地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 机制 加锁 方法 解锁 实现 | ||
技术领域
本发明涉及无信号量的锁实现技术,尤其涉及的是,在嵌入式内存数据库系统中,一种锁机制的加锁方法、解锁方法和实现方法。
背景技术
嵌入式主内存数据库由于具有极强的实时性而受到越来越多的关注,嵌入式数据库强实时性来自于内存事务并发,并发的实现主要靠引入锁机制。
目前各种主内存数据库锁系统的实现都采用了信号量的方式,信号量方式的缺点是获取和释放信号量的时间相对较长,特别是在嵌入式系统中,信号量的等待意味着任务的切换,这是非常耗费时间的。
目前嵌入式系统实现锁机制主要采用以下方法:
1、采用信号量机制,一个最小单位设置一个信号量,这样一个锁的加锁可能需要很多个信号量的获取,但是获取这些信号量需要大量的时间。
2、采用非信号量进程延迟机制,但是在优先级抢占系统中,该方法无法正确运行。
3、采用任务等待信号量机制,该方法实现了一个锁只需要一个信号量。
嵌入式实时操作系统vxworks,在任务调度的基础上增加了进程调度的系统,习惯称为二次调度系统,其中,一个进程等待信号量的时候会阻塞整个任务,导致同一任务下的其他进程无法完成事务,造成死锁,因此上述现有方法均无法在优先级抢占调度的二次调度系统中实现。
因此,现有技术存在缺陷,需要改进。
发明内容
本发明所要解决的技术问题是在优先级抢占调度的二次调度系统中,如何实现锁机制。
本发明的技术方案如下:
一种锁机制的加锁方法,其包括以下步骤:A1、初始化各资源的预约数分别为预设值,用于标记各资源的状态为未预约;A2、申请各资源时,对所申请各资源的预约数进行加一操作,将当前进程相关的锁节点加入到锁等待队列,并判断是否全部申请成功,否则执行A3;其中,所述锁等待队列为各锁节点分别设置以下项:进程标识、待申请资源、申请成功资源和待调度队列标识;A3、对于申请失败的各资源,逆向搜索所述锁等待队列,判断在其中是否搜索得到所需的资源,是则在搜索结果相关锁节点的待调度队列标识项,添加当前进程的进程标识,并将搜索得到的资源添加到当前进程相关的锁节点的待申请资源项;A4、判断申请失败的各资源是否全部搜索完成,否则继续执行A3。
所述的加锁方法,其中,步骤A1具体执行以下步骤:设置资源列表,用于管理各资源的预约数;初始化所述资源列表的各资源的预约数分别为预设值;并且,步骤A2中,申请各资源时,是在所述资源列表中,对所申请各资源的预约数进行加一操作。
一种锁机制的解锁方法,其包括以下步骤:B1、按顺序将资源分配给锁等待队列中的锁节点;其中,所述锁等待队列为各锁节点分别设置以下项:进程标识、待申请资源、申请成功资源和待调度队列标识;B2、对于某一锁节点所申请的各资源,判断其是否全部申请成功,是则解阻塞其对应的进程,把对应资源的预约数减一。
所述的解锁方法,其中,步骤B1之前还执行以下步骤:B0、判断所述锁等待队列的头节点无效,或者判断事务已经执行到最后,则执行步骤B1。
一种锁机制的实现方法,其包括以下加锁步骤和解锁步骤;
所述加锁步骤包括以下步骤:C1、初始化各资源的预约数分别为预设值,用于标记各资源的状态为未预约;C2、申请各资源时,对所申请各资源的预约数进行加一操作,将当前进程相关的锁节点加入到锁等待队列,并判断是否全部申请成功,否则执行C3;其中,所述锁等待队列为各锁节点分别设置以下项:进程标识、待申请资源、申请成功资源和待调度队列标识;C3、对于申请失败的各资源,逆向搜索所述锁等待队列,判断在其中是否搜索得到所需的资源,是则在搜索结果相关锁节点的待调度队列标识项,添加当前进程的进程标识,并将搜索得到的资源添加到当前进程相关的锁节点的待申请资源项;C4、判断申请失败的各资源是否全部搜索完成,否则继续执行C3;
所述解锁步骤包括以下步骤:C5、按顺序将资源分配给锁等待队列中的锁节点;其中,所述锁等待队列为各锁节点分别设置以下项:进程标识、待申请资源、申请成功资源和待调度队列标识;C6、对于某一锁节点所申请的各资源,判断其是否全部申请成功,是则解阻塞其对应的进程,把对应资源的预约数减一。
所述的实现方法,其中,步骤C1具体执行以下步骤:设置资源列表,用于管理各资源的预约数;初始化所述资源列表的各资源的预约数分别为预设值;并且,步骤C2中,申请各资源时,是在所述资源列表中,对所申请各资源的预约数进行加一操作;并且,步骤C6中,把对应资源的预约数减一时,是在所述资源列表中,将对应资源的预约数进行减一操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810066474.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种防治辣椒白粉病的生物制剂及其制备方法和应用
- 下一篇:工业滤水装置





