




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、進(jìn)程(線程)控制實(shí)驗(yàn)五 進(jìn)程(線程)控制v預(yù)備知識Linux進(jìn)程及其屬性Linux進(jìn)程派生關(guān)系Linux線程v實(shí)驗(yàn)指導(dǎo)Linux進(jìn)程管理命令Linux進(jìn)程控制函數(shù)Linux守護(hù)進(jìn)程v實(shí)驗(yàn)?zāi)康摹?nèi)容1.1 Linux進(jìn)程及其屬性(1)vLinux中對各種資源的分配和管理都以進(jìn)程為單位v操作系統(tǒng)需要跟蹤所有進(jìn)程的活動,以及它們對系統(tǒng)資源的使用情況,從而實(shí)施對進(jìn)程和資源的動態(tài)管理vLinux系統(tǒng)的進(jìn)程類型交互進(jìn)程:Shell啟動的進(jìn)程,可在前臺或后臺運(yùn)行批處理進(jìn)程:進(jìn)程序列,不與特定終端關(guān)聯(lián)守護(hù)進(jìn)程(Daemon):后臺服務(wù)進(jìn)程,獨(dú)立于控制終端,常在系統(tǒng)引導(dǎo)裝入時啟動,在系統(tǒng)關(guān)閉時終止1.1 Lin
2、ux進(jìn)程及其屬性(2)v進(jìn)程的描述信息PID:進(jìn)程的ID號,內(nèi)核按進(jìn)程創(chuàng)建順序逐一分配。init進(jìn)程PID為1,其他進(jìn)程的PID依次增加PPID:父進(jìn)程號。現(xiàn)有進(jìn)程需克隆自身創(chuàng)建一個新進(jìn)程(init進(jìn)程除外),被克隆的進(jìn)程稱為父進(jìn)程,克隆出的副本進(jìn)程稱為子進(jìn)程PGID:進(jìn)程組號。主進(jìn)程(初始的父進(jìn)程)創(chuàng)建的所有進(jìn)程擁有相同的進(jìn)程組號PGIDUID:進(jìn)程的真實(shí)用戶號EUID:進(jìn)程的有效用戶號。用于確定進(jìn)程在給定時刻對哪些資源和文件具有訪問權(quán)限。多數(shù)情況下EUID和UID相同GID:進(jìn)程用戶組號FGID:有效進(jìn)程用戶組號1.2 Linux進(jìn)程派生關(guān)系Linux用進(jìn)程樹進(jìn)行進(jìn)程管理v0號進(jìn)程(也稱交
3、換進(jìn)程)完成進(jìn)程調(diào)度和讓進(jìn)程在主存與磁盤上進(jìn)行交換v1號進(jìn)程(內(nèi)核態(tài))負(fù)責(zé)執(zhí)行內(nèi)核的部分初始化工作及系統(tǒng)配置,并創(chuàng)建若干個用于高速緩存和虛擬主存管理的內(nèi)核線程v1號進(jìn)程調(diào)用execve()運(yùn)行可執(zhí)行程序init,演變成用戶態(tài)1號進(jìn)程,即init進(jìn)程,完成系統(tǒng)啟動工作v1.3 Linux線程(1)v從Linux2.6開始,Linux kernel才有真正的thread支持Linux2.6線程庫叫NPTL(Native POSIX Thread Library),基于進(jìn)程實(shí)現(xiàn),但創(chuàng)建線程的效率非常高核內(nèi)的輕量級進(jìn)程形式:擁有獨(dú)立的進(jìn)程表項(xiàng),而所有操作都在核外pthread庫中進(jìn)行核外的1:1線程模
4、型:一個核心進(jìn)程對應(yīng)一個線程,將線程調(diào)度等同于進(jìn)程調(diào)度,交給核心完成,而其它工作都在核外線程庫中完成1.3 Linux線程(2)vLinux線程分為內(nèi)核線程和用戶線程兩種線程模型內(nèi)核線程更利于并發(fā)使用多處理器的資源用戶線程更多考慮上下文切換開銷內(nèi)核線程沒有獨(dú)立的地址空間,只在內(nèi)核空間運(yùn)行用戶線程在用戶空間中實(shí)現(xiàn)內(nèi)核線程的調(diào)度由內(nèi)核負(fù)責(zé),內(nèi)核線程處于阻塞狀態(tài)時不影響其他的內(nèi)核進(jìn)程用戶線程的調(diào)度由線程運(yùn)行庫來組織線程的調(diào)度,進(jìn)程中的用戶線程阻塞時整個進(jìn)程會切換為等待狀態(tài),其他線程不能運(yùn)行實(shí)驗(yàn)五 進(jìn)程(線程)控制v預(yù)備知識Linux進(jìn)程及其屬性Linux進(jìn)程派生關(guān)系Linux線程v實(shí)驗(yàn)指導(dǎo)Linux
5、進(jìn)程管理命令Linux進(jìn)程控制函數(shù)Linux守護(hù)進(jìn)程v實(shí)驗(yàn)?zāi)康摹?nèi)容2.1 Linux進(jìn)程管理命令進(jìn)程查看vps命令:報(bào)告進(jìn)程標(biāo)識、用戶、CPU時間消耗以及其他屬性命令單獨(dú)使用可以看到前臺執(zhí)行的進(jìn)程;后臺進(jìn)程可以使用帶參數(shù)的ps命令(如ps -ax)提供進(jìn)程的一次性查看,結(jié)果不連續(xù)結(jié)果數(shù)據(jù)很精確,但數(shù)據(jù)量龐大vtop命令:顯示CPU占用率為前幾位的進(jìn)程動態(tài)顯示,輸出結(jié)果連續(xù)消耗較多的系統(tǒng)資源vpstree命令:列出當(dāng)前的進(jìn)程,以及它們的樹狀結(jié)構(gòu)將當(dāng)前的執(zhí)行程序以樹狀結(jié)構(gòu)顯示,彌補(bǔ)ps命令的不足支持指定特定程序(PID)或使用者(USER)作為顯示的起始2.1 Linux進(jìn)程管理命令進(jìn)程終止v終
6、止一個進(jìn)程或終止一個正在運(yùn)行的程序kill命令:根據(jù)PID向進(jìn)程發(fā)送信號,缺省操作是停止進(jìn)程如果進(jìn)程啟動了子進(jìn)程,只終止父進(jìn)程,子進(jìn)程運(yùn)行中將仍消耗資源成為“僵尸”進(jìn)程,可用kill -9強(qiáng)制終止退出pkill命令:終止同一進(jìn)程組內(nèi)的所有進(jìn)程。允許指定要終止的進(jìn)程名稱,而非PIDKillall命令:與pkill應(yīng)用方法類似,直接殺死運(yùn)行中的程序數(shù)據(jù)庫服務(wù)器的父進(jìn)程不能用這些命令殺死(容易產(chǎn)生更多的文件碎片導(dǎo)致數(shù)據(jù)庫崩潰)2.1 Linux進(jìn)程管理命令進(jìn)程優(yōu)先級設(shè)置v進(jìn)程優(yōu)先級nice值進(jìn)程在計(jì)劃執(zhí)行時被賦予默認(rèn)值為0,范圍從20(最有利的調(diào)度優(yōu)先級)到19(最不利的調(diào)度優(yōu)先級)v進(jìn)程優(yōu)先級設(shè)置
7、nice命令:使用比默認(rèn)nice值更高或者更低的優(yōu)先級運(yùn)行進(jìn)程 renice命令:調(diào)整已經(jīng)運(yùn)行的進(jìn)程的優(yōu)先級 root用戶可以提高或降低任意進(jìn)程的nice值,普通用戶只能增加進(jìn)程優(yōu)先級的值(降低優(yōu)先級)2.2 Linux進(jìn)程控制函數(shù)創(chuàng)建進(jìn)程vfork() 產(chǎn)生當(dāng)前進(jìn)程的 拷貝2.2 Linux進(jìn)程控制函數(shù)修改進(jìn)程v函數(shù)族exec() :啟動另外的進(jìn)程取代當(dāng)前的進(jìn)程#include int execl(const char *path, const char *arg, .);int execlp(const char *file, const char *arg, .);int execle(
8、const char *path, const char *arg, const char *envp);int execv(const char *path, const char *argv);int execve(const char *path, const char *argv, const char *envp;int execvp(const char *file, const char *argv);2.2 Linux進(jìn)程控制函數(shù)進(jìn)程屬性操作v設(shè)置進(jìn)程屬性nice():改變進(jìn)程執(zhí)行的優(yōu)先級setpgid():將指定進(jìn)程的組進(jìn)程設(shè)為指定的組識別碼setpgrp():將目前進(jìn)程的組
9、進(jìn)程識別碼設(shè)為目前進(jìn)程的進(jìn)程識別碼,等價(jià)于setpgid(0,0)setpriority():設(shè)置進(jìn)程、進(jìn)程組和用戶的執(zhí)行優(yōu)先權(quán)v獲取進(jìn)程屬性getpid():獲取目前進(jìn)程的進(jìn)程標(biāo)識getpgid():獲得參數(shù)pid指定進(jìn)程所屬的組識別碼getpgrp():獲得目前進(jìn)程所屬的組識別號,等價(jià)于getpgid(0)getpriotity():獲得進(jìn)程、進(jìn)程組和用戶的執(zhí)行優(yōu)先權(quán)2.2 Linux控制函數(shù)進(jìn)程退出v正常退出:在main()函數(shù)中執(zhí)行return、調(diào)用exit()函數(shù)或_exit()函數(shù)v異常退出:調(diào)用abort()函數(shù)、進(jìn)程收到信號而終止v區(qū)別exit是一個函數(shù),有參數(shù),把控制權(quán)交給系
10、統(tǒng)return是函數(shù)執(zhí)行完后的返回,將控制權(quán)交給調(diào)用函數(shù)exit是正常終止進(jìn)程,abort是異常終止exit中參數(shù)為0代表進(jìn)程正常終止,為其他值表示程序執(zhí)行過程中有錯誤發(fā)生exit()在頭文件stdlib.h中聲明,先執(zhí)行清除操作,再將控制權(quán)返回給內(nèi)核_exit()在頭文件unistd.h中聲明,執(zhí)行后立即返回給內(nèi)核2.3 Linux守護(hù)進(jìn)程v獨(dú)立啟動(stand_alone)守護(hù)進(jìn)程常駐內(nèi)存,一直占用系統(tǒng)資源外界有要求時響應(yīng)速度較快放在/etc/init.d/目錄下v超級守護(hù)進(jìn)程系統(tǒng)啟動時由超級守護(hù)進(jìn)程xinet負(fù)責(zé)管理,當(dāng)相應(yīng)請求到來時通過xinet的轉(zhuǎn)接喚醒被xinet管理的進(jìn)程最初只有
11、xinet占有系統(tǒng)資源,其他的內(nèi)部服務(wù)不占有系統(tǒng)資源,只有數(shù)據(jù)包到來時才被喚醒放在/etc/xinit.d/目錄下2.3 Linux守護(hù)進(jìn)程守護(hù)進(jìn)程的編寫(1) 創(chuàng)建子進(jìn)程,退出父進(jìn)程脫離控制終端:子進(jìn)程變成1號進(jìn)程(init)的子進(jìn)程(2) 在子進(jìn)程中創(chuàng)建新會話擺脫其他進(jìn)程的控制(函數(shù)setsid)(3)改變當(dāng)前目錄為根目錄脫離父進(jìn)程文件系統(tǒng)控制(函數(shù)chdir)(4)重設(shè)文件權(quán)限掩碼設(shè)置為0,增強(qiáng)守護(hù)進(jìn)程的靈活性(函數(shù)umask )(5)關(guān)閉文件描述符關(guān)閉文件描述符為0、1和2的三個文件(輸入、輸出和報(bào)錯文件)實(shí)驗(yàn)五 進(jìn)程(線程)控制v預(yù)備知識Linux進(jìn)程及其屬性Linux進(jìn)程派生關(guān)系Linux線程v實(shí)驗(yàn)指導(dǎo)Linux進(jìn)程管理命令Linux進(jìn)程控制函數(shù)Linux守護(hù)進(jìn)程v實(shí)驗(yàn)?zāi)康?、?nèi)容3.1 實(shí)驗(yàn)?zāi)康膙加深對進(jìn)程概念的理解,明確進(jìn)程與程序的區(qū)別v掌握Linux進(jìn)程創(chuàng)建及撤銷的方法,進(jìn)一步認(rèn)識并發(fā)執(zhí)行的實(shí)質(zhì)v掌握Linux系統(tǒng)下守護(hù)進(jìn)程的創(chuàng)建方法3.2 實(shí)驗(yàn)內(nèi)容v獲取進(jìn)程信息編寫程序,獲取系統(tǒng)當(dāng)前執(zhí)行進(jìn)程的信息,包括進(jìn)程名稱與ID、
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆江蘇省揚(yáng)州、泰州、淮安、南通、徐州、宿遷、連云港市高三最后一?;瘜W(xué)試題含解析
- 2025年汽車融資租賃項(xiàng)目發(fā)展計(jì)劃
- 安徽省休寧縣臨溪中學(xué)2025屆高三下學(xué)期一??荚嚮瘜W(xué)試題含解析
- SCMP考試影響力與試題答案分析
- CPMM教育心理學(xué)與試題及答案
- 快速掌握CPSM考試試題及答案
- 2025年苯酐催化劑項(xiàng)目合作計(jì)劃書
- 透析國際物流師考試試題及答案
- 抓住CPMM備考最佳時機(jī)試題及答案
- 2024年CPSM考生交流分享會試題及答案
- 糧食熏蒸培訓(xùn)課件
- 2024年湖北省安全員C證(專職安全員)考試題庫
- 2025年社區(qū)老年協(xié)會工作計(jì)劃
- 2024年民法知識考試全套復(fù)習(xí)提綱
- 中華護(hù)理學(xué)會老年人誤吸的預(yù)防團(tuán)體標(biāo)準(zhǔn)解讀
- 用章審批流程
- 高速鐵路橋隧養(yǎng)護(hù)維修 課件 2 橋隧養(yǎng)護(hù)維修工作的基本方法和基本內(nèi)容
- DB37T 3651-2019 汽車加油站安全生產(chǎn)風(fēng)險(xiǎn)管控和隱患排查治理體系建設(shè)實(shí)施指南
- DB32-T 4340-2022 瀝青紅外光譜法相似度識別與SBS含量試驗(yàn)檢測規(guī)程
- 《安全生產(chǎn)治本攻堅(jiān)三年行動方案(2024-2026年)》子方案合集
- 職業(yè)道德試題及答案
評論
0/150
提交評論