q:為何需要多程序(或者多執行緒),為何需要併發?
a:併發技術,就是可以在同一時間同時執行多條任務的技術,使用者進行的任務往往不止乙個,單
cpu計算機實際上只能在乙個時間片段內執行一條指令。
linux
使用「程序排程」實現併發,為每個程序指派一定的執行時間,這個時間通常很短,然後依照某種規則,依次單個執行一條程序,其程序則處於等待狀態,由於每條程序單個執行的時間很短,從使用者的角度來看,就好像多程序同時執行一樣。
q:程序的分類,屬性怎麼劃分?
a:程序一般分為互動程序、批處理程序和守護程序三類。程序的屬性有程序
id,父程序和父程序的id(
ppid
),啟動程序的使用者id(
uid)和所歸屬的組(
gid),程序狀態,程序執行的優先順序,程序所連線的終端名和程序資源占用(如占用資源大小(記憶體、
cpu佔用量))。
q:linux程序管理工具的型別和作用?
a:有兩類: 1.
ps監視程序工具
,pgrep
查詢程序工具等監視查詢工具
,top
監視系統任務的工具; 2.
終止程序的工具kill,
killall,pkill,xkil。
q:linux程序的三態和轉換?
a:linux程序有三種基本狀態,即就緒狀態、執行狀態、阻塞狀態;
三種狀態中有四種轉換,即: 1.
就緒->執行,處於就緒狀態的程序,當程序排程程式為之分配了處理器之後,該程序便由就緒狀態變成執行狀態; 2.
執行->就緒,處於執行狀態的程序在其執行過程中,因分配給它的乙個時間片已用完而不得不讓出處理器,於是程序從執行狀態變為就緒狀態; 3.
執行->阻塞
,正在執行的程序因等待某種事件發生而無法執行時,便由執行狀態變成阻塞狀態; 4.
阻塞->就緒,處於阻塞狀態的程序,若其等待的事件已經發生,於是程序由阻塞狀態轉變為就緒狀態。
q:linux程序控制塊
pcb?
a:linux的程序控制塊是乙個由結構
task_struct
所定義的資料結構,
task_struct
存放在/include/linux/sched.h
中,包括管理程序所需的各種資訊。
linux
系統的所有程序控制塊組織成結構陣列形式。
linux
系統的pcb
包括很多引數,每個
pcb約佔
1kb的記憶體空間。
q:linux程序排程?
a:程式使用
cpu的三種模式分別為:
io密集型、計算密集型和平衡型;對於
linux
這種實時系統來說,排程的目標就是要達到截止時間前完成所應該完成的任務和提供效能的可**性。
排程演算法有fcfs,時間片輪詢演算法
,stcf
,優先順序排程以及其他排程演算法和其他實時系統的排程演算法。
q:程序執行流程
?a:linux主要提供了
fork,vfork,clone
三種程序建立方法;獲取程序函式有:
getppid
用於獲取父程序的程序識別碼,
getgid
用於取得真實的組識別碼。程序等待函式有
wait
和waitpid
兩種,都用於等待子程序中斷或結束。程序退出函式有
exit
和return
兩種。
程序控制程式設計
1.多程序與併發的關係 當有多個執行緒在操作時,如果系統只有乙個cpu,則它根本不可能同時真正進行乙個以上的執行緒,它只能把 cpu執行時間劃分成若干個時間段,再把時間段分配給各個執行緒執行,在乙個時間段的執行緒 執行時,其他執行緒處於掛起狀態。這種方式我們成為併發。2.kill,pkill,xki...
程序控制程式設計
一.程序的分類 互動程序,批處理程序,守護程序。二.程序的屬性 1.程序id pid 是唯一的數值,用來區分程序 2.父程序和父程序的id ppid 3.啟動程序的使用者id uid 和所歸屬的組 gid 4.程序狀態 狀態分為執行r,休眠s,殭屍z 5.程序執行的優先順序 6.程序所連線的終端名 ...
程序控制程式設計
程序的生命週期 建立 每個程序都是由其父程序建立,程序可以建立子程序,子程序又可以建立子程序的子程序 執行 多個程序可以同時存在,程序間可以通訊 撤銷 程序可以被撤銷,從而結束乙個程序的執行 程序的狀態 執行狀態 程序正在占用cpu 就緒狀態 程序已具備一切條件,正在等待分配cpu的處理時間片 等待...