一.程序的分類
互動程序,批處理程序,守護程序。
二.程序的屬性
1.程序id(pid):是唯一的數值,用來區分程序
2.父程序和父程序的id(ppid)
3.啟動程序的使用者id(uid)和所歸屬的組(gid)
4.程序狀態:狀態分為執行r,休眠s,殭屍z
5.程序執行的優先順序
6.程序所連線的終端名
7.程序資源占用,如占用資源大小(記憶體,cpu佔用量)
三.linux程序的管理是通過什麼實現的
1.ps監視程序工具
2.pgrep查詢程序工具
3.top監視系統任務的工具
四.程序和程式的區別
程序是動態的,程式是靜態的:程式是有序**的集合;程序是程式的執行。通常程序不可在計算機之間遷移;而程式通常對應著檔案、靜態和可以複製
程序是暫時的,程式使長久的:程序是乙個狀態變化的過程,程式可長久儲存
程序與程式組成不同:程序的組成包括程式、資料和程序控制塊(即程序狀態資訊)
程序與程式的對應關係:通過多次執行,乙個程式可對應多個程序;通過呼叫關係,乙個程序可包括多個程式。
五.程序的狀態
執行狀態:程序正在占用cpu
就緒狀態:程序已具備一切條件,正在等待分配cpu的處理時間片
等待狀態:程序不能使用cpu,若等待事件發生則可將其喚醒
六.程序包含哪些段
linux中的程序包含3個段,分別為「資料段」、「**段」和「堆疊段」。
資料段」存放的是全域性變數、常數以及動態資料分配的資料空間;
**段」存放的是程式**的資料。
堆疊段」存放的是子程式的返回位址、子程式的引數以及程式的區域性變數等。
七.程序的排程方式和排程演算法
排程方式:搶占式和非搶占式
排程演算法:
先來先服務排程演算法
短程序優先排程演算法
高優先順序優先排程演算法
時間片輪轉法
八.殭屍程序怎麼產生
1.父程序呼叫fork建立子程序後,子程序執行直至其終止,它立即從記憶體中移除,但程序描述符仍然保留在記憶體中(程序描述符占有極少的記憶體空間)。
2.子程序的狀態變成exit_zombie,並且向父程序傳送sigchld 訊號,父程序此時應該呼叫 wait() 系統呼叫來獲取子程序的退出狀態以及其它的資訊。在wait呼叫之後,殭屍程序就完全從記憶體中移除。
3.因此乙個殭屍存在於其終止到父程序呼叫wait等函式這個時間的間隙,一般很快就消失,但如果程式設計不合理,父程序從不呼叫wait等系統呼叫來收集殭屍程序,那麼這些程序會一直存在記憶體中。
九.什麼叫程序互斥
程序互斥是指當有若干程序都要使用某一共享資源時,任何時刻最多允許乙個程序使用,其他要使用該資源的程序必須等待,直到占用該資源者釋放了該資源為止
十.什麼叫臨界資源
作業系統中將一次只允許乙個程序訪問的資源稱為臨界資源
十一.什麼叫臨界區
程序中訪問臨界資源的那段程式**稱為臨界區,為實現對臨界資源的互斥訪問,應保證諸程序互斥地進入各自的臨界區
十二.什麼叫死鎖
多個程序因競爭資源而形成一種僵局,若無外力作用,這些程序都將永遠不能再向前推進
十三.程序建立
1.pit_t fork(void)
功能:建立子程序
返回值:
0: 子程序;子程序id(大於0):父程序;-1: 出錯
子程序的資料空間、堆疊空間都會從父程序得到乙個拷貝,而不是共享。
2.pit_t vfork(void)
功能:建立子程序
3.fork和vfork的區別
(1) fork:子程序拷貝父程序的資料段
vfork:子程序與父程序共享資料段
(2) fork:父、子程序的執行次序不確定
vfork:子程序先執行,父程序後執行
十四.exec函式族
exec用被執行的程式替換呼叫它的程式。
區別:fork建立乙個新的程序,產生乙個新的pid。
exec啟動乙個新程式,替換原有的程序,因此程序的pid不會改變
函式格式:int execl(const char * path,const char * arg1, ...)
引數說明:path:被執行程式名(含完整路徑);arg1 – argn: 被執行程式所需的命令列引數,含程式名。以空指標(null)結束。
十五.程序等待
pit_t wait (int * status)
功能:阻塞該程序,直到其某個子程序退出
pit_t waitpid (pid_t pid, int * status, int options)
功能:會暫時停止目前程序的執行,直到有訊號來到或子程序結束
引數說明:如果不在意結束狀態值,則引數status可以設成null。
引數pid為欲等待的子程序識別碼:pid<-1 等待程序組識別碼為pid絕對值的任何子程序。pid=-1 等待任何子程序,相當於wait()。
pid=0 等待程序組識別碼與目前程序相同的任何子程序。pid>0 等待任何子程序識別碼為pid的子程序
引數option可以為0 或下面的or 組合:
wnohang: 如果沒有任何已經結束的子程序則馬上返回,不予以等待;wuntraced :如果子程序進入暫停執**況則馬上返回,但結束狀態不予以理會。
程序控制程式設計
q 為何需要多程序 或者多執行緒 為何需要併發?a 併發技術,就是可以在同一時間同時執行多條任務的技術,使用者進行的任務往往不止乙個,單 cpu計算機實際上只能在乙個時間片段內執行一條指令。linux 使用 程序排程 實現併發,為每個程序指派一定的執行時間,這個時間通常很短,然後依照某種規則,依次單...
程序控制程式設計
1.多程序與併發的關係 當有多個執行緒在操作時,如果系統只有乙個cpu,則它根本不可能同時真正進行乙個以上的執行緒,它只能把 cpu執行時間劃分成若干個時間段,再把時間段分配給各個執行緒執行,在乙個時間段的執行緒 執行時,其他執行緒處於掛起狀態。這種方式我們成為併發。2.kill,pkill,xki...
程序控制程式設計
程序的生命週期 建立 每個程序都是由其父程序建立,程序可以建立子程序,子程序又可以建立子程序的子程序 執行 多個程序可以同時存在,程序間可以通訊 撤銷 程序可以被撤銷,從而結束乙個程序的執行 程序的狀態 執行狀態 程序正在占用cpu 就緒狀態 程序已具備一切條件,正在等待分配cpu的處理時間片 等待...