程序同步:
定義:程序之間這種相互合作、協同工作的關係稱為程序的同步。
制約關係:直接制約
程序互斥:
臨界資源:也稱獨佔資源,是指在一段時間內只允許乙個程序訪問的資源。例如印表機,磁帶機,也可以是程序共享的資料、變數等。
定義:當多個程序因為爭奪臨界資源而互斥執行稱為程序的互斥。
制約關係:間接制約。
臨界資源處理不當帶來的問題
1.執行結果錯誤
2.死鎖
在併發系統中,程式執行結果的正確性不僅取決於自身的正確性,還與其在執行過程中能否正確的與其他程序實施同步或互斥有關。必須對臨界資源的訪問進行控制。
互斥解決方案:
*關中斷法(開關中斷指令)
也稱為硬體鎖,是實現互斥最簡單的方法
做法:每個程序在進入臨界區後先關中斷,遮蔽其他請求,在離開之前再開中斷。
優點:實現簡單
缺點:中斷被關閉後,cpu不再響應任何外部事件,此時程序將會獨佔cpu,直至開啟中斷,如果中斷關閉時間過長,會造成嚴重後果,因此把開關中斷的權利交給使用者程序是很不明智地的。
*鏡變數法(測試和設定指令)
做法:設定乙個共享(鎖)變數w,初值為0.當乙個程序想進入其他臨界區時,它首先測試這把鎖。如果鎖的值為0,則程序將其置為1並進入臨界區。若鎖已經為1,則程序等待直到變為0.於是,0就表示臨界區內沒有程序,1表示已經有某個程序進入了臨界區。
同步機制應遵循下述四條準則
*空閒讓進
*忙則等待
*有限等待
*讓權等待
程序間關係
1 程序組 程序組是乙個或多程序的集合。通常,它們同一作業相關聯,可以接收來自同一終端的各種訊號。每個程序組有乙個唯一的程序組id。每個程序都可以有乙個組長程序。組長程序的標識是,其程序組id等於其程序id。組長程序可以建立乙個程序組,建立該組中的程序,然後終止。只要在某個程序組中乙個程序存在,則該...
程序間的關係
程序間有什麼關係呢?我們都知道使用fork函式建立程序是一次呼叫兩次返回。父程序返回子程序的程序id 非0 子程序返回0值。很顯然,使用fork建立出來的兩個程序是父子關係。那如果兩個程序都是同乙個父程序建立出來的,它們是什麼關係呢?兄弟 關係。那麼,兩個或者多個程序之間,都有什麼關係呢?在介紹程序...
Linux程序間關係
程序組 每乙個程序除了自己的程序id,還有自己的程序組id。程序組由乙個或多個程序組成。通常它們與作業相關聯,可以接受同一終端的各種訊號。在程序組中程序id與程序組id相同的為程序組長 組長程序可以建立乙個程序組,建立該組中的程序,然後終止。只要在某個程序組中乙個程序存在,則該程序組就存在,這與其組...