什麼是程序?
所謂程序就是將乙個二進位制檔案載入到記憶體形成的乙個個體,這就是乙個程序。
在我們的linux系統中,系統只識別二進位制檔案,所以乙個系統要想正常的執行時,必須啟動一些二進位制檔案,從而形成程序,在以這些程序的方式去執行相應的任務。
我們常常聽到所謂的程式,那麼程式和程序是什麼關係呢?
剛剛說過程序是由二進位制檔案載入到記憶體中形成的。而這些二進位制檔案就是程式。
可以這麼來理解:
程式是實實在在地檔案,是存放在磁碟上的。
程序是乙個邏輯概念,程序是存在記憶體當中的,所以當機器重啟,這些程序也隨之銷毀了。而程式不會,因為他們始終存在磁碟上的。
我們知道在我們的系統上,可以同時執行多個程式,進而會產生多個程序,而這些程序最終都會交給cpu處理,但是我們的cpu卻只有乙個,那麼這些cpu是如何處理這些程序的呢?
剛剛說過程序是存在記憶體當中的。而記憶體是一塊位址空間,所以我們的程序在記憶體中都占用了一段位址空間,用來存在程序資料。而這些將要被執行的程序放在cpu的可執行佇列中,cpu逐個進行處理。並且核心為這些每乙個程序分配一段時間,這樣cpu可以有效的處理每乙個程序,避免cpu長時間的消耗在處理某個程序上。
程序是有程序狀態的,程序共有一下5種狀態:
1、task_running:處於這種狀態下的程序正在被cpu執行或者將要被cpu執行
2、task_interruptible:叫做可中斷的睡眠狀態。這種狀態下的程序處於睡眠狀態直到其他條件或者事件完成時才會被cpu處理。或者當某個程序已經被cpu處理完了,而核心分配處理的這些程序時間過長,這些程序也會處於睡眠狀態。而程序在睡眠狀態下,cpu可以去處理其他程序。
3、task_uniterruptible:不可中斷的睡眠狀態。處於該狀態下的程序是不可中斷的,因此該程序一直等待接受其他訊號,因此cpu一直處於等待狀態。
4、task_stopped,task_traced:停止或者跟蹤狀態。
當程序收到乙個sigstop訊號時,該程序處於停止狀態。
當某個程序被其他程序所監控或者被跟蹤的程序所操作時,該程序處於task_traced狀態。
5、task_dead,task_zombie,殭屍狀態:處於該狀態下的程序執行完畢後,並不釋放所占有的記憶體空間,因此會導致物理記憶體的容量變小。
程序與執行緒的概述
2 什麼是程序?通過任務管理器我們就看到了程序的存在。而通過觀察,我們發現只有執行的程式才會出現程序。程序 就是正在執行的程式。程序是系統進行資源分配和呼叫的獨立單位。每乙個程序都有它自己的記憶體空間和系統資源。3 多程序有什麼意義呢?單程序的計算機只能做一件事情,而我們現在的計算機都可以做多件事情...
程序和Windows程式的基本概述
一般程序可以定為乙個正在執行的程式的乙個例項,乙個核心物件,作業系統可以用它來管理程序。也是系統儲存程序統計資訊的地方。乙個位址空間,其中包含了可執行檔案和dll模組的 資料,同時包括動態記憶體分配,和執行緒堆疊和堆得分配。cpu的工作方式,是 乙個程序可以有多個執行緒.然後cpu會輪流排程資源分配...
簡單程序監控程式
執行指令碼 參考文章 作業題目 寫乙個shell指令碼來進行程序的死活監控 作業描述 此shell指令碼能檢查配置檔案中記錄的程序是否在系統中執行。如果在系統中執行則顯示程序id pid 如果不在執行則顯示 down 文字。配置檔案 check procs.conf systemd smbd nmb...