什麼是程式?Python程式各部分內容介紹

千鋒武漢發表於2021-05-10

  程式是一個沒有生命的實體,它包含許多由程式設計語言編寫的、但未被執行的指令,這些指令經過編譯和執行才能完成指定動作。

  程式被執行後成為了一個活動的實體,這個實體就是程式。換言之,作業系統排程並執行程式,這個“執行中的程式”稱為程式。程式是作業系統進行資源分配和排程的基本單位。

  在Windows作業系統下使用組合鍵Ctrl+Alt+Delete開啟工作管理員,單擊工作管理員視窗中的“程式”選項卡檢視計算機中所有的程式,如圖1所示。

1

圖1 工作管理員中的程式

  每個應用程式都有一個自己的程式,每個程式都在記憶體中佔據一定空間,一般情況下,程式佔據的記憶體空間由控制塊、程式段和資料段三個部分組成,各部分的介紹如下。

  (1) 控制塊(Proscessing Control Block,PCB):系統為管理程式專門設定的資料結構,常駐於記憶體中,用於記錄程式的外部特徵與程式的運動變化過程。控制塊是程式存在的唯一標誌。

  (2) 程式段:用於存放程式執行程式碼的一塊記憶體區域。

  (3) 資料段:儲存變數和程式執行期間產生中間或最終資料的一塊記憶體區域。

  隨著外界條件的變化,程式的狀態會發生變化。在五態模型中,程式有新建態、就緒態、執行態、阻塞態和終止態這五個狀態,關於這些狀態的介紹如下:

  (1) 新建態。建立程式,申請一個空白的控制塊,向該控制塊中填寫控制和管理程式的資訊,完成資源分配。

  (2) 就緒態。程式具備執行條件,等待系統分配處理器資源以便執行。

  (3) 執行態。程式佔用處理器資源正在執行。

  (4) 阻塞態。程式不具備執行條件,正在等待某個事件(如I/O操作或程式同步)的完成,否則無法繼續執行。

  (5) 終止態。程式因出現錯誤或被系統終止而執行結束。

  除了以上五種狀態之外,程式還有一個掛起態。掛起態是一種主動行為,它是在計算機記憶體資源不足、處理器空閒、使用者主動掛起、系統檢查資源使用情況等條件下將程式暫時調離出記憶體形成的,在條件允許時可再次被調回記憶體。與掛起態相比,阻塞態是一種被動行為,它是在等待事件或者獲取不到資源而引發的等待表現。

  為了幫助大家理解,下面透過一張圖來描述程式狀態間的轉換關係,具體如圖2所示。

2

圖2 程式狀態的切換

  圖2中描述的切換過程如下:

  無→新建:當程式從儲存裝置載入到記憶體中時,程式進入新建態。

  新建→就緒:處於新建態的程式會被排程器自動轉換為就緒態,獲得了所需的資源,這個過程是非常短暫的。

  就緒-→執行:當處於就緒態的程式獲取CPU後進入執行態,CPU開始執行這個程式的命令。

  執行→阻塞:當處於執行態的程式因出現資源不足(I/O或緩衝區申請失敗等)等事件而終止執行,進入阻塞態。

  阻塞→就緒:當處於阻塞態的程式獲得了等待的資源後恢復為就緒態。

  阻塞→掛起:當處於阻塞態的程式遇到諸如處理器空閒、資源不足等情況時而調離記憶體,進入掛起態。程式的記憶體資料會儲存到磁碟中,以釋放空間供其它程式使用。

  掛起→就緒: 當處於掛起態的程式遇到系統資源充足或主動請求啟用時,進入就緒態。

  執行→終止:當處於執行態程式執行完成或者被作業系統終止時,它會從記憶體中被移除,變為“終止”狀態。

  程式具有以下一些特點:

  動態性。程式是程式的一次執行過程,它是動態產生、動態消亡的。

  併發性。多個程式可併發執行。

  獨立性。程式是一個能獨立執行的基本單位,同時也是系統分配資源和排程的獨立單位。

  非同步性。程式之間的相互制約使得程式的執行具有間斷性,它們按各自獨立的、不可預知的速度向前推進。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2771496/,如需轉載,請註明出處,否則將追究法律責任。

相關文章