作業系統 程序互斥 硬體方案

2021-09-27 12:36:39 字數 870 閱讀 6909

原則:程序進入臨界區時關中斷,退出臨界區時開中斷。

為什麼要採用關中斷?

關中斷是指在此中斷處理完成前,不處理其它中斷,這樣就可以保證程序不被中斷,從而保證了互斥性(不允許兩個以上的共享該資源的併發程序同時進入臨界區稱為互斥),因此採用關中斷。

缺點?

①將禁止一切中斷的權利賦予普通使用者,若使用者沒有開放中斷,系統的正常執行將受到影響。

②不適合於多處理機系統,因為乙個程序只能禁止本cpu的中斷,其它cpu上的程序仍然會使用互斥資源。

乙個程序使用某個臨界資源之前必須完成下列操作:

1.考察鎖位的值

2.若原來的值是為「0」,將鎖位置為「1」(占用該資源)

若原來值是為「1」,該資源已被別人占用,則轉到第1步

3.當程序使用完資源後,將鎖位置為「0 」 ,稱為開鎖操作

bool ts

(bool &x)

else

}

bool s = true; 

process pi()

void

swap

(bool &a,bool &b)

bool lock false;

//false表示當前資源可用

process pi()

while

(keyi)

;swap

(keyi,lock)

;//開鎖

}

作業系統(二十)程序互斥的硬體實現方法

目錄 2.3.3程序互斥的硬體實現方法 2.3.3.1 中斷遮蔽 2.3.3.2 testandset指令 tsl指令 2.3.3.3 swap指令 在本系列的第五節曾經提到過中斷的概念,並說中斷是作業系統奪回cpu的唯一方式,在這裡中斷遮蔽的想法與原語原子性保證的想法是一致的,即將臨界區放在開中斷...

作業系統互斥程序問題

假設有n個程序,共享乙個空間 1 當共享區只允許乙個程序占用時候,則訊號量 mutex 的取值範圍 2共享區允許m個程序占用,訊號量取值範圍 1,互斥訊號量初值為 1 變化範圍為 n l 1 當沒有程序進入互斥段時,訊號量值為 1 當有 1 個程序進入互斥段但沒有程序等待進入互斥段時,訊號量值為 0...

作業系統程序互斥演算法

程序互斥原則模板 1 互斥性 列舉所有情況,乙個程序進入臨界區後,另乙個程序不能進入臨界區 2 進展性 列舉乙個程序要求進入臨界區後,能夠進入臨界區和多個程序要求進入臨界區後,能有乙個進入臨界區 3 有限等待性 乙個程序離開臨界區後,不會讓該程序再度進入臨界區,而是讓其他程序也能夠進入臨界區 int...