操作系統原理之進程同步遵循規則

操作系統引入了進程之後使得操作系統的進程可以併發的執行,極大的提高了系統資源利用率以及吞吐量,在進程併發執行的過程中,由於系統的資源有限,而併發的進程可能都需要系統資源,這樣極易引發併發的進程對系統資源的爭奪。
舉個例子 :兩個併發的進程都需要進行I/O操作,然而系統的I/O資源只有一個,這樣當其中一個進程搶奪到I/O資源之後,便進入其相關的阻塞隊列等待處理I/O操作,而另外一個進程由於未獲取I/O資源導致在處理機種無法進行之後的操作,只能進行忙等,這樣就造成了死鎖
爲了平衡這種衝突進而引入了進程同步的機制

1. 臨界資源以及臨界區

瞭解進程同步的相關概念之前,首先應該熟悉兩種基本概念:臨界資源/臨界區

  • 臨界資源
    簡單來說,就是可供進程使用的資源,例如打印機,磁帶機等硬件資源都 屬於臨界資源
  • 臨界區
    爲了使進程能夠互斥訪問臨界資源,而存放臨界資源的地方就稱爲臨界區

2.同步機制遵循規則

  • 空閒讓進
    無進程進入臨界區,說明臨界資源處於空閒狀態,所以其允許一個請求進入臨界區的進程進入臨界區,有效利用系統資源
  • 忙則等待
    當有進程進入臨界區,表面臨界資源正在被訪問,而其他申請進入臨界區的進程只能繼續等待,保證資源互斥訪問
  • 有限等待
    當要求訪問臨界資源的進程處於等待狀態時,並非一直等待下去
  • 讓權等待
    當進程由於自身原因不能進入臨界區時,應該釋放處理機,避免進程忙的

3.訪問臨界區的模型

在這裏插入圖片描述
當某個進程需要訪問臨界資源的時候,首先對訪問的臨界資源進行檢查,如果該臨界資源未被訪問,則該進程拿到該資源的權限,並設置設置臨界資源的權限

	/*訪問臨界資源的循環進程代碼*/
	while(true)
	{
		InputsSpace(); /*進入區*/
		CriticalSpace(); /*臨界區*/
		SignOutSpace();/*退出區*/
		SurplusSpace(); /*剩餘區*/
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章