Linux 初識程序!!!

2021-08-14 16:14:42 字數 1982 閱讀 5770

概念:程式的乙個執行例項。

在linux裡面有專門用來描述程序狀態的結構task_struct,在系統核心裡面。這個通常被稱為pcb,著這個裡面包含著這個程序的所有資訊。

pid:在描述程序的結構體pcb裡面有乙個pid,這個是描述程序id的,通過這個id就可以用來區分父程序和子程序。

另外,`getpid()`函式用來獲得當前程序的id,`getppid()`用來當前程序的父程序id
使用者自定義程序fork()

當使用者使用fork()時候,呼叫一次,但是返回值有兩個,子程序的返回值是0,父程序的返回值是自己成的id,即pid。

這個子程序的所有資源都是父程序的副本,但是父程序和子程序自己的資源完全私有,不共享。

即,在建立子程序的時候將父程序的pcb、資料段、堆疊資源複製乙份給子程序。

pid_t fork(void);
#include

#include

#include

int main()

if(pid == 0)

else

printf("i'm parent\n");

return

0;}

結果

可以看到這個程式將子程序和父程序的結果,但是在這裡面子程序和父程序的執行先後順序是不固定的,這個和核心的排程演算法有關。

程序的狀態:

在系統執行每乙個進層的時候並不是一次執行所有的程序,而是分片執行的。即將每乙個程序都分為很多的片,系統在排程演算法的排程下,每次都只執行乙個程序的一部分。因為cpu執行的速度非常快,所以對人的感覺是每次都在執行所有的程式。

如圖

當乙個程序進入死亡狀態之前會有一段殭屍狀態,在殭屍狀態之前會一直占用該程序的資源,只到父程序獲得該程序的退出碼。如果乙個程式裡面殭屍態的程序太多的話,就會占用太多的資源,甚至可能導致程式崩潰。

#include

#include

#include

int main()

if(pid > 0)

else

return

0;}

在程式裡面父程序睡眠,子程序實行後立即退出。在子程序退出父程序睡眠的時間裡面,那麼這個子程序就是進入殭屍狀態。

這個時候如果使用kill -9 殭屍程序號那麼這個kill指令是殺死不了殭屍程序的,因為在殭屍程序裡面的程序已經是乙個死程序。所以在程式裡面需要避免存在太多的殭屍程序。

檢視程序ps -l

uid:當前被執行者身份

pid:當前程序的id

ppid:當前程序的父程序id

pri:程序的優先順序,pri值越小表示越早被執行

ni:當前程序的nice值

設定nice值:

在程式啟動之前設定nice值:nice -n -5 ./test將test程序的nice值設定為5

在程式啟動之後設定nice值:renice -5 -p pid將pid所表示的程序的nice設定為5

Linux筆記 程序初識

有這樣一段 分別在父程序和子程序中返回fork 的返回值,以及當前程序pid和父程序pid include include include include int t pid t pid void print intmain else if pid 0 else return0 列印出來的資訊為 f...

Linux系統 程序概念初識

所有的裝置都是圍繞儲存器工作的 cpu 控制器 運算器 1.cpu不會直接從輸入裝置獲取資料進行處理,而是先把資料放到儲存器中,cpu從儲存器中獲取資料處理。2.cpu不會直接將資料交給輸出裝置進行輸出,而是先把資料報道儲存器中,控制輸出裝置從儲存器中獲取資料輸出 2.1什麼是作業系統?2.2什麼是...

初識多程序

程序 程序 process 是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎 狹義定義 程序是正在執行的程式的例項 an instance of a computer program that is being executed 廣義定義 程序...