版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
UNIX進(jìn)程控制第一節(jié)UNIX中進(jìn)程的基本概念進(jìn)程與程序在并發(fā)環(huán)境下,一個(gè)正在執(zhí)行中的程序被稱為進(jìn)程。程序是外存中的可執(zhí)行文件。進(jìn)程實(shí)體由正文段、用戶數(shù)據(jù)段和棧段組成。多個(gè)進(jìn)程可以同時(shí)執(zhí)行同一個(gè)程序。2.UNIX中的進(jìn)程描述UNIX進(jìn)程上下文劃分為: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)-進(jìn)程最基本信息。進(jìn)程狀態(tài)。進(jìn)程用戶標(biāo)識(shí)。進(jìn)程標(biāo)識(shí)。進(jìn)程存儲(chǔ)大小。進(jìn)程調(diào)度參數(shù)。軟中斷信號(hào)項(xiàng)。執(zhí)行時(shí)間及資源使用。User結(jié)構(gòu)起始址。進(jìn)程頁表指針。被掛起事件描述(2)user結(jié)構(gòu)-是進(jìn)程的私有信息和數(shù)據(jù)。指向proc的指針。系統(tǒng)調(diào)用參數(shù)。與用戶標(biāo)識(shí)有關(guān)項(xiàng)。與文件結(jié)構(gòu)有關(guān)項(xiàng)。輸入輸出項(xiàng)。打開文件描述符。中斷及軟中斷參數(shù)。錯(cuò)誤信息。個(gè)段長度。文件權(quán)限屏蔽項(xiàng)。交換數(shù)據(jù)項(xiàng)進(jìn)程的一些重要信息PID一個(gè)整數(shù),它是進(jìn)程唯一的標(biāo)識(shí)符,又稱進(jìn)程號(hào)。PID按進(jìn)程創(chuàng)建的順序賦值。PPID父進(jìn)程的PIDUID和EUIDUID是進(jìn)程創(chuàng)建者的UID。EUID是進(jìn)程的“有效”UID。設(shè)置了setuid位的程序運(yùn)行時(shí),其進(jìn)程的UID和EUID可能不同。GID和EGIDGID是進(jìn)程的GID。EGID和GID的關(guān)系同UID與EUID。優(yōu)先級(jí)和謙讓值(niceness)進(jìn)程的優(yōu)先級(jí)確定了其能獲得多少CPU時(shí)間。謙讓值又稱優(yōu)先數(shù),值越高進(jìn)程的優(yōu)先級(jí)越低。影響內(nèi)部優(yōu)先級(jí)的其他因素是進(jìn)程近來所耗用的CPU時(shí)間量以及等待運(yùn)行所耗費(fèi)的時(shí)間長度??刂平K端當(dāng)從Shell啟動(dòng)一個(gè)命令時(shí),其所在的終端通常就是新啟動(dòng)的進(jìn)程的控制終端。一個(gè)進(jìn)程的控制終端可以使用信號(hào)作為一種讓用戶中斷或掛起該進(jìn)程的手段。UNIX中的兩個(gè)特殊進(jìn)程0#進(jìn)程由內(nèi)核程序創(chuàng)建,初始化時(shí)創(chuàng)建1#進(jìn)程平時(shí)負(fù)責(zé)調(diào)度分配處理器管理中負(fù)責(zé)進(jìn)程調(diào)度與交換1#進(jìn)程是所有用戶進(jìn)程的祖先進(jìn)程第二節(jié)UNIX中進(jìn)程的生命周期UNIX如何建立進(jìn)程和在程序中啟動(dòng)程序?基本概念Unix中的進(jìn)程是由系統(tǒng)調(diào)用fork創(chuàng)建的實(shí)體。調(diào)用fork的進(jìn)程是父進(jìn)程,由fork創(chuàng)建的進(jìn)程是子進(jìn)程。一個(gè)進(jìn)程可以有多個(gè)子進(jìn)程,但只有一個(gè)父進(jìn)程。父子進(jìn)程的關(guān)系圖parentchildchildforkexecexit自動(dòng)waitZOMBIEexit自動(dòng)init孤兒父進(jìn)程在子進(jìn)程結(jié)束之前結(jié)束“僵尸進(jìn)程”是指那種處于退出中途狀態(tài)的進(jìn)程。fork系統(tǒng)調(diào)用功能:創(chuàng)建子進(jìn)程返回值:對(duì)子進(jìn)程返回0;對(duì)父進(jìn)程返回子進(jìn)程號(hào)(大于0);創(chuàng)建失敗返回-1完成的工作:(1)在進(jìn)程表中為子進(jìn)程分配proc結(jié)構(gòu);(2)給子進(jìn)程賦唯一的標(biāo)識(shí)符pid;(3)復(fù)制父進(jìn)程上下文的一個(gè)邏輯副本;(4)增加父進(jìn)程的文件表、索引節(jié)點(diǎn)表的引用數(shù)。建立進(jìn)程的典型代碼……pid=fork();if(pid==0)
{
/*
子進(jìn)程運(yùn)行,例如exec(“ap1”,…)
*/….
}else
if(pid>0){
/*
父進(jìn)程運(yùn)行,例如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)用,每個(gè)參數(shù)指針獨(dú)立傳遞并以空指針0結(jié)束;v:用argv指針數(shù)組傳遞運(yùn)行參數(shù);e:從envp指針數(shù)組傳遞環(huán)境參數(shù);p:在當(dāng)前目錄中搜索指定的文件,否則在PATH指定的目錄中搜索。fork和exec的內(nèi)存變化實(shí)例比較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)用功能:等待子進(jìn)程結(jié)束,從而使父進(jìn)程與其執(zhí)行的子進(jìn)程的終止點(diǎn)同步調(diào)用格式:wait(status_addr)返回值:終止的子進(jìn)程的pidwaitpid系統(tǒng)調(diào)用子進(jìn)程結(jié)束時(shí)返回的狀態(tài)信息的地址UNIX中的進(jìn)程終止正常終止從main函數(shù)返回調(diào)用exit函數(shù)調(diào)用_exit系統(tǒng)調(diào)用函數(shù)異常終止調(diào)用abort函數(shù)進(jìn)程接收到某信號(hào)SIGABRT信號(hào)exit系統(tǒng)調(diào)用功能:釋放進(jìn)程占用的資源返回給系統(tǒng)內(nèi)核一個(gè)值,由系統(tǒng)根據(jù)狀態(tài)字生成終止?fàn)顟B(tài)并反饋給wait()。可能產(chǎn)生的兩種異常情況:子進(jìn)程進(jìn)入僵死(zombie)狀態(tài);子進(jìn)程變成孤兒。調(diào)用格式:exit(status)第三節(jié)
UNIX的進(jìn)程層次和初啟過程1.終端登錄2.網(wǎng)絡(luò)登錄終端登錄方式下的UNIX進(jìn)程層次注冊(cè)周期網(wǎng)絡(luò)登錄方式下的UNIX進(jìn)程層次例析UNIXshell的工作過程第四節(jié)相關(guān)的管理命令查看系統(tǒng)進(jìn)程ps命令系統(tǒng)管理員監(jiān)視進(jìn)程的主要工具??捎糜陲@示進(jìn)程的PID、UID、優(yōu)先級(jí)及控制終端;還可給出進(jìn)程在使用多少內(nèi)存、耗用的CPU時(shí)間以及當(dāng)前的進(jìn)程狀態(tài)等;并明確地標(biāo)識(shí)出僵尸進(jìn)程。命令格式:ps[option]常用的兩種ps命令格式
ps-efps–ef輸出的解釋欄目內(nèi)容欄目內(nèi)容UID屬主的用戶名STIME進(jìn)程啟動(dòng)時(shí)刻PID進(jìn)程IDTTY控制終端PPID父進(jìn)程IDTIME已耗用的CPU時(shí)間CCPU使用/調(diào)度信息COMD命令及參數(shù)
ps-auxps–aux輸出的解釋欄目內(nèi)容USER進(jìn)程屬主的用戶名PID進(jìn)程ID%CPU進(jìn)程正在使用的CPU時(shí)間的百分比%MEM進(jìn)程正在使用的實(shí)際內(nèi)存量的百分比VSZ進(jìn)程的虛存空間大小,單位為KBRSS駐留集大?。▋?nèi)存中1K大小的頁面?zhèn)€數(shù))TT控制終端IDSTAT當(dāng)前進(jìn)程狀態(tài)START進(jìn)程啟動(dòng)時(shí)刻TIME進(jìn)程已耗用的CPU時(shí)間COMMAND命令名和參數(shù)進(jìn)程狀態(tài)STAT值狀態(tài)含義R可運(yùn)行進(jìn)程可被執(zhí)行S睡眠中進(jìn)程在等待某資源W對(duì)換出進(jìn)程不在內(nèi)存中Z僵尸進(jìn)程處于“僵死”狀態(tài)T被阻止進(jìn)程被掛起top命令實(shí)時(shí)地對(duì)系統(tǒng)中資源的使用狀況進(jìn)行監(jiān)測(cè),顯示當(dāng)前系統(tǒng)中最占用CPU資源的進(jìn)程,同時(shí)提供一個(gè)交互界面讓用戶觀測(cè)系統(tǒng)的進(jìn)程情況。優(yōu)點(diǎn):功能強(qiáng);缺點(diǎn):需要長久占用前臺(tái)。vmstat命令…進(jìn)程調(diào)度進(jìn)程的掛起及恢復(fù)掛起當(dāng)前的前臺(tái)作業(yè):Ctrl+Z查看掛起的進(jìn)程:jobs命令恢復(fù)進(jìn)程的執(zhí)行恢復(fù)到前臺(tái)執(zhí)行:fg命令恢復(fù)到后臺(tái)執(zhí)行:bg命令改變進(jìn)程的優(yōu)先級(jí)renice命令命令格式:renicenumberPID注意:普通用戶只能對(duì)自己的進(jìn)程使用renice超戶可以對(duì)任何進(jìn)程使用renice只有超戶才有權(quán)增加進(jìn)程的優(yōu)先級(jí)終止進(jìn)程前臺(tái)進(jìn)程的中斷:Ctrl+C后臺(tái)進(jìn)程的中斷:kill命令kill命令功能:向進(jìn)程發(fā)送信號(hào)命令格式:kill[-signal]pid-9-HUP第五節(jié)周期性進(jìn)程什么時(shí)候會(huì)用到周期性的進(jìn)程?UNIX系統(tǒng)中的cron守護(hù)進(jìn)程crontab配置文件格式:minutehourdaymonthweekdaycommandcrontab文件的修改:crontab命令
只執(zhí)行一次的計(jì)劃性任務(wù)
at命令:在指定時(shí)刻執(zhí)行指定的命令序列;
batch命令:在系統(tǒng)負(fù)載較低、資源較空閑時(shí)執(zhí)行指定的命令系列。第六節(jié)出錯(cuò)的進(jìn)程掛起的進(jìn)程失控的進(jìn)程用戶進(jìn)程使用了過分的系統(tǒng)資源(如CPU、硬盤空間等);系統(tǒng)進(jìn)程表現(xiàn)出瘋狂的行為。解決方法尋找失控的進(jìn)程判斷失控的原因STOP信號(hào)CONT信號(hào)歷史悠久的“鬼把戲”while1mkdiradircdadir
touchafileend作業(yè)1.讀下面兩個(gè)程序,寫出它們各自運(yùn)行的結(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版城市基礎(chǔ)設(shè)施建設(shè)委托合同范例大全3篇
- 2025年樹林資源綜合利用與循環(huán)經(jīng)濟(jì)承包合同范本3篇
- 2025年食堂食品安全風(fēng)險(xiǎn)評(píng)估承包合同3篇
- 2025年山東貨運(yùn)從業(yè)資格證500道題目及答案
- 2025版停薪留職合同模板:民營企業(yè)員工休整計(jì)劃書3篇
- 二零二五年度城市綠化工程項(xiàng)目采購安裝合同3篇
- 二零二五年度地質(zhì)勘探臨時(shí)駕駛員用工合同4篇
- 2025年度物流園區(qū)個(gè)人運(yùn)輸承包服務(wù)協(xié)議2篇
- 2025年度模板木方項(xiàng)目合作協(xié)議范本大全3篇
- 2025年度個(gè)人對(duì)個(gè)人個(gè)人應(yīng)急借款合同模板4篇
- 土地買賣合同參考模板
- 新能源行業(yè)市場(chǎng)分析報(bào)告
- 2025年天津市政建設(shè)集團(tuán)招聘筆試參考題庫含答案解析
- 房地產(chǎn)運(yùn)營管理:提升項(xiàng)目品質(zhì)
- 自愿斷絕父子關(guān)系協(xié)議書電子版
- 你劃我猜游戲【共159張課件】
- 專升本英語閱讀理解50篇
- 中餐烹飪技法大全
- 新型電力系統(tǒng)研究
- 滋補(bǔ)類用藥的培訓(xùn)
- 北師大版高三數(shù)學(xué)選修4-6初等數(shù)論初步全冊(cè)課件【完整版】
評(píng)論
0/150
提交評(píng)論