程序管理(程序概念與同步)

2021-09-14 03:34:16 字數 1689 閱讀 7600

前言:在早期的作業系統中在記憶體中只有乙個程式(作業),cpu一次執行乙個程式(作業),這是程式的順序執行。為了提高cpu的利用率現代作業系統中可以讓多個程式(作業)載入到記憶體中,這是程式(程序)的併發執行。

順序執行與併發執行

順序執行:顧名思義,按照程式的順序執行

併發執行:書上的定義是多個程序實體能在一段時間間隔內同時進行。說白了就是乙個程式還沒執行結束另乙個程式就開始執行了

兩個程式(程序)包含相同的**。注:順序執行為兩個程式,併發為兩個程序

p1: counter = counter+1

p2: counter = counter+1

順序執行過程:

得到的counter的值為2

從倆個圖中可以看出在r1暫存器中資訊沒有賦予counter,便進行了p2程序,此時couter仍是0,p1與p2執行完最後輸出counter等於1

程式這個概念難以描述兩個在執行的程序(兩個程式都是counter=counter+1),因此引入了程序這個概念

從而推出了程序組成部分

從圖中就可以看出為什麼pcb(程序控制塊)是作業系統中最重要的資料結構,因為長啊,哈哈開個玩笑,因為儲存了每個程序執行的資訊,也是和程式最大的區別。

繼續上述的討論,兩個程式都是對counter+1的訪問,最後要得出的正確結果應該是2,而在併發執行中得出的結果是1,因為cpu是取指令執行指令的,而併發的時候指令是隨意組合的,因此為了避免結果的不確定性,引入了程序同步的概念,首先看兩個概念

在本例中counter便為共享資源,counter=counter+1便為臨界區,那麼程序同步主要幹了什麼事兒呢?

首先看第乙個任務,互斥方式,何為互斥,說白了就是我p1訪問counter的時候,你p2不能訪問,也就是等p1中counter=counter+1執行完,再執行p2的,那就有乙個問題這不跟順序執行一樣了嘛?對的,對於臨界區**相當於順序執行,那麼問題又來了,那要併發還有還有什麼用,這就引入了執行緒的概念,程序中有一到多個執行緒,這個執行緒阻塞,可以執行其他的執行緒。

回來接著看如何實現互斥,是通過訊號量機制實現的,一般的訊號量機制有三種

程序管理六(程序的同步與互斥三)

雖然訊號量及其p v操作是一種既方便又有效的程序同步工具,但如果採用這種同步機制來編寫併發程式,對於共享變數及訊號量變數的操作將被分散與各個程序中,有如下缺點 a.程式易讀性差。因為要了解對於一組共享變數及訊號量的操作是否正確,則必須通讀整個系統或者併發程式。b.不利於修改和維護。因為程式的區域性性...

程序與多程序概念

程序 process 是計算機中程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統機結構基礎。狹義定義 程序是正在執行的程式的例項。在同一時間,同一作業系統中有兩個或兩個以上的程式處於執行狀態。php 提供了程序控制的擴充套件 pcntl。pcntl 實現了unix ...

程序同步(一) 程序同步相關概念

在os中引入程序後,雖然提高了資源的利用率和系統吞吐量,但是由於程序的非同步性將會給系統造成混亂,尤其是他們在爭搶臨界資源時。當多個程序去爭用共享變數 鍊錶時,可能導致資料處理出錯。程序同步的任務就是對多個相關程序在執行次序上進行協調,使得併發執行的程序之間能有效地共享資源和相互合作,從而使程式的執...