什么是进程?Python进程各部分内容介绍
程序是一個沒有生命的實體,它包含許多由程序設計語言編寫的、但未被執行的指令,這些指令經過編譯和執行才能完成指定動作。
程序被執行后成為了一個活動的實體,這個實體就是進程。換言之,操作系統調度并執行程序,這個“執行中的程序”稱為進程。進程是操作系統進行資源分配和調度的基本單位。
在Windows操作系統下使用組合鍵Ctrl+Alt+Delete打開任務管理器,單擊任務管理器窗口中的“進程”選項卡查看計算機中所有的進程,如圖1所示。
圖1 任務管理器中的進程
每個應用程序都有一個自己的進程,每個進程都在內存中占據一定空間,一般情況下,進程占據的內存空間由控制塊、程序段和數據段三個部分組成,各部分的介紹如下。
(1) 控制塊(Proscessing Control Block,PCB):系統為管理進程專門設置的數據結構,常駐于內存中,用于記錄進程的外部特征與進程的運動變化過程。控制塊是進程存在的唯一標志。
(2) 程序段:用于存放程序執行代碼的一塊內存區域。
(3) 數據段:存儲變量和進程執行期間產生中間或最終數據的一塊內存區域。
隨著外界條件的變化,進程的狀態會發生變化。在五態模型中,進程有新建態、就緒態、運行態、阻塞態和終止態這五個狀態,關于這些狀態的介紹如下:
(1) 新建態。創建進程,申請一個空白的控制塊,向該控制塊中填寫控制和管理進程的信息,完成資源分配。
(2) 就緒態。進程具備運行條件,等待系統分配處理器資源以便運行。
(3) 運行態。進程占用處理器資源正在運行。
(4) 阻塞態。進程不具備運行條件,正在等待某個事件(如I/O操作或進程同步)的完成,否則無法繼續運行。
(5) 終止態。進程因出現錯誤或被系統終止而運行結束。
除了以上五種狀態之外,進程還有一個掛起態。掛起態是一種主動行為,它是在計算機內存資源不足、處理器空閑、用戶主動掛起、系統檢查資源使用情況等條件下將進程暫時調離出內存形成的,在條件允許時可再次被調回內存。與掛起態相比,阻塞態是一種被動行為,它是在等待事件或者獲取不到資源而引發的等待表現。
為了幫助大家理解,下面通過一張圖來描述進程狀態間的轉換關系,具體如圖2所示。
圖2 進程狀態的切換
圖2中描述的切換過程如下:
無→新建:當程序從存儲設備加載到內存中時,進程進入新建態。
新建→就緒:處于新建態的進程會被調度器自動轉換為就緒態,獲得了所需的資源,這個過程是非常短暫的。
就緒-→運行:當處于就緒態的進程獲取CPU后進入運行態,CPU開始執行這個進程的命令。
運行→阻塞:當處于運行態的進程因出現資源不足(I/O或緩沖區申請失敗等)等事件而終止運行,進入阻塞態。
阻塞→就緒:當處于阻塞態的進程獲得了等待的資源后恢復為就緒態。
阻塞→掛起:當處于阻塞態的進程遇到諸如處理器空閑、資源不足等情況時而調離內存,進入掛起態。進程的內存數據會保存到磁盤中,以釋放空間供其它進程使用。
掛起→就緒: 當處于掛起態的進程遇到系統資源充足或主動請求激活時,進入就緒態。
運行→終止:當處于運行態進程執行完成或者被操作系統終止時,它會從內存中被移除,變為“終止”狀態。
進程具有以下一些特點:
動態性。進程是程序的一次執行過程,它是動態產生、動態消亡的。
并發性。多個進程可并發執行。
獨立性。進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位。
異步性。進程之間的相互制約使得進程的執行具有間斷性,它們按各自獨立的、不可預知的速度向前推進。
本文來自千鋒教育,轉載請注明出處。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的什么是进程?Python进程各部分内容介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是web2py框架?它有什么作用呢?
- 下一篇: CSS的特性之层叠性介绍