例程與程序的區別
例程指的是一組用於執行系統程式的指令集的計算機程式。根據例程或函式給出的指令,它們會在執行完成後分配或釋放使用的記憶體。程序是指當前處於執行狀態的程式,並利用 CPU 資源。每個程序在其生命週期中經歷不同的狀態,如活動、新建、就緒、阻塞和等待、掛起。多程式設計環境是為需要它的程序完成的,其中每個程序被分類為搶佔式和非搶佔式方法。
例程
例程稱為程式用來執行分配給它的任何特定任務的函式。在執行任務期間,序列或例程應根據需要分支到通用函式。任務完成後,呼叫程式恢復執行例程中指定的下一條指令。提供給程式的例程用於記憶體管理單元的高效讀寫操作。其他即將到來的程式可以使用相同的例程和不同的輸入資料,而無需建立新程式碼。
例程在高階語言中用作執行需要多次重複的任務的功能介面。宏指令以解碼形式作為輸入變數提供給組合語言中的例程。程式設計師使用這些指令,這可以節省時間,而不是在設計的例程中建立和控制分支指令。可以將高階語言所需的介面與特定功能打包到大多數必需的例程中,其他一些功能稱為存根,用於系統呼叫的動態執行。
程序
當程式開始執行使用主記憶體的過程(載入到主記憶體後)時,程序進入啟用狀態。系統中存在多個程序,其中一些執行作業系統程式碼,其餘執行使用者程序。程序執行其工作需要各個部分,它們是資料段、文字段、堆(動態分配)和棧(區域性變數的儲存區域)。
每個程序由程序控制塊管理,該塊儲存程序狀態、CPU 暫存器、程序 ID、程式計數器、記憶體管理、排程資訊和其他輸入/輸出詳細資訊。
對程序執行的各種操作包括建立、設計、執行、刪除、同步、阻塞、上下文切換、程序間通訊等。
下表定義了例程和程序之間的主要區別
差異依據 |
例程 |
程序 |
---|---|---|
職責 |
它在其他函式或子例程多次呼叫的例程的幫助下執行特定任務。 |
它負責執行一組程式碼或程式,這被稱為作業系統的首要工作。 |
目的 |
程式將其用作介面來執行多次重複的任務。 |
它基於執行系統程式碼或使用者程式碼的程序進行工作。 |
術語 |
這些包含一組程式碼來執行使用者程式並提供輸入/輸出操作。 |
這包含處於執行狀態的程式,這些程式使用了 CPU 的資源。 |
應用程式支援 |
常用的例程被打包成函式,為高階程式語言提供介面。為不需要記憶體位置的應用程式建立動態庫例程,直到它載入為止。 |
每個應用程式程序都根據程序控制塊中的資訊工作,該塊被認為是儲存和管理程式或應用程式以執行的主要單元。 |
操作 |
程式使用它,這些程式應遵循通用例程並移動到分支到例程資料的下一個順序操作。 |
根據使用者的請求,程序能夠在適當的記憶體管理、排程、暫存器位置等情況下進入活動狀態。 |
示例 |
儲存使用者檔案、顯示系統時間以及根據已儲存的例程新增兩個輸入資料以執行此類常見任務。 |
使用音樂播放器檢視和收聽歌曲、執行多個運算元的計算器工具、瀏覽器介面同時執行多個程序以用於使用者介面和其他選項卡,以便以後使用。 |
結論
例程是一組特定的通用指令,程式會重複使用這些指令,並且可以利用相同的例程和不同的輸入資料集,這可以節省開發人員無需處理新例程集的時間。當程式處於執行階段時,它被稱為程序,可以根據對記憶體的請求管理系統程式碼以及使用者程式碼。每個程序在其生命週期中經歷多個狀態,這些狀態基於程序控制塊、程序 ID、CPU 利用率和排程演算法、暫存器集以及基於即時共享系統。