在計算機結構中,程序是程式的基本執行(擔當分配系統資源,包括像cpu時間,記憶體空間)的實體。
通俗來說,程序就是我們具體執行程式的那個過程。當我們執行一段**時,就是乙個程序。
而每乙個程序都有屬於本程序的一些屬性資訊。這些資訊被存放在核心的乙個結構體當中。包括像程序的識別符號,狀態,優先順序等資訊。
在linux作業系統中,可以在/proc
系統資料夾中檢視。
一般我們可以通過fork()
函式來建立乙個程序。當我們通過fork()
建立乙個程序時,如果建立成功,會返回乙個值
所以我們一般在建立乙個程序後,需要對程式進行分流。讓父子程序完成相對應的工作。
雖然父子程序執行的意義不一樣。但是父子程序是會共享**的。但是在程序建立後,再改變的的值是不會共享的。例如原本有a=5; 在子程序中改為1=10;此時在父程序中的a依然還是5。
int
main()
else
if(pid>0)
return0;
}
執行上面的**可以看到控制台列印資訊:
乙個程序是擁有很多狀態的。雖然我們在使用計算機時,可以開啟很多程序。但是實際上程序還是乙個乙個交叉執行的。這也是併發的概念。
當我們的計算機有用多核時,就可以同時執行多個程序,這也叫做並行。
所以乙個程序除了在執行中——執行狀態。還有:
睡眠狀態——即程序在等待其他時間的完成
休眠狀態 殭屍狀態 孤兒程序 停止狀態 死亡狀態。
死亡狀態是指返回狀態。所以我們是看不到乙個任務列表裡的程序處於死亡狀態的。
我們可以通過命令ps
一系列命令來檢視程序狀態
uid: 執行者
pid: 程序號
ppid:父程序號
pri:執行優先順序。(越小優先順序越高)
ni:程序的nice 值
通過上面我們可以看到 我們注意到兩個pri ni 兩個資訊。pri即一般來說程序的優先順序。程序的優先順序會決定cpu執行程序的順序。一般程序的pri值為80。
ni值是對程序優先順序修正。取值是-20~19的值。一共四十個級別。
當接入ni值時,程序的優先值就會變為pri+ni的新值。
當我們需要改變乙個程序的ni值時,可以利用
命令top
->r
->輸入程序的pid->輸入ni值
我們就將程序的pid為12431的程序ni值改為了19。
程序概念總結
最近剛剛學習多程序,對於多程序的概念我自己總結一下 每乙個程式啟動後都會在系統中產生乙個程序來處理這個程式 但是乙個程序執行速度畢竟有限,在程式中有一些比較耗時的操作程式就只能是卡死的狀態,為了解決這個問題,就出現了多程序。讓耗時的工作建立乙個子程序讓子程序去工作,主程序執行自己的。但子程序多了也會...
Linux 程序概念
任何計算機系統都包含乙個基本的程式集合,成為作業系統 os 它包括 作業系統是管管理的軟體 使用者操作 使用者操作介面 shell,lib,指令等 作業系統 驅動程式 硬體 作業系統管理硬體 系統呼叫 在開發者角度,作業系統會對外表現為乙個整體,但是會暴露自己的一部分介面供上層開發者使用,這部分由作...
Linux 程序概念
程序排程演算法 在早期作業系統的排程方式大多數是非剝奪的,這是由於早期的應用一般是科學計算或事務處理,不太把人機互動的響應時間指標放在首要位置。在這種情況下,正在執行的程序可一直占用cpu直到程序阻塞或終止。這種方式的排程演算法可以很簡單,且比較適用對於響應時間不關心或者關心甚少的批處理科學計算或事...