什麼是程式?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或緩衝區申請失敗等)等事件而終止執行,進入阻塞態。
阻塞→就緒:當處於阻塞態的程式獲得了等待的資源後恢復為就緒態。
阻塞→掛起:當處於阻塞態的程式遇到諸如處理器空閒、資源不足等情況時而調離記憶體,進入掛起態。程式的記憶體資料會儲存到磁碟中,以釋放空間供其它程式使用。
掛起→就緒: 當處於掛起態的程式遇到系統資源充足或主動請求啟用時,進入就緒態。
執行→終止:當處於執行態程式執行完成或者被作業系統終止時,它會從記憶體中被移除,變為“終止”狀態。
程式具有以下一些特點:
動態性。程式是程式的一次執行過程,它是動態產生、動態消亡的。
併發性。多個程式可併發執行。
獨立性。程式是一個能獨立執行的基本單位,同時也是系統分配資源和排程的獨立單位。
非同步性。程式之間的相互制約使得程式的執行具有間斷性,它們按各自獨立的、不可預知的速度向前推進。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2771496/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是整型?Python整型詳細介紹Python
- Python中縮排是什麼?Python特點介紹!Python
- 系統程式設計-網路-內容概要、整體介紹程式設計
- 學習內容介紹
- 什麼是整型型別?Python整型詳細介紹型別Python
- Python中pandas是什麼?資料結構介紹!Python資料結構
- Python中的IDLE是什麼?常用功能介紹!Python
- 平行計算與並行程式設計課程內容介紹並行行程程式設計
- 什麼是程式語言,什麼是Python直譯器Python
- 靜態程式分析(一)—— 大綱思維導圖與內容介紹
- 是什麼JSON,簡單介紹JSON
- 什麼是檔案傳輸,介紹檔案傳輸的發展程式
- 不要問程式設計師什麼是“物件”,也不要給他介紹“物件”程式設計師物件
- Python的控制語句有哪些?常見內容介紹!Python
- Python import相關內容區別介紹( import *** as 、from***import )PythonImport
- Python多工程式設計介紹Python程式設計
- python UDP程式設計是什麼意思?PythonUDP程式設計
- 中文Rhino 8新增內容介紹
- 什麼是位元組碼?python位元組碼詳細介紹!Python
- 好程式設計師Java學習路線介紹Java到底是什麼?程式設計師Java
- 什麼是Python?python是一門怎樣的程式語言?Python
- 什麼是python的多程式?好學嗎?Python
- 究竟什麼是專案管理?它的主要內容是什麼呢?專案管理
- Page Ability生命週期內容介紹!
- keyiso是什麼程式?
- 什麼是Web前端?Web前端要學習什麼內容?Web前端
- FFmpeg是什麼,主要功能介紹
- Python有什麼優勢和劣勢?Python介紹!Python
- Python 程式碼中的 yield 到底是什麼?Python
- Python tkinter是什麼?GUI程式設計有哪些?PythonGUI程式設計
- 內容最佳化是什麼?6 種有效方法讓內容更出彩
- 製造業ERP的核心內容是什麼?
- 什麼是內容運營?日常涉及哪些工作?
- 為什麼程式猿DD熱衷於內容輸出與分享?
- Springboot是什麼?Springboot詳解!入門介紹Spring Boot
- Spyder和Python有什麼關係?功能介紹!Python
- 低程式碼是什麼?
- 什麼是程式碼整理?