Linux 程序狀態和system函式

2022-09-01 01:36:08 字數 638 閱讀 3175

1、程序的5種狀態

(1)、就緒態。

這個程序當前所有執行條件就緒,只要得到cpu時間就能直接執行。

(2)、執行態

就緒態時得到了cpu就進入執行態開始執行。

(3)、殭屍態

程序已經結束但是父程序還沒來得及**。

(4)、等待態(淺度睡眠/深度睡眠)

程序在等待某種條件 ,條件成熟後可進入就緒態。等待態下就算你給他cpu排程程序也無法執行。淺度睡眠等待時程序可以被(訊號)喚醒,而深度睡眠等待時不能被喚醒只能等待的條件到了才能結束睡眠。

(5)、暫停態

暫停並不是程序的終止,只是被人(訊號)給暫停了,還是可以被恢復的。

2、程序各種狀態之間的轉換圖

3、system函式簡介

(1)、system函式 = fork + exec

(2)、原子操作。

原子操作意思就是整個操作一旦開始就會不被打斷的執行完。原子操作的好處就是不會被人打斷(不會引來競爭狀態),壞處就是自己單獨連續占用cpu時間太長影響系統整體實時性,因此應該盡量避免不必要的原子操作,就算不得不原子操作也應該盡量使得原子操作的時間縮短。

Linux中的popen函式和system函式

說在前面 在實際程式設計中儘量減少使用system函式。int system const char command 說明 system 通過呼叫 bin sh c命令執行命令中指定的命令,並在命令完成後返回。在執行該命令期間,sigchld將被阻塞,並且sigint和sigquit將被忽略。返回值 ...

linux 程序 狀態

程序在執行過程中會根據環境來改變state。linux程序有以下狀態 running 程序處於執行 它是系統的當前程序 或者準備執行狀態 它在等待系統將cpu分配給它 waiting 程序在等待乙個事件或者資源。linux將等待程序分成兩類 可中斷與不可中斷。可中斷等待程序可以被訊號中斷 不可中斷等...

linux程序狀態

1.r task running,正在執行或者處於就緒狀態 很多作業系統教科書將正在cpu上執行的程序定義為running狀態 而將可執行但是尚未被排程執行的程序定義為ready狀態,這兩種狀態在linux下統一為 task running狀態。例子 ps aux 會看到ps這個程式命令的執行狀態是...