摘要:進程與線程聲明文章均為本人技術筆記,轉載請注明出處進程線程基本概念進程程序的執行實體,操作系統分配資源的最小單位線程被稱為輕量級進程,是調度分配的最小單位。一個標準的線程由線程,程序計數器,寄存器集合和堆棧組成進程間線程間通信方式進程間通信
進程與線程 聲明
文章均為本人技術筆記,轉載請注明出處https://segmentfault.com/u/yzwall
進程&線程基本概念進程:程序的執行實體,操作系統分配資源的最小單位;
線程:被稱為輕量級進程,是CPU調度分配的最小單位。一個標準的線程由線程ID,程序計數器(PC),寄存器集合和堆棧組成;
進程間/線程間通信方式 LinuxLinux進程間通信:管道,信號(signal),消息隊列(Message),共享內存(shared memory),信號量(semaphore),套接口(socket)
Linux線程間通信:互斥量(Mutex),信號量(Semaphore),條件變量
Windows進程間通信:管道(pipe),消息隊列(Message),共享內存(shared memory),信號量(semaphore),套接口(socket)
Windows線程間通信:臨界區(critical section),互斥量(Mutex),信號量(Semaphore),事件(Event)
線程是獨立調度的基本單位,進程是擁有資源的基本單位(進程只作為除CPU之外系統資源的分配單元,線程作為CPU的分配單元);
在同一進程中,線程之間的切換不會引起進程的切換,但從一個進程中的線程切換到另一個進程中的線程時,會引起進程的切換;
進程創建和撤銷時,系統開銷遠大于線程開銷;
進程切換時,保存現場開銷和上下文切換開銷遠大于線程開銷;
進程之間的地址空間互相獨立,一個進程崩潰不影響其他進程;
線程之間(屬于同一進程)共享進程的地址空間,一個線程死掉相當于整個進程死掉;
進程間通信需要借助操作系統;
由于線程共享進程的地址空間,因此線程間同步與通信較容易實現,甚至無需操作系統干預;
死鎖產生必須同時滿足以下四個條件:
互斥條件:一段時間內,某資源僅被一個進程所占有,其他進程只能等待;
不剝奪條件:進程擁有的資源只能由自己釋放,不可被其他進程強行奪走;
請求和保持條件:在申請資源不能全部滿足的條件下,進程占有已申請的資源,等待新的資源分配
循環等待條件:存在系統資源的進程循環等待鏈;
死鎖處理策略預防死鎖:任意破壞死鎖產生的四個必要條件之一即可;
避免死鎖:在資源動態分配過程中,采用某種算法(比如銀行家算法)防止系統進入”不安全狀態“(系統有可能死鎖);
死鎖檢測和解除:通過系統檢測機制及時檢測出死鎖現象(利用資源分配圖),然后可通過剝奪資源,撤銷進程和回退進程解除死鎖;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67021.html
摘要:父進程調用創建子進程。因而,一個進程的第一個線程會隨著這個進程的啟動而創建,這個線程被稱為該進程的主線程。另一方面,線程不可能獨立于進程存在。終止線程線程可以通過多種方式來終結同一個進程中的其他線程。 前言 不積跬步,無以至千里;不積小流,無以成江海。在學習Java多線程相關的知識前,我們首先需要去了解一點操作系統的進程、線程以及相關的基礎概念。 進程 通常,我們把一個程序的執行稱為一...
摘要:一個進程如果有多條執行路徑,則稱為多線程程序。這可能拋出在當前線程中。考慮多線程的數據安全問題是否是多線程環境。當前線程必須擁有此對象監視器。此方法導致當前線程稱之為將其自身放置在對象的等待集中,然后放棄此對象上的所有同步要求。 這是劉意老師的JAVA基礎教程的筆記講的賊好,附上傳送門 傳智風清揚-超全面的Java基礎 一、線程的引入 1.多線程概述 進程 a.正在運行的程序,是...
閱讀 2980·2021-11-08 13:20
閱讀 1042·2021-09-22 15:20
閱讀 673·2019-08-30 15:53
閱讀 1976·2019-08-30 15:43
閱讀 1292·2019-08-29 17:21
閱讀 546·2019-08-29 12:15
閱讀 2389·2019-08-28 17:51
閱讀 3155·2019-08-26 13:26