操作系統(進程,線程,死鎖)

進程與線程的一個簡單解釋(進程,線程,互斥鎖,信號量,操作系統的設計)
http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
進程與線程的區別
1、進程有自己的獨立地址空間,每啓動一個進程,系統就會爲它分配地址空間,建立數據表來維護代碼段、堆棧段和數據段,這種操作非常昂貴。
而線程是共享進程中的數據的,使用相同的地址空間,因此CPU切換一個線程的花費遠比進程要小很多,同時創建一個線程的開銷也比進程要小很多。
2、線程之間的通信更方便,同一進程下的線程共享全局變量、靜態變量等數據,而進程之間的通信需要以通信的方式(IPC)進行。
3、但是多進程程序更健壯,多線程程序只要有一個線程死掉,整個進程也死掉了,而一個進程死掉並不會對另外一個進程造成影響,因爲進程有自己獨立的地址空間。
https://www.jianshu.com/p/2dc01727be45

死鎖:是一個進程集合中的多個進程因爲競爭資源,而造成的互相等待現象。
產生死鎖的原因主要是:
1、因爲系統資源不足。
2、 進程運行推進的順序不合適。
3、 資源分配不當等。
死鎖的必要條件:
1、互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。
2、請求與保持條件(Hold and wait):已經得到資源的進程可以再次申請新的資源。
3、剝奪條件(No pre-emption):已經分配的資源不能從相應的進程中被強制地剝奪。
4、 循環等待條件(Circular wait):系統中若干進程組成環路,改環路中每個進程都在等待相鄰進程正佔用的資源。
死鎖的預防
死鎖的預防是保證系統不進入死鎖狀態的一種策略。它的基本思想是要求進程申請資源時遵循某種協議,從而打破產生死鎖的四個必要條件中的一個或幾個,保證系統不會進入死鎖狀態。
死鎖的避免
在資源分配過程中若預測有發生死鎖的可能性,則加以避免。主要有安全序列,銀行家算法。
死鎖的檢測與恢復
檢測:常利用資源分配圖、進程等待圖來協助這種檢測。
恢復:重新啓動;撤銷進程,剝奪資源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章