• 计算机系统(19)----- 进程互斥的硬件实现方法


    ----------文章参考自王道论坛视频

    一、进程互斥的硬件实现方法

    1.1 中断屏蔽方法

    利用 " 开 / 关中断指令 " 实现;

    关中断:

    关中断后即不允许当前进程被中断,也必然不会发生进程切换;

    开中断:

    直到当前进程访问完临界区,再执行开中断指令,才有可能别的进程使用处理机并访问临界区;

    优点:

    简单高效

    缺点:

    不适用于多处理机、只适用于操作系统内核程序、不适用于用户进程

    1.2 TestAndSet 指令

    简称 TS 指令,也有地方称为 TestAndSetLock 指令,或 TSL 指令;

    TSL 指令执行过程不允许中断,只能一气呵成:

    bool TestAndSet ( bool *lock ){
        bool old;
        old = *lock;
        *lock = true;
        retuen old;
    }
    
    while( TestAndSet( &lock ) );
    临界区代码 ……
    lock = false;
    剩余区代码 ……
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    优点:

    实现简单,无需像软件实现方法那样严格检查是否会有逻辑漏洞,适用于多处理机环境;

    缺点:

    不满足 " 让权等待 " 原则,暂时无法进入临界区的进程会占用 CPU 并循环执行 TSL 指令,从而导致 " 忙等 ";

    1.3 Swap 指令

    有的地方称为 Exchange 指令,或 简称 XCHG 指令,和 TS 指令几乎一样;

    Swap 指令执行过程不允许中断,只能一气呵成

    Swap ( bool *a , bool *b ){
       bool temp;
       temp = *a;
       *a = *b;
       *b = temp;
    }
    
    bool old = true;
    while( old == true )
       Swap( &lock, &old);
    临界区代码 ……
    lock = false;
    剩余区代码 ……
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    优点:

    实现简单,无需像软件实现方法那样严格检查是否会有逻辑漏洞,适用于多处理机环境

    缺点:

    不满足 " 让权等待 " 原则,暂时无法进入临界区的进程会占用 CPU 并循环执行 TSL 指令,从而导致 " 忙等 ";

  • 相关阅读:
    08 集群参数配置(下)
    渗透测试-内网横向MS-17010利用方法总结
    雪花算法详解(原理优缺点及代码实现)
    使用MyBatisPlus进行字段的自动填充
    leetcode 59. 螺旋矩阵 II
    centos 安装指定gcc版本(降级,通过yum方式)
    josef约瑟 时间继电器 ST3PA-A AC220V 带插座PF085A
    K8S环境下研发如何本地调试?kt-connect使用详解
    2057. 值相等的最小索引
    hackmyvm之gift
  • 原文地址:https://blog.csdn.net/jc15274630894/article/details/126085568