您的位置:控制工程论坛网论坛 » 软件与程序 » 软件编程经典培训实例 11、防止资源的重复释放

xilinxue

xilinxue   |   当前状态:在线

总积分:16186  2024年可用积分:0

注册时间: 2008-06-26

最后登录时间: 2020-03-22

空间 发短消息加为好友

软件编程经典培训实例 11、防止资源的重复释放

xilinxue  发表于 2008/11/12 18:45:44      1001 查看 2 回复  [上一主题]  [下一主题]

手机阅读


  案例 1

       当进行大话务量呼叫时,在统计代码中出现AIE收到UNBOOK CIC消息时,发现自身电路状态为空闲,出现一个断言。这说明AIE电路电路被误释放了。
 这个问题出现的原因有以下几种:
 1. RR可能发错了电路号,导致AIE状态错误。
 2. AIE可能发起资源核查,失败后将本控制表项释放了。
 3. RR可能发起了重复释放操作,导致AIE的某个表项连续收到两个UNBOOK消息。
 分析完了可能的情况,就要一一分析定位。
 在可能原因一发生的情况下,RR发来的UNBOOK消息所带的AIR连接号和模块号会错误,导致我们会出现断言。而在测试数据结果文件中,没有出现这个断言,因此可能原因一不成立。
 在可能原因二发生的情况下,AIE收到资源核查失败消息的数目应该不是零。但是实际情况下统计结果中收到资源核查失败消息的个数为零,说明情况二也不成立。
 由上分析,这个问题只可能是由于RR重复释放造成的。但是为何会发生重复释放,这需要进行进一步分析。
 从呼叫的正常流程来看,是不会产生重复释放的,因此我们怀疑该问题与异常流程有关。从统计代码中查找异常流程,发现该次统计中BSC内切换流程多次出现问题,具体原因是由于切换过程中在目标小区申请不到信道,产生切换失败造成的。因此集中研究这个流程,发现存在问题如下:
 当原小区向目标小区发送内部切换请求消息时,带来了AIR和AIE的各项信息,而目标小区收到这些信息后就将之保存在自身的占用资源中。如果目标侧申请信道失败,就会向源侧发内部切换拒绝消息,而后产生本地释放。由于在释放前目标侧RR没有将占用资源中的AIR和AIE信息清除,因此导致重复释放时对AIR和AIE发起了释放操作。由于AIR释放时有保护机制,所以不会产生问题,而AIE没有保护机制,新CCB就将AIE电路释放掉了。而后当老CCB在通话结束后发起释放时,就产生了重复释放。
 从上面分析可以看出,这个问题是由于RR释放流程的错误造成的,因此,我们要对此加以修改,在新CCB释放前将AIR和AIE信息从预占资源中清除。
        RR的释放是一个非常复杂的过程,如何正确的整理资源,确保资源的合理释放,这是摆在我们面前的一个艰巨的问题,我们要仔细分析各种可能发生的情况,正确释放各种资源,即不会吊死资源,也不会产生重复释放。

1楼 0 0 回复
  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2008/11/12 18:45:44

      讲解的都是很实用,而且也是很容易不在意的地方,在写代码的时候要非常的小心
    2楼 回复本楼

    引用 xilinxue 2008/11/12 18:45:44 发表于2楼的内容

总共 , 当前 /