Linux 程序基礎

2021-09-27 17:18:59 字數 1271 閱讀 7185

程序是程式執行時的乙個例項,可以分配給處理器並由處理器執行的乙個實體,由單一順序的執行顯示,是當前狀態和相關系統資源描述的活動單元。

程序優先順序

可執行程式是指令和資料的集合,作為一種資料資料長期存在,是乙個靜態概念。而程序是可執行程式的一次執行過程,是有生命期,是暫時的,是乙個動態概念。所以同乙個可執行程式可以對應多個程序。

pcb程序資訊被放在乙個叫做程序控制塊的資料結構,linux下就是task_struct結構體,其中主要內容有:

pid:標識和區分程序

狀態: 任務狀態,退出**,退出訊號等

優先順序:相對於其他程序的優先順序

程式計數器: 程式中即將被執行的下一條指令的位址

記憶體指標: 包括程式**和程序相關資料的指標,還有和其他程序共享的記憶體塊的指標

上下文資料: 程序執行時處理器的暫存器中的資料

i/o狀態資訊: 包括顯示的i/o請求,分配給程序的i/o裝置和被程序使用的檔案列表

記賬資訊: 可能包括處理器時間總和,使用的時鐘數總和,時間限制,記賬號等

pid與ppid

標識和區分程序的id,是在當前linux系統中唯一的非負整數。程序執行時pid由作業系統隨機分配,同乙個程式執行兩次會產生兩個程序,也就有兩個不同的pid。

每個程序除了一定有pid還會有ppid(1號程序除外)通過ppid可以找到父程序的資訊。

pid為1的程序是由核心建立的init程序,其他子程序都是由它衍生出來,所有程序都來自於乙個程序,所以linux的程序模型也叫做程序樹。

檢視方式

可以通過/proc系統資料夾檢視

通過top或者ps命令來檢視:ps -ef

通過系統呼叫函式getpid()/getppid()

cpu資源分配的先後順序,就是指程序的優先順序。由於linux是多工環境的,所以配置優先順序可以改善系統效能。還可以把程序執行到指定的cpu上,把不重要的程序安排到某個cpu,可大大改善系統整體效能。

pri與ni

命令ps -l可檢視程序的pri與ni,pri為程序的優先順序,越小優先級別越高;ni為優先順序修正數值;所以pri(new)=pri(old)+ni,所以,調整程序優先順序,linux下,就是調整程序ni值。ni其取值範圍是-20至19,一共40個級別。

更改ni

Linux 程序基礎

傳統的linux模型裡有三種建立或者修改程序的操作 system用於呼叫shell,執行乙個指定的命令 fork用於建立乙個新的程序,該程序幾乎是當前程序的乙個完全拷貝 exec可以在程序中用另外的程式來替換當前執行的程序。程序 程序是乙個正在執行的程式例項,他也是linux基本的排程單位,乙個程序...

Linux程序基礎

linux程序概述 程序控制塊 pcb,程序控制塊包含了程序的描述資訊 控制資訊以及資源資訊,它是程序的乙個靜態描述。核心使用程序來控制對cpu和其他系統資源的訪問,並且使用程序來決定在cpu上執行哪個程式,執行多久以及採用什麼特性執行它,核心的排程器負責在所有的程序間分配cpu執行時間,稱為時間片...

Linux守護程序基礎

1 守護程序中涉及到的基本概念 1.1程序組 1.1.1 程序組基本概念 程序組是乙個或多個程序的集合,可以接收來自同乙個終端的各種訊號。每執行乙個程式或是命令都將產生乙個程序組。每個程序屬於乙個程序組,而每個程序組都存在乙個領頭程序 或是叫組長程序 一般程序組的第乙個程序是領頭程序。領頭程序可以建...