大型机汇编(HLASM)之多进程指令CS 和 CDS

来源:互联网 发布:简单的java项目实例 编辑:程序博客网 时间:2024/06/06 10:00

   大型机汇编语言中的多进程处理是通过某些特殊指令来完成的,比如本文的CS(compare and swap)和CDS(compare double and swap),下面详细介绍其功能。

   在多进程环境中,比如在CICS环境下,某些transaction会被多个task调用,这种情况下某些全局变量(比如counter,flag),就可能同时被多个task同时修改。。。

   现在介绍的CS 和CDS指令就是为此功能而设计的,即如何在多进程中实现序列化更改或者怎么实现锁机制。

 

         ICM   R7,B'1111',0(R4)  put original counter value into R7     
LOOPCTR  LR    R8,R7             set up one copy to modify           
         LA    R8,1(R8)          + 1                                  
         CS    R7,R8,0(R4)       update the counter in storage          
         BC    4,LOOPCTR         if the original value destroyed(CC=1), loop 

 

上面这段代码的功能就是为了实现把0(R4)处的数值+1,具体流程为:

  1.先把数值move提取到一个寄存器R7里,以便比较是否在本task更改其数据的时候,其他tasks已经成功地更改了其数据

  2.设置个循环体,本循环体的目的就是实现能成功把0(R4)里的数值+1。

  3.如果+1更改成功则control继续往下走,否则一直执行循环体

CS指令翻译成伪代码如下:

    Lock the location 0(R4)                                                 
    If R7 == 0(R4)                                                          
         Store the value of R8 into 0(R4) and set the condition code to 0   
         // 0 indicates a successful update, and the program can proceed    
    Else                                                                    
         Load the value of 0(R4) into R7 and set the condition code to 1      
         // 1 indicates an unsuccessful update. which means 0(R4) 
         // had been changed between the time ICM executed and CS
    End-if                                                       
    Unlock the location 0(R4)

 

有问题请联系QQ349106216

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 剑三重制版卡顿怎么办 剑三客户端更新不动了怎么办 安装包安装失败怎么办有内存 qq飞车换手机了怎么办 qq飞车求婚失败戒指怎么办 改脸型皮肤会下垂怎么办 情侣关系弄僵了怎么办 用微信交话费没有到账怎么办 微信交错话费了怎么办 微信缴费交错了怎么办 微信支付被投诉怎么办 微信q币充值错误怎么办 微信充值流量充错了怎么办 微信延迟到账怎么办 移动流量充错了怎么办 qq充话费等待发货怎么办 qq充值话费没到账怎么办 电信话费冲错了怎么办 微信手机充错话费充空号怎么办 京东地址写错了怎么办 京东售后不退款怎么办 冲了话费不到账怎么办 币安维护充值怎么办 微信话费未到账怎么办 微信话费交错了怎么办 北京移动查话费余额怎么办 淘宝卖家客服无法联系怎么办? 微信支付月限额怎么办 微信超额20万怎么办 微信支付超额了怎么办 微信零钱超额了怎么办 微信的充值冲错了怎么办 有流量还扣话费怎么办 自动取款机充值到电子账户怎么办 淘宝qb充错了怎么办 q币冲错了人家不给怎么办 qq充值话费错号怎么办 qq充错号码了怎么办 qq交话费不到账怎么办 充错手机号码而且是空号怎么办 微信钱包充错话费怎么办