返回主页

[操作系统 P1784] 下表给出了整型信号量S的wait()和signal()操作的功能描述,以及采用开/关中断指令实现信号

 
学习人数: 579
 
正确率: 100%
答案解析

题目描述
未通过

下表给出了整型信号量S的wait()和signal()操作的功能描述,以及采用开/关中断指令实现信号量操作互斥的两种方法。

// 功能描述
Semaphore S;
wait(S){
    while(S <= 0);
    S = S-1;
}
signal(S){
    S = S+1;
}

// 方法1
Semaphore S;
wait(S){
    关中断;
    while(S <= 0);
    S = S-1;
    开中断;
}
signal(S){
    关中断;
    S = S+1;
    开中断;
}

// 方法2
Semaphore S;
wait(S){
    关中断;
    while(S <= 0){
        开中断;
        关中断;
    }
    S = S-1;
    开中断;
}
signal(S){
    关中断;
    S = S+1;
    开中断;
}

请回答下列问题。

(1) 为什么在wait()和signal()操作中对信号量S的访问必须互斥执行?

(2) 分别说明方法1和方法2是否正确。若不正确,请说明理由。

(3) 用户程序能否使用开/关中断指令实现临界区互斥?为什么?


上一题
下一题
加入错题本
个人笔记
已有1条笔记

登录后提交答案


暂无评论,来抢沙发