日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进程的同步与互斥

發布時間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程的同步与互斥 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現代操作系統采用多道程序設計機制,多個進程可以并發執行,CPU在進程之間來回切換,共享某些資源,提高了資源的利用率,但這也使得處理并發執行的多個進程之間的沖突和相互制約關系成為了一道難題。如果對并發進程的調度不當,則可能會出現運行結果與切換時間有關的情況,令結果不可再現,影響系統的效率和正確性,嚴重時還會使系統直接崩潰。


多進程的系統中避免不了進程間的相互關系。進程間的關系主要有兩種:同步互斥


一、同步


同步關系,也成為直接制約關系。指系統中多個進程中發生的事件存在某種時序關系,需要相互合作,共同完成一項任務。這些線程需要在某些位置上協調他們的工作次序而等待、傳遞信息所產生的制約關系。進程間的直接制約關系來源于他們之間的合作。


一個很典型的例子就是公共汽車上司機和售票員直接的關系,如下所示:


再例如,輸入進程A通過單緩沖向進程B提供數據。當該緩沖區空時,進程B不能獲得所需數據而阻塞,一旦進程A將數據送入緩沖區,進程B被喚醒。反之,當緩沖區滿時,進程A被阻塞,僅當進程B取走緩沖數據時,才喚醒進程A。



二、互斥

互斥關系,也稱為間接制約關系。由于各進程要求共享資源,而有些資源需要互斥使用,因此各進程間競爭使用這些資源,進程的這種關系為進程的互斥。


一個很典型的例子就是系統的不同的進程同時要求使用打印機,如下圖所示。



三、同步和互斥的特點比較


四、臨界資源和臨界區

1)臨界資源

一次只能被一個進程所占用的資源就是所謂的臨界資源。比如:打印機。

2)臨界區

訪問臨界資源的那段代碼稱為臨界區。多個進程的臨界區成為相關臨界區。


為了保證臨界資源的正確使用,可以把臨界資源的訪問過程分成四個部分:

①進入區。為了進入臨界區使用臨界資源,在進入區要檢查可否進入臨界區,如果可以進入臨界區,則應設置正在訪問臨界區的標志,以阻止其他進程同時進入臨界區。

②臨界區。進程中訪問臨界資源的那段代碼,又稱臨界段。

③退出區。將正在訪問臨界區的標志清除。

④剩余區。代碼中的其余部分。


使用臨界區時必須遵守的規則:

①空閑讓進:臨界資源空閑時一定要讓進程進入,不發生“互斥禮讓”行為。

②忙則等待:臨界資源正在使用時外面的進程等待。

③有限等待:進程等待進入臨界區的時間是有限的,不會發生“餓死”的情況。

④讓權等待:進程等待進入臨界區是應該放棄CPU的使用。


參考資料:

http://www.eygle.com/digest/2004/12/osprocess_lock_latchs_emaphores.html

http://c.biancheng.net/cpp/html/2596.html

http://blog.jobbole.com/86709/

http://www.cnblogs.com/CareySon/archive/2012/04/14/Process-SynAndmutex.html




總結

以上是生活随笔為你收集整理的进程的同步与互斥的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。