UNIX进程控制课件_第1页
UNIX进程控制课件_第2页
UNIX进程控制课件_第3页
UNIX进程控制课件_第4页
UNIX进程控制课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

{

/*

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

*/….

}else

if(pid>0){

/*

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

*/….

}else{

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

}exec系統調用系列功能:用參數中指定的可執行程式副本覆蓋調用程式的正文段和數據段,並使用參數指定的執行參數執行新的代碼段。比較fork系統調用和exec系統調用調用的基本格式:

execve(pathname,argv,envp)

六種調用方式execveexecleexecvpexecvexeclexeclp執行檔的路徑名字元指針數組,是可執行程式的參數字元指針數組,指示執行程式的環境l:長格式調用,每個參數指針獨立傳遞並以空指針0結束;v:用argv指針數組傳遞運行參數;e:從envp指針數組傳遞環境參數;p:在當前目錄中搜索指定的檔,否則在PATH指定的目錄中搜索。fork和exec的記憶體變化實例比較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.當前目錄下的內容I’mtheparent.programend.wait系統調用功能:等待子進程結束,從而使父進程與其執行的子進程的終止點同步調用格式:wait(status_addr)返回值:終止的子進程的pidwaitpid系統調用子進程結束時返回的狀態資訊的地址UNIX中的進程終止正常終止從main函數返回調用exit函數調用_exit系統調用函數異常終止調用abort函數進程接收到某信號SIGABRT信號exit系統調用功能:釋放進程佔用的資源返回給系統內核一個值,由系統根據狀態字生成終止狀態並回饋給wait()。可能產生的兩種異常情況:子進程進入僵死(zombie)狀態;子進程變成孤兒。調用格式:exit(status)第三節

UNIX的進程層次和初啟過程1.終端登錄2.網路登錄終端登錄方式下的UNIX進程層次註冊週期網路登錄方式下的UNIX進程層次例析UNIXshell的工作過程第四節相關的管理命令查看系統進程ps命令系統管理員監視進程的主要工具。可用於顯示進程的PID、UID、優先順序及控制終端;還可給出進程在使用多少記憶體、耗用的CPU時間以及當前的進程狀態等;並明確地標識出僵屍進程。命令格式:ps[option]常用的兩種ps命令格式

ps-efps–ef輸出的解釋欄目內容欄目內容UID屬主的用戶名STIME進程啟動時刻PID進程IDTTY控制終端PPID父進程IDTIME已耗用的CPU時間CCPU使用/調度資訊COMD命令及參數

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

只執行一次的計劃性任務

at命令:在指定時刻執行指定的命令序列;

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

touchafileend作業1.讀下麵兩個程式,寫出它們各自運行的結果,並分析其結果不同的原因。程式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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论