為什麼需要程序間的同步
因為如果沒有程序間的同步,那麼程式在執行時就會變得混亂,比如說工廠生產出乙個手機,你取乙個沒問題,但是如果出現了連著取乙個的情況,就會出現問題了。因為程序不配套,整個生產線就亂套了。再比如說,有五個哲學家進餐,他們一人面前放著乙個碗,它們的右邊都放著一根筷子,乙個哲學家餓了就會拿起左右各一根筷子吃飯。那 麼5個人都餓時,就會出現五個人都拿著一根筷子的情況,就都會餓死。說白了就是在沒有統籌安排的情況下所有程序亂運一氣,程式就會出錯。
程序間同步的原則
臨界資源就是那種雖然是共享但是不能多個程序同時使用的資源。
1在臨界資源沒有被占用的情況下允許申請使用資源的程序使用資源。
2在臨界資源被占用的情況下,使得請求使用資源的程序等待資源重新空閒。
3必須保證進入等待狀態的程序在有限的等待後能夠使用臨界資源。
4在等待資源時,處於等待狀態的程序需要讓出cpu資源。
執行緒同步
在程序中,多個執行緒併發的情況下也會出現多個程序併發時出現的問題,二者都是一樣的。
那麼我們也就需要用一些方法來解決執行緒同步的問題。
1互斥量:保證執行緒能夠互斥的使用臨界資源的乙個鎖。
2讀寫鎖:是為了應對多讀少寫,或者多寫少讀的情況所創造的乙個鎖。
3自旋鎖
4條件變數
小白日記 作業管理之程序排程
程序排程概述 程序排程是指計算機通過決策決定哪個程序優先使用就緒狀態的程序可以獲得cpu使用權,之所以有這個制度,也是因為在多道程式設計的環境下,計算機要對先讓哪個程序執行,後讓哪個程式執行作出選擇,要不然就程式就亂套了。程序排程有兩個步驟,第一步我們需要將舊程序的執行資訊保留,確保資訊不會丟失。然...
作業系統 程序管理之程序同步
程序同步 由程序非同步所匯出的概念。由於多道程式設計的非同步性,導致記憶體中的程序時走時停,以不可預知的速度前進 但某些情況下又要求固定某些程序的先後順序。所謂程序同步就是指程序之間的直接制約關係,具體體現在程序的執行順序上。程序互斥 是由於程序之間均需要訪問同一臨界資源,而臨界資源同一時間又只能允...
作業系統專欄 程序管理之程序同步
首先我們來引入乙個著名的生產者與消費者問題,來說明為什麼需要程序間的同步吧。當生產者,生產出東西投入緩衝區的時候,進行 1,當消費者從緩衝區取出的時候,進行 1。然後來簡要的說一下,1 1,到底是怎麼進行的。首先我們明白一點,緩衝是在cache上的,當我們操作緩衝區的時候,實際上是這三個步驟 1 r...