進程的並行與並發
並行 : 並行是指兩者同時執行,比如賽跑,兩個人都在不停的往前跑
並發 : 並發是指資源有限的情況下,兩者交替輪流使用資源,比如一段路同時只能過一個人,A走一段后,讓給B,B用完繼續給A ,交替使用,目的是提高效率。
區別:
並行是同時運行,只有具備多個cpu才能實現並行
並發是是偽並行,即看起來是同時運行。單個cpu+多道技術就可以實現並發,(並行也屬於並發)
所有現代計算機經常會在同一時間做很多件事,一個用戶的電腦(無論是單cpu還是多cpu),都可以同時運行多個任務(一個任務可以理解為一個進程)。
啟動一個進程來殺毒(360軟件)
啟動一個進程來看電影(暴風影音)
啟動一個進程來聊天(騰訊QQ)
所有的這些進程都需被管理,於是一個支持多進程的多道程序系統是至關重要的
多道技術概念回顧:內存中同時存入多道(多個)程序,cpu從一個進程快速切換到另外一個,使每個進程各自運行幾十或幾百毫秒,這樣,雖然在某一個瞬間,一個cpu只能執行一個任務,但在1秒內,cpu卻可以運行多個進程,這就給人產生了並行的錯覺,即偽並發,以此來區分多處理器操作系統的真正硬件並行(多個cpu共享同一個物理內存)
同步異步阻塞非阻塞
狀態介紹
在了解其他概念之前,我們首先要了解進程的幾個狀態。在程序運行的過程中,由於被操作系統的調度算法控制,程序會進入幾個狀態:就緒,運行和阻塞。
一、就緒(Ready)狀態
當進程已分配到除CPU以外的所有必要的資源,只要獲得處理機便可立即執行,這時的進程狀態稱為就緒狀態。
二、執行/運行(Running)狀態
當進程已獲得處理機,其程序正在處理機上執行,此時的進程狀態稱為執行狀態。
三、阻塞(Blocked)狀態
正在執行的進程,由於等待某個事件發生而無法執行時,便放棄處理機而處於阻塞狀態。引起進程阻塞的事件可有多種,例如,等待I/O完成、申請緩沖區不能滿足、等待信件(信號)等。
同步和異步
同步
一個任務的完成需要依賴另外一個任務時,只有等待被依賴的任務完成后,依賴的任務才能算完成,這是一種可靠的任務序列。要么成功都成功,失敗都失敗,兩個任務的狀態可以保持一致。
異步
不需要等待被依賴的任務完成,只是通知被依賴的任務要完成什么工作,依賴的任務也立即執行,只要自己完成了整個任務就算完成了。至於被依賴的任務最終是否真正完成,依賴它的任務無法確定,所以它是不可靠的任務序列。