對使用者來說,程序是正在執行的程式。
程序由程式,資料,和pcb組成。
對作業系統來說,程序就是pcb,pcb包含了正在執行程式的全部資訊。
比如識別符號,狀態,優先順序,記憶體指標,上下文資料等
linux下pcb叫task_struct。
記憶體指標: 程式和資料執行起來後被載入到記憶體中的位置
識別符號pid: 唯一標識系統中的各個程序
上下文資料: 程序執行時的狀態和資源
程式計數器: 儲存程式切換時的位置
三大基本狀態 :
執行態:占有cpu,並在cpu上執行
就緒態:已經具備執行條件,但由於沒有空閒cpu,而暫時不能執行
阻塞態:因等待某一事件而暫時不能執行
1.殭屍程序: 處於僵死狀態的程序
產生:子程序先於父程序退出,為了儲存退出原因,因此子程式資源不會被完全釋放,作業系統檢驗到子程序退出,這時候通知父程序,這時候父程序可以獲取子程序退出原因,允許作業系統釋放資源,這種情況子程序資源才會被完全釋放。如果父程序沒有理這個通知,也就意味著父程序沒有允許作業系統釋放子程序的資源,那麼這時候子程序將處於僵死狀態成為殭屍程序。
乙個終止了但未被**的程序稱作殭屍程序。
危害 :資源洩露
避免 : 程序等待
解決 : 父程序退出 (因為殭屍子程序的本質原因是要儲存退出原因給父程序看的,然而父程序退出了,那麼殭屍子程序也就沒有存在的意義了,因此作業系統就直接釋放了。)
2.孤兒程序: 父程序先於子程序退出,那麼子程序就成為孤兒程序。(執行在後台)
孤兒程序並不是沒有父程序了,而是父程序變為init程序,意味著子程序退出後,將由init程序來處理它的身後事,而init程序就會直接允許作業系統釋放資源,因此不會成為殭屍程序。
3.守護程序: 特殊的孤兒程序。(執行在後台,並且跟終端以及會話完全脫離)
程序優先順序決定了程序獲取cpu資源的優先權。
優先順序實際上就是乙個陣列, 這個值越小, 優先順序越高。
為什麼要有優先順序 : 讓作業系統執行的更加合理。
如何設定優先順序 :優先順序無法直接設定, 但是可以通過設定nice值進而設定優先順序的值
pri = pri + nini的取值範圍 : -20~19
設定命令 :renice - n ni_val - p pidnice - n ni_val . / main
cpu排程是作業系統的基本功能,如果cpu空閒,作業系統會選擇就緒佇列的優先順序高的程式執行
競爭性: 因為作業系統上的程序都是一直在競爭資源, 因此程序之間具有競爭性
獨立性: 為了使乙個程序的操作不對另乙個程序造成影響, 程序之間需要具有獨立性
並行: cpu資源足夠多的情況, 多個程序可以同時執行
併發: cpu資源不夠的情況, 多個程序切換排程執行
Linux 程序概念
任何計算機系統都包含乙個基本的程式集合,成為作業系統 os 它包括 作業系統是管管理的軟體 使用者操作 使用者操作介面 shell,lib,指令等 作業系統 驅動程式 硬體 作業系統管理硬體 系統呼叫 在開發者角度,作業系統會對外表現為乙個整體,但是會暴露自己的一部分介面供上層開發者使用,這部分由作...
Linux 程序概念
程序排程演算法 在早期作業系統的排程方式大多數是非剝奪的,這是由於早期的應用一般是科學計算或事務處理,不太把人機互動的響應時間指標放在首要位置。在這種情況下,正在執行的程序可一直占用cpu直到程序阻塞或終止。這種方式的排程演算法可以很簡單,且比較適用對於響應時間不關心或者關心甚少的批處理科學計算或事...
Linux 程序概念
調研程序的排程演算法.短程序優先演算法,對預計執行時間短的程序優先分派處理機。通常後來的短程序不搶先正在執行的程序。演算法優點 相比fcfs 演算法,該演算法可改善平均周轉時間和平均帶權周轉時間,縮短程序的等待時間,提高系統的吞吐量。演算法缺點 對長程序非常不利,可能長時間得不到執行,且未能依據程序...