什麼是進程? 算法
所謂進程,通俗的講是一個具備獨立功能的程序的一次運行活動。相比於進程而言,程序是靜態的,如放在磁盤上的程序;而進程是動態的,必須是運行起來的。 併發
進程特色:動態性,併發性,獨立性,異步性 異步
動態性:由進程的概念可知,進程必須是運行起來的,因此具備動態性。 學習
併發性:對於多個進程而言,在同一時間,能夠同時執行,稱之爲併發性。 測試
獨立性:每一個進程是獨立存在的,稱之爲獨立性。 spa
異步性:進程與進程之間能夠進行異步操做,具備異步效果 操作系統
2 進程三態 視頻
在操做系統原理中,一個完整的進程都不可或缺的擁有如下三態:就緒態,執行態,阻塞態。 進程
圖1 進程三態性 事件
進程執行過程:
進程一旦建立起來以後,首先進入的狀態是就緒態,而後經過進程調度來佔有CPU進入執行態,注:假如只有一個CPU,則同一時刻只有一個進程可以佔有CPU。進程在運行過程中若要進行I/O請求(進程sleep\等待解鎖),如訪問網卡、串口(從串口讀取數據,此時串口沒有數據可讀)等時,則進程會進入阻塞態,等串口有數據並將數據讀完(I/O完成),進程又會跳回就緒態。整個過程爲進程的基本流程。
3 進程相關概念
進程互斥:進程互斥是指當有若干個進程要使用某一共享資源(臨界資源)時,任什麼時候刻最多容許一個進程使用,其餘使用資源的進程必須等待,直到佔用該資源的進程釋放該資源爲止。
臨界資源:操做系統中將一次只容許一個進程訪問的資源稱爲臨界資源。
臨界區:進程中訪問臨界資源的那段程序代碼稱爲臨界區。爲實現對臨界資源的互斥訪問,應保證諸進程互斥的進入各自的臨界區。
進程同步:一組併發進行按照必定順序執行的過程稱爲進程間的同步。具備同步關係的一組併發進程稱爲合做進程,合做進程間互相發送的信號稱爲消息或事件。如工廠商品流程:生產,測試,包裝,出售,這幾個過程就是進程同步,先生產再測試,再包裝,再出售。
進程調度:按照必定算法,從一組待運行的進程中選出一個來佔有CPU運行。
4 進程調度方式
圖2 進程調度方式
各調度方式如圖3所示:
圖3 進程調度方法及示意圖
以上爲進程的相關概念,主要參考國嵌視頻講座 課程2(嵌入式LINUX應用開發班)\第3天(進程控制)\國嵌應用班-3-1(進程控制原理).avi的相關內容。如如有無之處,望你們可以指正,達到共同窗習目的。
進程死鎖:多個進程因競爭資源而造成一種僵局,若無外力做用,這些進程都將永遠沒法再向前推動。
死鎖示意圖如圖 4所示:
圖4 進程死鎖示意圖(實線爲已佔有資源,虛線爲待佔有資源)