UNIX進程控制課件_第1頁
UNIX進程控制課件_第2頁
UNIX進程控制課件_第3頁
UNIX進程控制課件_第4頁
UNIX進程控制課件_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

UNIX進程控制第一節(jié)UNIX中進程的基本概念進程與程序在并發(fā)環(huán)境下,一個正在執(zhí)行中的程序被稱為進程。程序是外存中的可執(zhí)行文件。進程實體由正文段、用戶數(shù)據(jù)段和棧段組成。多個進程可以同時執(zhí)行同一個程序。2.UNIX中的進程描述UNIX進程上下文劃分為:proc結(jié)構(gòu)和user結(jié)構(gòu)用戶棧、核心棧正文段、數(shù)據(jù)段Proc結(jié)構(gòu)系統(tǒng)棧用戶棧數(shù)據(jù)段正文段User結(jié)構(gòu)(1)proc結(jié)構(gòu)-進程最基本信息。進程狀態(tài)。進程用戶標(biāo)識。進程標(biāo)識。進程存儲大小。進程調(diào)度參數(shù)。軟中斷信號項。執(zhí)行時間及資源使用。User結(jié)構(gòu)起始址。進程頁表指針。被掛起事件描述(2)user結(jié)構(gòu)-是進程的私有信息和數(shù)據(jù)。指向proc的指針。系統(tǒng)調(diào)用參數(shù)。與用戶標(biāo)識有關(guān)項。與文件結(jié)構(gòu)有關(guān)項。輸入輸出項。打開文件描述符。中斷及軟中斷參數(shù)。錯誤信息。個段長度。文件權(quán)限屏蔽項。交換數(shù)據(jù)項進程的一些重要信息PID一個整數(shù),它是進程唯一的標(biāo)識符,又稱進程號。PID按進程創(chuàng)建的順序賦值。PPID父進程的PIDUID和EUIDUID是進程創(chuàng)建者的UID。EUID是進程的“有效”UID。設(shè)置了setuid位的程序運行時,其進程的UID和EUID可能不同。GID和EGIDGID是進程的GID。EGID和GID的關(guān)系同UID與EUID。優(yōu)先級和謙讓值(niceness)進程的優(yōu)先級確定了其能獲得多少CPU時間。謙讓值又稱優(yōu)先數(shù),值越高進程的優(yōu)先級越低。影響內(nèi)部優(yōu)先級的其他因素是進程近來所耗用的CPU時間量以及等待運行所耗費的時間長度??刂平K端當(dāng)從Shell啟動一個命令時,其所在的終端通常就是新啟動的進程的控制終端。一個進程的控制終端可以使用信號作為一種讓用戶中斷或掛起該進程的手段。UNIX中的兩個特殊進程0#進程由內(nèi)核程序創(chuàng)建,初始化時創(chuàng)建1#進程平時負責(zé)調(diào)度分配處理器管理中負責(zé)進程調(diào)度與交換1#進程是所有用戶進程的祖先進程第二節(jié)UNIX中進程的生命周期UNIX如何建立進程和在程序中啟動程序?基本概念Unix中的進程是由系統(tǒng)調(diào)用fork創(chuàng)建的實體。調(diào)用fork的進程是父進程,由fork創(chuàng)建的進程是子進程。一個進程可以有多個子進程,但只有一個父進程。父子進程的關(guān)系圖parentchildchildforkexecexit自動waitZOMBIEexit自動init孤兒父進程在子進程結(jié)束之前結(jié)束“僵尸進程”是指那種處于退出中途狀態(tài)的進程。fork系統(tǒng)調(diào)用功能:創(chuàng)建子進程返回值:對子進程返回0;對父進程返回子進程號(大于0);創(chuàng)建失敗返回-1完成的工作:(1)在進程表中為子進程分配proc結(jié)構(gòu);(2)給子進程賦唯一的標(biāo)識符pid;(3)復(fù)制父進程上下文的一個邏輯副本;(4)增加父進程的文件表、索引節(jié)點表的引用數(shù)。建立進程的典型代碼……pid=fork();if(pid==0)

{

/*

子進程運行,例如exec(“ap1”,…)

*/….

}else

if(pid>0){

/*

父進程運行,例如wait();

*/….

}else{

/*fork失敗的處理*/….

}exec系統(tǒng)調(diào)用系列功能:用參數(shù)中指定的可執(zhí)行程序副本覆蓋調(diào)用程序的正文段和數(shù)據(jù)段,并使用參數(shù)指定的執(zhí)行參數(shù)執(zhí)行新的代碼段。比較fork系統(tǒng)調(diào)用和exec系統(tǒng)調(diào)用調(diào)用的基本格式:

execve(pathname,argv,envp)

六種調(diào)用方式execveexecleexecvpexecvexeclexeclp執(zhí)行文件的路徑名字符指針數(shù)組,是可執(zhí)行程序的參數(shù)字符指針數(shù)組,指示執(zhí)行程序的環(huán)境l:長格式調(diào)用,每個參數(shù)指針獨立傳遞并以空指針0結(jié)束;v:用argv指針數(shù)組傳遞運行參數(shù);e:從envp指針數(shù)組傳遞環(huán)境參數(shù);p:在當(dāng)前目錄中搜索指定的文件,否則在PATH指定的目錄中搜索。fork和exec的內(nèi)存變化實例比較main(){intpid;

pid=fork();if(pid==0) printf(“I’mthechild.\n”);elseif(pid>0) printf(“I’mtheparent.\n”);elseprintf(“forkfailed.\n”);printf(“programend.\n”);}main(){intpid;

pid=fork();if(pid==0){

printf(“I’mthechild.\n”);

execl(“/bin/ls”,”ls”,0);

perror(“execerror.\n”);}elseif(pid>0) printf(“I’mtheparent.\n”)elseprintf(“forkfailed.\n”);printf(“programend.\n”);}I’mthechild.programend.I’mtheparent.programend.I’mthechild.當(dāng)前目錄下的內(nèi)容I’mtheparent.programend.wait系統(tǒng)調(diào)用功能:等待子進程結(jié)束,從而使父進程與其執(zhí)行的子進程的終止點同步調(diào)用格式:wait(status_addr)返回值:終止的子進程的pidwaitpid系統(tǒng)調(diào)用子進程結(jié)束時返回的狀態(tài)信息的地址UNIX中的進程終止正常終止從main函數(shù)返回調(diào)用exit函數(shù)調(diào)用_exit系統(tǒng)調(diào)用函數(shù)異常終止調(diào)用abort函數(shù)進程接收到某信號SIGABRT信號exit系統(tǒng)調(diào)用功能:釋放進程占用的資源返回給系統(tǒng)內(nèi)核一個值,由系統(tǒng)根據(jù)狀態(tài)字生成終止?fàn)顟B(tài)并反饋給wait()??赡墚a(chǎn)生的兩種異常情況:子進程進入僵死(zombie)狀態(tài);子進程變成孤兒。調(diào)用格式:exit(status)第三節(jié)

UNIX的進程層次和初啟過程1.終端登錄2.網(wǎng)絡(luò)登錄終端登錄方式下的UNIX進程層次注冊周期網(wǎng)絡(luò)登錄方式下的UNIX進程層次例析UNIXshell的工作過程第四節(jié)相關(guān)的管理命令查看系統(tǒng)進程ps命令系統(tǒng)管理員監(jiān)視進程的主要工具??捎糜陲@示進程的PID、UID、優(yōu)先級及控制終端;還可給出進程在使用多少內(nèi)存、耗用的CPU時間以及當(dāng)前的進程狀態(tài)等;并明確地標(biāo)識出僵尸進程。命令格式:ps[option]常用的兩種ps命令格式

ps-efps–ef輸出的解釋欄目內(nèi)容欄目內(nèi)容UID屬主的用戶名STIME進程啟動時刻PID進程IDTTY控制終端PPID父進程IDTIME已耗用的CPU時間CCPU使用/調(diào)度信息COMD命令及參數(shù)

ps-auxps–aux輸出的解釋欄目內(nèi)容USER進程屬主的用戶名PID進程ID%CPU進程正在使用的CPU時間的百分比%MEM進程正在使用的實際內(nèi)存量的百分比VSZ進程的虛存空間大小,單位為KBRSS駐留集大?。▋?nèi)存中1K大小的頁面?zhèn)€數(shù))TT控制終端IDSTAT當(dāng)前進程狀態(tài)START進程啟動時刻TIME進程已耗用的CPU時間COMMAND命令名和參數(shù)進程狀態(tài)STAT值狀態(tài)含義R可運行進程可被執(zhí)行S睡眠中進程在等待某資源W對換出進程不在內(nèi)存中Z僵尸進程處于“僵死”狀態(tài)T被阻止進程被掛起top命令實時地對系統(tǒng)中資源的使用狀況進行監(jiān)測,顯示當(dāng)前系統(tǒng)中最占用CPU資源的進程,同時提供一個交互界面讓用戶觀測系統(tǒng)的進程情況。優(yōu)點:功能強;缺點:需要長久占用前臺。vmstat命令…進程調(diào)度進程的掛起及恢復(fù)掛起當(dāng)前的前臺作業(yè):Ctrl+Z查看掛起的進程:jobs命令恢復(fù)進程的執(zhí)行恢復(fù)到前臺執(zhí)行:fg命令恢復(fù)到后臺執(zhí)行:bg命令改變進程的優(yōu)先級renice命令命令格式:renicenumberPID注意:普通用戶只能對自己的進程使用renice超戶可以對任何進程使用renice只有超戶才有權(quán)增加進程的優(yōu)先級終止進程前臺進程的中斷:Ctrl+C后臺進程的中斷:kill命令kill命令功能:向進程發(fā)送信號命令格式:kill[-signal]pid-9-HUP第五節(jié)周期性進程什么時候會用到周期性的進程?UNIX系統(tǒng)中的cron守護進程crontab配置文件格式:minutehourdaymonthweekdaycommandcrontab文件的修改:crontab命令

只執(zhí)行一次的計劃性任務(wù)

at命令:在指定時刻執(zhí)行指定的命令序列;

batch命令:在系統(tǒng)負載較低、資源較空閑時執(zhí)行指定的命令系列。第六節(jié)出錯的進程掛起的進程失控的進程用戶進程使用了過分的系統(tǒng)資源(如CPU、硬盤空間等);系統(tǒng)進程表現(xiàn)出瘋狂的行為。解決方法尋找失控的進程判斷失控的原因STOP信號CONT信號歷史悠久的“鬼把戲”while1mkdiradircdadir

touchafileend作業(yè)1.讀下面兩個程序,寫出它們各自運行的結(jié)果,并分析其結(jié)果不同的原因。程序1: 程序2:#include<stdio.h> #include<stdio.h>main() main(){intpid; {intpid;

pid=fork(); pid=fork();if(pid<0) if(pid<0){printf(“forkerror.\n”); {printf(“forkerror.\n”);exit(1); exit(1); }elseif(pid==0) }elseif(pid==0)

printf(“I’machild.\n”);

{printf(“I’machild.\n”);

printf(“Testprocess.\n”);exit(0);} }

prin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論