一种多用户访问权限控制的实现方法

阅读: 评论:0

著录项
  • CN02158296.3
  • 20021221
  • CN1510867
  • 20040707
  • 华为技术有限公司
  • 范云松;游红宇
  • H04L12/24(2006.01)
  • H04L12/24(2006.01) H04Q3/545(2006.01) H04Q3/64(2006.01)

  • 广东省深圳市科技园科发路华为用户服务中心大厦知识产权部
  • 中国,CN,广东(44)
摘要
一种多用户访问权限控制的实现方法,在主机中有一公共资源,多个用户需要独占地使用该资源时,为该公共资源设置一个标志字,该标志字的若干比特位组成一个标识,每一个用户对应一个标识;当某用户需要使用该公共资源时,将其对应的标识改写为设置状态,读取整个标志字,如果该标志字中只有该用户对应的标识被设置,则申请成功,使用资源,使用完毕后归还,将对应的标识恢复为初始状态;否则申请不成功,将对应的标识恢复为初始状态,延迟一段时间再申请。对于更多用户的情况采用多级级连的方式。整个过程不需主机来控制,不会发生中断,极大的减少了主机负担和对系统资源开支。
权利要求

1、一种多用户访问权限控制的实现方法,在主机中有一公共资源,多个用户需 要独占的使用该资源,其特征在于:

A、当用户较少时,包括如下步骤:

(A1)在主机内存中,为该公共资源设置一个标志字,该标志字的若干比特位组成一 个标识,每一个用户对应一个标识;

(A2)当某用户需要使用该公共资源时,将其对应的标识改为设置状态;

(A3)读取整个标志字,如果该标志字中只有该用户对应的标识被设置,则申请成 功,进行步骤A4;否则申请不成功,将对应的标识恢复为初始状态,延迟一段时间再 申请,重复开始执行步骤A2;

(A4)申请成功的用户使用这一公共资源,使用完毕后,将对应的标识恢复为初始状 态,结束流程;

B、当用户更多时,包括如下步骤:

(B1)将用户分为M组,设置M个标志字,这些标志字为第一级标志字,标志字的若 干比特位组成一个标识,每组用户对应一个第一级标志字,每一用户对应该标志字的 一个标识;

将第一级标志字分成N组,再设置N个标志字,这些标志字为第二级标志字,标志 字的若干比特位组成一个标识,每组第一级标志字对应一个第二级标志字,每一个第 一级标志字对应该第二级标志字的一个标识;

以此类推,第K级标志字为该公共资源的标志字;

其中:M为大于1的自然数;N为自然数;K为大于1的自然数;

(B2)当某用户需要使用该公共资源时,将其对应第一级的标识改写为设置状态;

(B3)读取整个该第一级标志字;如果该第一级标志字中只有该用户对应的标识被设 置,则第一级申请成功,进行步骤B4,继续进行第二级的申请;否则将其该写的标识 恢复为初始状态,延迟一段时间再申请,重复开始执行步骤B2;

(B4)第一级申请成功的用户,将其第一级标志字所对应的第二级标志字中的相应标 识改写为设置状态;

(B5)读取整个该第二级标志字;如果该第二级标志字中只有该用户对应的标识被设 置,则第二级申请成功,进行步骤B6;否则将其改写过的第一级和第二级的标识恢复 为初始状态,延迟一段时间再申请,重复开始执行步骤B2;

(B6)以此类推,如果直到第K级申请成功,则该用户使用这一公共资源,使用完毕 后,将改写过的所有标识恢复为初始状态,结束流程;如申请不成功,则将其改写过 的所有标识恢复为初始状态,延迟一段时间再申请,重复开始执行步骤B2。

2、根据权利要求1所述的多用户访问权限控制的实现方法,其特征在于,所述的 标志字为32比特或16比特。

3、根据权利要求2所述的多用户访问权限控制的实现方法,其特征在于,所述的 标志字为无符号长整型或无符号短整型,或整型。

6、根据权利要求2或4所述的多用户访问权限控制的实现方法,其特征在于,所述 各级标志字与各用户对应的标识为如下组合的任一种:32比特与8比特,或32比特与 16比特,或16比特与8比特。

7、根据权利要求6所述的多用户访问权限控制的实现方法,其特征在于,所述各 级标志字与各用户对应的标识的组合的选择是根据下一级需申请的用户数来确定的。

4、根据权利要求1所述的多用户访问权限控制的实现方法,其特征在于,所述备 用户对应的标识为8比特或16比特。

5、根据权利要求4所述的多用户访问权限控制的实现方法,其特征在于,所述各 用户对应的标识为字符型或无符号短整型。

8、根据权利要求1所述的多用户防问权限控制的实现方法,其特征在于,各个用 户所述的延迟时间为各不相同的时间。

9、根据权利要求1所述的多用户访问权限控制的实现方法,其特征在于,各个用 户所述的延迟时间采用随机数产生器产生一个数字m,延迟时间为m条机器指令时间。

说明书
技术领域

技术领域

本发明涉及通信领域,具体涉及一种公共资源的多用户访问权限的控制方式。

背景技术

在电信类设备中最常见的模块结构如图1所示,其特点是:一个主机带多个用户 (这里的用户可以是单板或其他),主机存放有供多个用户使用的资源,用户可以访 问主机资源。在这类结构中多个用户随时都可能申请主机的同一个资源,而当一个资 源不能同时被两个用户使用时,就涉及到一个主机资源使用权分配问题,要对多个要 使用同一资源的用户进行访问权限的控制。通常的分配、控制是如下方式实现的:

1、多个用户先后或同时向主机发出资源使用申请消息,然后等待;

2、主机收到多个用户的申请消息后查看该资源是否被其他用户占用,如果未被占 用,则在资源上设置占用标记,再判断提出申请的用户谁的优先级更高,然后通知 最高优先级的用户使用资源,对其他用户则返回申请失败消息。

3、用户收到使用许可后使用资源,使用完毕后发送消息通知主机。

4、主机收到消息后在资源上清除占用标记,以便其他用户使用。

这种解决方法存在的问题是:

主机花费时间来配合某一资源在各个用户之间分发,来回交互比较多,比较慢, 也给主机增加了很大的负担。

在前面所述的现有资源分配的方法中,每一次分配资源主机需要两次进入中断 (在用户申请时和上报使用完毕消息时),用户需要一次进入中断(资源使用权下发 时),中断导致任务切换,这个开支在IP流量大的时候十分惊人,使主机难以负荷。

发明内容

本发明的目的在于提供多用户访问权限的控制方法,该方法使公共资源的分发和 维护都由用户完成,主机不再参与,取消了主机地负担,并且只需要用户极小的开 支。

本方法的内容如下:

在主机中有一公共资源,多个用户需要独占的使用该资源,

A、当用户较少时,包括如下步骤:

(A1)在主机内存中,为该公共资源设置一个标志字,该标志字的若干比特位组成一 个标识,每一个用户对应一个标识;

(A2)当某用户需要使用该公共资源时,将其对应的标识改为设置状态;

(A3)读取整个标志字,如果该标志字中只有该用户对应的标识被设置,则申请成 功,进行步骤A4;否则申请不成功,将对应的标识恢复为初始状态,延迟一段时间再 申请,重复开始执行步骤A2;

(A4)申请成功的用户使用这一公共资源,使用完毕后,将对应的标识恢复为初始状 态,结束流程;

B、当用户更多时,包括如下步骤:

(B1)将用户分为M组,设置M个标志字,这些标志字为第一级标志字,标志字的若 干比特位组成一个标识,每组用户对应一个第一级标志字,每一用户对应该标志字的 一个标识;

将第一级标志字分成N组,再设置N个标志字,这些标志字为第二级标志字,标志 字的若干比特位组成一个标识,每组第一级标志字对应一个第二级标志字,每一个第 一级标志字对应该第二级标志字的一个标识;

以此类推,第K级标志字为该公共资源的标志字;

其中:M为大于1的自然数;N为自然数;K为大于1的自然数;

(B2)当某用户需要使用该公共资源时,将其对应第一级的标识改写为设置状态;

(B3)读取整个该第一级标志字;如果该第一级标志字中只有该用户对应的标识被设 置,则第一级申请成功,进行步骤B4,继续进行第二级的申请;否则将其该写的标识 恢复为初始状态,延迟一段时间再申请,重复开始执行步骤B2;

(B4)第一级申请成功的用户,将其第一级标志字所对应的第二级标志字中的相应标 识改写为设置状态;

(B5)读取整个该第二级标志字;如果该第二级标志字中只有该用户对应的标识被设 置,则第二级申请成功,进行步骤B6:否则将其改写过的第一级和第二级的标识恢复 为初始状态,延迟一段时间再申请,重复开始执行步骤B2;

(B6)以此类推,如果直到第K级申请成功,则该用户使用这一公共资源,使用完毕 后,将改写过的所有标识恢复为初始状态,结束流程;如申请不成功,则将其改写过 的所有标识恢复为初始状态,延迟一段时间再申请,重复开始执行步骤B2。

各级标志字为32比特或16比特,所述的标志字为无符号长整型或无符号短整型,或 整型。各用户对应的标识为8比特或16比特,各用户对应的标识为字符型或无符号短整 型。各级标志字与各用户对应的标识为如下组合的任一种:32比特与8比特,或32比特 与16比特,或16比特与8比特。各级标志字与各用户对应的标识的组合的选择是根据下 一级需申请的用户数来确定的。

各个用户所述的延迟时间为各不相同的时间。

各个用户所述延迟时间采用随机数产生器产生一个数字m,延迟时间为m条机器指 令时间。

采用本发明的方法,主机只需提供一块内存来存放标志字,对于用户的申请,主 机不需做任何操作,极大的减少了主机负担;同时,采用原子操作,用户侧的操作也 非常简洁快速整个的申请过程只需要执行几条机器指令的时间,可以忽略不计,与以 前的中断和任务切换相比,估计为1/100的数量级;并且采用级连的方式,可以管理更 多的用户使用资源。当两个用户同时申请发生冲突时,两个用户都退出申请,等待延 时后再申请,并且延时的时间是不同的,一般不会发生被两个用户再度冲突的情况;

附图说明

图1电信类设备常见模块图;

图2是本发明所述方法的一个具体实施例流程图;

图3是本发明采用两级级连竞争的一种示意图;

图4是本发明采用两级级连竞争的另一种示意图;

图5是本发明一实施例多加密卡系统示例框图。

具体实施方式

本发明的主要步骤为:为公共资源设置一个标志字,可以为32比特或16比特,例 如为32位的无符号长整型(ULong)、整型(int)、16比特的无符号短整型 (UShort),每个用户对应其中的若干比特位(即标识),可以为8比特或16比特, 例如为8比特的字符型(UChar)、16比特的无符号短整型(UShort);其组合有3种: (32比特,8比特)、(32比特,16比特)、(16比特,8比特)。

例如:采用(32比特,8比特)的组合,标志字为ULong型,每个用户对应标识 为UChar型,实现最多4个用户的竞争,如图2所示的流程,要申清资源的用户改写其 对应的UChar标识,再读取整个ULong,判断是否只有本用户对应的UChar被设置,如 果是,则申请成功,使用资源,使用完毕后归还,并清除对应的UChar;如果为否 则申请不成功,清除对应的UChar标志,延迟后再申请。标志字与标识的组合如采用 (32比特,16比特)、(16比特,8比特)的组合实现2个用户的竞争。

用户更多时可以采用多级级连竞争的方式,标志字与标识的组合可以根掘实际的 用户数量来灵活确定的。例如,图3所示为2级级连竞争的示意图,最多为8个用户进行 竞争:用户分为2组,设置2个第一级标志字,第一级标志字为32比特的ULong型,每 个用户对应的标识为8比特的UChar型,此时,第一级标志字只有2个,所以不用再分 组,设置一个第二级标志字,即为资源的标志字,这个第二级标志字可以采用(16比 特,8比特)的组合,即UShort型和UChar型,进行2竞争1。用户按照前段介绍的步 骤,在第一级申请成功之后,改写其第一级标志字ULong对应的第二级标志字 UShort的UChar标识,再读取整个第二级标志字UShort,如果只有该用户的对应的 UChar标识被设置,则申请成功,使用资源后,清除其对应的2级的UChar标识,如果 为否,则没有申请成功,清除其对应的2级的UChar标志,延迟后再申请。图4也为一 种2级级连竞争的示意图,可以最多为16个用户进行竞争。如果有更多的用户,依照此 方法类推,设置更多的级别即可。

需要说明的采用32比特、16比特、8比特的原因是,在常见的32位系统中对 ULong(32比特)、UShort(16比特)和UChar(8比特)的读和写操作都是原子操 作。

下面介绍原子操作和非原子操作:

原子操作的操作过程不会被打断,是完整的操作。比如:在32位计算机系统里对 长整型(long)、整型(int)、短整型(short)和字符型(char)数据的操作属于原子 操作,也就是说无论有多少个主设备在同时操作一块内存,但是任何一个主设备对这 个内存中的任何一个long、int、short和char型数据的一次读和写操作都不会被其他主设 备打断,其他主设备的操作只能在之前或者之后被插入。(ULong和long是一回事, 只不过后者把最高bit位看成符号位而已,其他也是如此)

非原子操作,对数据的操作过程中可能被其他主设备打断,而且该主设备可能操 作这个数据,则该操作不能保证完整性。比如32位系统里面操作一个64比特数据不足 原子操作,因为操作完第一个32比特数据后可能被别的主设备插入一个操作,该操作 可能操作到这个64比特数据。

具体的一个例子:A设备要传送一个64比特的数据(假设是0x12345678 87654321)给B设备,方法是写一个64比特的数据到内存中的两个32比特的无符号长 整型(ULong)位置(未使用之前假定为0x00000000 00000000),然后B设备从内存 这两个32比特的ULong位置中读取该数据。操作过程可能是这样:

1.A设备写0x12345678到高位的32比特的ULong位置,内存值为0x12345678 00000000;

2.B设备读取高位的32比特的ULong位置,得到0x12345678;

3.B设备读取低位的32比特的ULong位置,得到0x00000000,总共就得到了 0x12345678 00000000;

4.A设备写0x87654321到低位的32比特的ULong位置,内存值为0x12345678 87654321;

可见,A设备正确地写人了数据,但是B设备却没有读到正确的数据。

又比如“或内存”不是原子操作,这个操作实际上是分两步进行,第一步是读数 据,第二步是把“或”之后的数据写回,在这个读和写操作之间可能被别的主设备插 入操作,该主设备可能操作这里的数据,所以这个“或”操作是不完整的。此外,对 任何数据结构的操作都是非原子操作。

以下将用多加密卡系统为例进一步具体来说明本发明。

在路由器中,在IPSec(IP协议安全扩展)协议中要求每个连接对应一个反重播序 列号,路由器一般需要多个加密处理卡来处理同一个连接的IP包,达到加密能力增倍 的目的(各个加密卡设置在各自的单板上)。反重播序列号保存在主机中,每个加密 卡对该反重播序列号有可能进行修改,然后再放回主机,所以在同一时间只能由一个 加密卡处理,在多个加密卡之间轮流使用,加密卡之间没有通信通道,以前只能通过 主机进行传递、管理,使主机的任务更加繁重。

如图3所示,设有4块加密卡,通过PCI(Peripheral Component Interconnect,外 设部件互连)总线与主机相连,主机内存中设一标志字,采用ULong型,Ulong由4个 UChar,每个UChar对应一个加密卡,该UChar被设置表示该加密卡试图申请主机中的 反重播序列号。

假设要申请的加密卡为2号,中请的步骤为:

1、写UChar2为0xff;

2、然后读整个ULong:

如果为0x00_ff_00_00,说明没有其他的加密卡试图申请,申请成功,可以获取反 重播序列号,使用完毕后,清除UChar2;

如果为0x00_ff_00_ff,说明4号加密卡也试图申请序列号,2号加密卡申请失败, 清除UChar2为0x00,延迟一定时间再次申请。

下面详细介绍使用本方法遇到的各种情况:

(1)不发生冲突的情况:

1.加密卡1写UChar1

2.加密卡1读取ULong,发现申请成功

3.加密卡1使用序列号

4.加密卡2写UChar2

5.加密卡2读取ULong,发现冲突

6.加密卡2放弃,清UChar2

7.加密卡1使用序列号完毕,归还序列号,清UChar1

(2)发生冲突的情况

共有如下三种情况:

情况1:

1.加密卡1写UChar1

2.加密卡2写UChar2

3.加密卡1读取ULong,发现冲突

4.加密卡2读取ULong,发现冲突

5.加密卡1放弃,清UChar1

6.加密卡2放弃,清UChar2

结果加密卡1和2申请均失败,他们都需要延迟一段时间后重新申请。

情况2:

1.加密卡1写UChar1

2.加密卡2写UChar2

3.加密卡1读取ULong,发现冲突

4.加密卡1放弃,清UChar1

5.加密卡2读取ULong,发现申请成功

6.加密卡2使用,直到最后清UChar2

结果加密卡2申请成功,加密卡1需要延迟后重新申请。

情况3:

1.加密卡1写UChar1

2.加密卡2写UChar2

3.加密卡2读取ULong,发现冲突

4.加密卡2放弃,清UChar2

5.加密卡1读取ULong,发现申请成功

6.加密卡1使用,直到最后清UChar1

结果加密卡1申请成功。

根据如上三种情况的分析,无论怎样均不会出现两块加密卡同时申请到序列号的 错误。

假定两个加密卡同时申请发生冲突,结果都申请失败,则每个加密卡都需要延迟 一段时间后再申请。本方法中每个加密卡延迟不同的时间,避免下次又同时申请发生 冲突。如果每个加密卡延迟的时间固定为10、20、30…条机器指令,有时候可能继续 冲突,反复申请可能影响总线效率。所以可以用随机数产生器生成一个10~100之间的 数字m,以m条机器指令时间来作为延迟时间。

对于支持更多的加密卡可以采用级连的方式实现,在此不过多描述。

采用本方法之后,整个过程不需主机来控制,极大的减少了主机负担,整个过程 只需写一次主机内存、读一次主机内存,申请失败再写一次内存,这只需要执行几条 机器指令的时间,系统资源开支极小。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本发明揭示的技术范围内,可轻易想到的变化 或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要 求书的保护范围为准。

本文发布于:2023-04-13 12:11:25,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/86479.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图