




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P1linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P2linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P3多道程序設(shè)計(jì)的提出多道程序設(shè)計(jì)的提出n 單道程序設(shè)計(jì)單道程序設(shè)計(jì)u執(zhí)行特點(diǎn):靜態(tài)的、孤立的執(zhí)行特點(diǎn):靜態(tài)的、孤立的u具體特性:順序性、封閉性、可再現(xiàn)性、資源獨(dú)占性具體特性:順序性、封閉性、可再現(xiàn)性、資源獨(dú)占性n 并發(fā)執(zhí)行及并發(fā)執(zhí)行及“與時(shí)間有關(guān)的錯(cuò)誤與時(shí)間有關(guān)的錯(cuò)誤”,是指多個(gè)程序段之間在執(zhí)行時(shí)間上重疊。,是指多個(gè)程序段之間在執(zhí)行時(shí)間上重疊。u多程序段同時(shí)在系統(tǒng)中運(yùn)行多程序段同時(shí)在系統(tǒng)中運(yùn)行u宏觀上并行,微觀上串行宏觀上并
2、行,微觀上串行u問題:問題:l 資源沖突,甚至死鎖資源沖突,甚至死鎖l “與時(shí)間有關(guān)的錯(cuò)誤與時(shí)間有關(guān)的錯(cuò)誤”為了充分有效地利用計(jì)算機(jī)的有限資源,提出了多道程序設(shè)計(jì)linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P4linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P5啟動(dòng)瀏覽器IE后,得到的進(jìn)程linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P6;linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P7進(jìn)進(jìn)程程程程序序按照菜譜做菜的過程菜菜譜譜簡單理解:所有正運(yùn)行的程序都叫做進(jìn)程,程序只有在被系統(tǒng)載入了內(nèi)存并運(yùn)行后才能夠叫做進(jìn)程。linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)
3、院電子系P8進(jìn)程的產(chǎn)生進(jìn)程的產(chǎn)生n 交互式環(huán)境中,合法用戶終端登陸。交互式環(huán)境中,合法用戶終端登陸。n 批處理環(huán)境中,為響應(yīng)一個(gè)任務(wù)的要求而產(chǎn)生進(jìn)程。批處理環(huán)境中,為響應(yīng)一個(gè)任務(wù)的要求而產(chǎn)生進(jìn)程。n 當(dāng)運(yùn)行中獲取用戶程序提出的某種請(qǐng)求后,當(dāng)運(yùn)行中獲取用戶程序提出的某種請(qǐng)求后,OS可以可以代用戶程序產(chǎn)生進(jìn)程以實(shí)現(xiàn)某種功能。代用戶程序產(chǎn)生進(jìn)程以實(shí)現(xiàn)某種功能。n 基于應(yīng)用進(jìn)程的需要,由已存在的進(jìn)程產(chǎn)生另一個(gè)基于應(yīng)用進(jìn)程的需要,由已存在的進(jìn)程產(chǎn)生另一個(gè)進(jìn)程,以便使新程序以并發(fā)運(yùn)行方式完成特定任務(wù)。進(jìn)程,以便使新程序以并發(fā)運(yùn)行方式完成特定任務(wù)。當(dāng)一個(gè)進(jìn)程生成另一個(gè)進(jìn)程時(shí),生成進(jìn)程稱為父進(jìn)當(dāng)一個(gè)進(jìn)程生成另
4、一個(gè)進(jìn)程時(shí),生成進(jìn)程稱為父進(jìn)程,而被生成進(jìn)程稱為子進(jìn)程。程,而被生成進(jìn)程稱為子進(jìn)程。進(jìn)程的終止進(jìn)程的終止n 正常結(jié)束、超時(shí)限制、內(nèi)存不足、正常結(jié)束、超時(shí)限制、內(nèi)存不足、I/O失敗、非法指失敗、非法指令等令等linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P9進(jìn)程的特性:進(jìn)程的特性:n 動(dòng)態(tài)性:進(jìn)程的實(shí)質(zhì)是程序的一次執(zhí)行過程,進(jìn)動(dòng)態(tài)性:進(jìn)程的實(shí)質(zhì)是程序的一次執(zhí)行過程,進(jìn)程是動(dòng)態(tài)產(chǎn)生,動(dòng)態(tài)消亡的;程是動(dòng)態(tài)產(chǎn)生,動(dòng)態(tài)消亡的;n 并發(fā)性:任何進(jìn)程都可以同其他進(jìn)程一起并發(fā)執(zhí)并發(fā)性:任何進(jìn)程都可以同其他進(jìn)程一起并發(fā)執(zhí)行;行;n 獨(dú)立性:進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的基本單位,同獨(dú)立性:進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的
5、基本單位,同時(shí)也是系統(tǒng)分配資源和調(diào)度的獨(dú)立單位;時(shí)也是系統(tǒng)分配資源和調(diào)度的獨(dú)立單位;n 異步性:由于進(jìn)程間的相互制約,使進(jìn)程具有執(zhí)異步性:由于進(jìn)程間的相互制約,使進(jìn)程具有執(zhí)行的間斷性,即進(jìn)程按各自獨(dú)立的、不可預(yù)知的行的間斷性,即進(jìn)程按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)。速度向前推進(jìn)。 linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P10linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P11進(jìn)程的狀態(tài)及其轉(zhuǎn)換進(jìn)程的狀態(tài)及其轉(zhuǎn)換運(yùn)行就緒阻塞已獲得事件已獲得事件或等待的資源或等待的資源linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P12運(yùn)行就緒等待linux操作系統(tǒng)華軟軟件學(xué)院
6、電子系華軟軟件學(xué)院電子系P13操作系統(tǒng)控制結(jié)構(gòu)操作系統(tǒng)控制結(jié)構(gòu)n 內(nèi)存表用來跟蹤主存和輔存。內(nèi)存表用來跟蹤主存和輔存。n I/0表用來管理表用來管理I/0設(shè)備和通道。設(shè)備和通道。n 文件表提供當(dāng)前存在文件中的信息。文件表提供當(dāng)前存在文件中的信息。n 進(jìn)程表用來管理進(jìn)程。進(jìn)程表用來管理進(jìn)程。進(jìn)程的組成進(jìn)程的組成n 程序段程序段:進(jìn)程所對(duì)應(yīng)的可執(zhí)行程序;:進(jìn)程所對(duì)應(yīng)的可執(zhí)行程序;n 數(shù)據(jù)段數(shù)據(jù)段:程序運(yùn)行過程中要用到的數(shù)據(jù)或工作區(qū);:程序運(yùn)行過程中要用到的數(shù)據(jù)或工作區(qū);n 進(jìn)程控制塊(進(jìn)程控制塊(PCB):為管理進(jìn)程設(shè)置的一個(gè)專門的數(shù):為管理進(jìn)程設(shè)置的一個(gè)專門的數(shù)據(jù)結(jié)構(gòu),用于記錄進(jìn)程的外部特征,描
7、述進(jìn)程的運(yùn)動(dòng)變據(jù)結(jié)構(gòu),用于記錄進(jìn)程的外部特征,描述進(jìn)程的運(yùn)動(dòng)變化過程?;^程。linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P14linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P15linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P16linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P17linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P18n 可運(yùn)行狀態(tài)可運(yùn)行狀態(tài)u進(jìn)程正在運(yùn)行(運(yùn)行態(tài))、或者正準(zhǔn)備運(yùn)行(就緒態(tài))進(jìn)程正在運(yùn)行(運(yùn)行態(tài))、或者正準(zhǔn)備運(yùn)行(就緒態(tài))u正在運(yùn)行的進(jìn)程就是當(dāng)前進(jìn)程正在運(yùn)行的進(jìn)程就是當(dāng)前進(jìn)程u準(zhǔn)備運(yùn)行的進(jìn)程只要得到準(zhǔn)備運(yùn)行的進(jìn)程只要得到
8、CPU就可以立即投入運(yùn)行,就可以立即投入運(yùn)行,CPU是這些進(jìn)程唯一等待的系統(tǒng)資源是這些進(jìn)程唯一等待的系統(tǒng)資源n 可中斷等待態(tài)、不可中斷等待態(tài)可中斷等待態(tài)、不可中斷等待態(tài)u進(jìn)程正等待某個(gè)事件(進(jìn)程正等待某個(gè)事件(event)或某個(gè)資源)或某個(gè)資源u一定處于系統(tǒng)中的某個(gè)等待隊(duì)列(一定處于系統(tǒng)中的某個(gè)等待隊(duì)列(wait_queue)中)中u兩種等待態(tài)的差異:兩種等待態(tài)的差異:l 可中斷等待態(tài):可被信號(hào)喚醒,被喚醒后進(jìn)入可運(yùn)可中斷等待態(tài):可被信號(hào)喚醒,被喚醒后進(jìn)入可運(yùn)行態(tài)行態(tài),等待被調(diào)度;等待被調(diào)度;l 不可中斷等待態(tài):因等待硬件資源,如某個(gè)通道、不可中斷等待態(tài):因等待硬件資源,如某個(gè)通道、端口等,在
9、任何情況下都不能被打斷,直到資源滿端口等,在任何情況下都不能被打斷,直到資源滿足。資源滿足后只能用特定的方式來喚醒它,例如足。資源滿足后只能用特定的方式來喚醒它,例如喚醒函數(shù)喚醒函數(shù)wake_up()等()等 linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P19n 暫停狀態(tài)暫停狀態(tài)u進(jìn)程暫時(shí)停止運(yùn)行以接受某種特殊處理進(jìn)程暫時(shí)停止運(yùn)行以接受某種特殊處理u通常當(dāng)進(jìn)程接收到通常當(dāng)進(jìn)程接收到SIGSTOP、SIGTSTP、SIGTTIN或或 SIGTTOU信號(hào)后就處于這種狀態(tài)(關(guān)于信號(hào),將信號(hào)后就處于這種狀態(tài)(關(guān)于信號(hào),將在以后講述)在以后講述)u例如,正接受調(diào)試的進(jìn)程就處于這種狀態(tài)例如,正接
10、受調(diào)試的進(jìn)程就處于這種狀態(tài)n 僵死狀態(tài)僵死狀態(tài)u進(jìn)程執(zhí)行了進(jìn)程執(zhí)行了exit()函數(shù)后進(jìn)入該狀態(tài),即進(jìn)程被終止函數(shù)后進(jìn)入該狀態(tài),即進(jìn)程被終止u此狀態(tài)將由父進(jìn)程執(zhí)行此狀態(tài)將由父進(jìn)程執(zhí)行wait()系統(tǒng)調(diào)用而系統(tǒng)調(diào)用而“”,真正終止該進(jìn)程,并回收其資源真正終止該進(jìn)程,并回收其資源u處于該狀態(tài)的進(jìn)程是死進(jìn)程,屬于系統(tǒng)中的垃圾,必處于該狀態(tài)的進(jìn)程是死進(jìn)程,屬于系統(tǒng)中的垃圾,必須進(jìn)行相應(yīng)處理以釋放其占用的資源須進(jìn)行相應(yīng)處理以釋放其占用的資源 n 死亡狀態(tài):僵死進(jìn)程被父進(jìn)程回收后的狀態(tài)死亡狀態(tài):僵死進(jìn)程被父進(jìn)程回收后的狀態(tài)linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P20linux操作系統(tǒng)華軟軟
11、件學(xué)院電子系華軟軟件學(xué)院電子系P21Linux中與進(jìn)程相關(guān)的命令中與進(jìn)程相關(guān)的命令PSps Processes Snapshot句法:ps OPTIONS功能:對(duì)系統(tǒng)中的進(jìn)程進(jìn)行監(jiān)控OPTION參數(shù)如下:l:長格式輸出u:按用戶名和啟動(dòng)時(shí)間順序來顯示進(jìn)程j:用任務(wù)格式來顯示進(jìn)程f:用全格式來顯示進(jìn)程a:顯示所有用戶的所有進(jìn)程x:顯示無控制終端的進(jìn)程linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P22-A:列出所有的行程-w:顯示加寬可以顯示較多的資訊-au:顯示較詳細(xì)的資訊-aux:顯示所有包含其他使用者的行程-e:顯示所有進(jìn)程,環(huán)境變量-f:全格式-h:不顯示標(biāo)題-l:長格式注意區(qū)分
12、注意區(qū)分“ps aux”和和“ps -aux”命令命令PSLinux中與進(jìn)程相關(guān)的命令中與進(jìn)程相關(guān)的命令linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P23kill關(guān)閉進(jìn)程:kill 進(jìn)程號(hào)kill -9 進(jìn)程號(hào)(強(qiáng)行關(guān)閉)kill -1 進(jìn)程號(hào)(重啟進(jìn)程)結(jié)束所有進(jìn)程:killall查找服務(wù)進(jìn)程號(hào):pgrep 服務(wù)名稱關(guān)閉進(jìn)程:pkill 進(jìn)程名稱Linux中與進(jìn)程相關(guān)的命令中與進(jìn)程相關(guān)的命令linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P24TOP句法:top OPTIONS功能:實(shí)時(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況TOP命令是一個(gè)動(dòng)態(tài)顯示過程,可以通過用戶按鍵來不斷刷新當(dāng)
13、前狀態(tài)。TOP命令是Linux下常用的性能分析工具Linux中與進(jìn)程相關(guān)的命令中與進(jìn)程相關(guān)的命令linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P25操作系統(tǒng)內(nèi)核操作系統(tǒng)內(nèi)核CPU的兩種執(zhí)行狀態(tài):系統(tǒng)態(tài)和用戶態(tài)的兩種執(zhí)行狀態(tài):系統(tǒng)態(tài)和用戶態(tài)n 系統(tǒng)態(tài)系統(tǒng)態(tài)/核心態(tài)(特態(tài)或管態(tài)):該狀態(tài)下,核心態(tài)(特態(tài)或管態(tài)):該狀態(tài)下,CPU能執(zhí)行能執(zhí)行指令集中任何指令;指令集中任何指令;n 用戶態(tài)(常態(tài)或目態(tài)):該狀態(tài)下,用戶態(tài)(常態(tài)或目態(tài)):該狀態(tài)下,CPU只能執(zhí)行一般的只能執(zhí)行一般的指令,不能執(zhí)行特權(quán)指令。指令,不能執(zhí)行特權(quán)指令。操作系統(tǒng)內(nèi)核功能操作系統(tǒng)內(nèi)核功能n 中斷處理中斷處理n 時(shí)鐘管理時(shí)鐘
14、管理n 原語操作原語操作n 進(jìn)程管理進(jìn)程管理n 存儲(chǔ)器管理存儲(chǔ)器管理n 設(shè)備管理設(shè)備管理linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P26進(jìn)程的創(chuàng)建進(jìn)程的創(chuàng)建 進(jìn)程創(chuàng)建的時(shí)機(jī)進(jìn)程創(chuàng)建的時(shí)機(jī)n用戶登錄用戶登錄n作業(yè)調(diào)度作業(yè)調(diào)度n提供服務(wù)提供服務(wù)n應(yīng)用請(qǐng)求應(yīng)用請(qǐng)求 進(jìn)程創(chuàng)建的過程進(jìn)程創(chuàng)建的過程n取得一個(gè)空白取得一個(gè)空白PCB,生成一個(gè)唯一的進(jìn)程標(biāo)識(shí),生成一個(gè)唯一的進(jìn)程標(biāo)識(shí)號(hào)(一般是數(shù)字形式)號(hào)(一般是數(shù)字形式)n為新進(jìn)程分配必要的資源為新進(jìn)程分配必要的資源n初始化初始化PCB將新進(jìn)程的將新進(jìn)程的PCB插入就緒隊(duì)列插入就緒隊(duì)列l(wèi)inux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P27進(jìn)程
15、的創(chuàng)建進(jìn)程的創(chuàng)建 Linux中的進(jìn)程創(chuàng)建中的進(jìn)程創(chuàng)建ninit_task:uLinux在啟動(dòng)時(shí)運(yùn)行在核心態(tài),這時(shí)只有初始化程序在啟動(dòng)時(shí)運(yùn)行在核心態(tài),這時(shí)只有初始化程序在執(zhí)行是系統(tǒng)的第一個(gè)進(jìn)程,因此稱為初始進(jìn)程。在執(zhí)行是系統(tǒng)的第一個(gè)進(jìn)程,因此稱為初始進(jìn)程。uinit_task在系統(tǒng)初始化結(jié)束后,初始進(jìn)程啟動(dòng)一個(gè)在系統(tǒng)初始化結(jié)束后,初始進(jìn)程啟動(dòng)一個(gè)核心進(jìn)程,稱為核心進(jìn)程,稱為init。然后執(zhí)行空閑循環(huán),什么也不。然后執(zhí)行空閑循環(huán),什么也不做。當(dāng)系統(tǒng)沒有其他工作時(shí),調(diào)度程序會(huì)運(yùn)行這個(gè)空做。當(dāng)系統(tǒng)沒有其他工作時(shí),調(diào)度程序會(huì)運(yùn)行這個(gè)空閑進(jìn)程。閑進(jìn)程。ninit:uinit進(jìn)程的進(jìn)程標(biāo)識(shí)號(hào)為進(jìn)程的進(jìn)程標(biāo)識(shí)
16、號(hào)為1,是系統(tǒng)中第一個(gè)真正的,是系統(tǒng)中第一個(gè)真正的進(jìn)程有自己的進(jìn)程有自己的PCB。是系統(tǒng)中其他進(jìn)程的祖先。是系統(tǒng)中其他進(jìn)程的祖先。n除除init外,外,Linux所有進(jìn)程都由其他進(jìn)程創(chuàng)建;所有進(jìn)程都由其他進(jìn)程創(chuàng)建;用戶態(tài)中,可調(diào)用用戶態(tài)中,可調(diào)用fork或或clone來創(chuàng)建子進(jìn)程。來創(chuàng)建子進(jìn)程。linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P28Linux的進(jìn)程創(chuàng)建的進(jìn)程創(chuàng)建fork()函數(shù)函數(shù)n fork()函數(shù)返回值函數(shù)返回值u= -1:創(chuàng)建失?。簞?chuàng)建失敗u= 0:創(chuàng)建成功,并從子進(jìn)程返回:創(chuàng)建成功,并從子進(jìn)程返回u 0:創(chuàng)建成功:創(chuàng)建成功,并從父進(jìn)程返回并從父進(jìn)程返回,返回的是子
17、進(jìn)程返回的是子進(jìn)程PIDufork()函數(shù)為系統(tǒng)調(diào)用函數(shù)為系統(tǒng)調(diào)用n fork()函數(shù)完成的事務(wù)函數(shù)完成的事務(wù)u檢查現(xiàn)有進(jìn)程數(shù)目檢查現(xiàn)有進(jìn)程數(shù)目u分配分配PCB(task_strcut)及)及PIDu繼承父進(jìn)程的資源繼承父進(jìn)程的資源u創(chuàng)建進(jìn)程映像創(chuàng)建進(jìn)程映像(如靜態(tài)的程序如靜態(tài)的程序,動(dòng)態(tài)的動(dòng)態(tài)的PCB)并設(shè)置就緒并設(shè)置就緒u返回:調(diào)用進(jìn)程返回子進(jìn)程的返回:調(diào)用進(jìn)程返回子進(jìn)程的PID,被調(diào)度執(zhí)行返回被調(diào)度執(zhí)行返回0linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P29fork()函數(shù)返回后的處理函數(shù)返回后的處理n 可依據(jù)父進(jìn)程和子進(jìn)程返回的值,做相應(yīng)處理可依據(jù)父進(jìn)程和子進(jìn)程返回的值,做相
18、應(yīng)處理n 一般程序架構(gòu)如下:一般程序架構(gòu)如下:main() int pid; /子進(jìn)程的標(biāo)識(shí)符子進(jìn)程的標(biāo)識(shí)符PID while ( (pid=fork() = -1) ;/直到子進(jìn)程創(chuàng)建直到子進(jìn)程創(chuàng)建成功成功 if (pid = 0) /子進(jìn)程返回,也稱子進(jìn)程返回,也稱調(diào)度返回調(diào)度返回 / 插入子進(jìn)程返回時(shí)處理的程序段插入子進(jìn)程返回時(shí)處理的程序段 else / 父進(jìn)程返回,也稱父進(jìn)程返回,也稱調(diào)用返回調(diào)用返回 / 插入父進(jìn)程返回時(shí)處理的程序段插入父進(jìn)程返回時(shí)處理的程序段 n 小課驗(yàn)證小課驗(yàn)證linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P30進(jìn)程的終止進(jìn)程的終止進(jìn)程終止的時(shí)機(jī)進(jìn)程終止的
19、時(shí)機(jī)n 進(jìn)程的正常結(jié)束進(jìn)程的正常結(jié)束u進(jìn)程執(zhí)行期間調(diào)用進(jìn)程執(zhí)行期間調(diào)用exit系統(tǒng)調(diào)用系統(tǒng)調(diào)用u在在main函數(shù)中執(zhí)行函數(shù)中執(zhí)行return語句語句umain函數(shù)執(zhí)行完函數(shù)執(zhí)行完n 進(jìn)程的異常結(jié)束進(jìn)程的異常結(jié)束u進(jìn)程運(yùn)行時(shí)出現(xiàn)錯(cuò)誤或故障被迫結(jié)束。如數(shù)組越界進(jìn)程運(yùn)行時(shí)出現(xiàn)錯(cuò)誤或故障被迫結(jié)束。如數(shù)組越界、除數(shù)為、除數(shù)為0、電源故障等、電源故障等進(jìn)程終止的過程進(jìn)程終止的過程n 取得當(dāng)前進(jìn)程的取得當(dāng)前進(jìn)程的PCBn 歸還進(jìn)程所占的資源歸還進(jìn)程所占的資源n 進(jìn)入進(jìn)程調(diào)度程序進(jìn)入進(jìn)程調(diào)度程序linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P31進(jìn)程的終止進(jìn)程的終止Linux中的進(jìn)程終止中的進(jìn)程終止n
20、 調(diào)用調(diào)用exit()、執(zhí)行、執(zhí)行return語句、語句、main函數(shù)執(zhí)行函數(shù)執(zhí)行完,最終都要調(diào)用內(nèi)核函數(shù)完,最終都要調(diào)用內(nèi)核函數(shù)do_exit()n do_exit()需要做的工作如下:需要做的工作如下:u根據(jù)根據(jù)PCB中的內(nèi)容進(jìn)行資源的歸還和涉及信息中的內(nèi)容進(jìn)行資源的歸還和涉及信息的善后處理的善后處理u將進(jìn)程的狀態(tài)改為將進(jìn)程的狀態(tài)改為TASK_ZOMBIEu設(shè)置設(shè)置exit_codeu通知父進(jìn)程和子進(jìn)程通知父進(jìn)程和子進(jìn)程“我即將結(jié)束我即將結(jié)束”u調(diào)用內(nèi)核函數(shù)調(diào)用內(nèi)核函數(shù)schedule()重新調(diào)度重新調(diào)度linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P32進(jìn)程的阻塞和喚醒進(jìn)程的阻塞
21、和喚醒阻塞和喚醒的時(shí)機(jī)阻塞和喚醒的時(shí)機(jī)n 進(jìn)程請(qǐng)求系統(tǒng)為它服務(wù),系統(tǒng)不能馬上為它服務(wù)進(jìn)程請(qǐng)求系統(tǒng)為它服務(wù),系統(tǒng)不能馬上為它服務(wù),就進(jìn)入阻塞狀態(tài);就進(jìn)入阻塞狀態(tài);n 啟動(dòng)了無法馬上完成的操作(啟動(dòng)了無法馬上完成的操作(I/O),進(jìn)入阻塞),進(jìn)入阻塞狀態(tài);狀態(tài);n 進(jìn)程間相互合作時(shí),需要等待其他進(jìn)程的運(yùn)算結(jié)進(jìn)程間相互合作時(shí),需要等待其他進(jìn)程的運(yùn)算結(jié)果;果;n 系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的服務(wù),如果沒有其他進(jìn)程的請(qǐng)系統(tǒng)啟動(dòng)時(shí)創(chuàng)建的服務(wù),如果沒有其他進(jìn)程的請(qǐng)求,處于阻塞。求,處于阻塞。linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P33進(jìn)程的阻塞和喚醒進(jìn)程的阻塞和喚醒進(jìn)程阻塞的過程進(jìn)程阻塞的過程n 使當(dāng)前
22、進(jìn)程停止執(zhí)行使當(dāng)前進(jìn)程停止執(zhí)行n 將狀態(tài)改為阻塞態(tài)將狀態(tài)改為阻塞態(tài)n 插入適當(dāng)?shù)牡却枞?duì)列插入適當(dāng)?shù)牡却枞?duì)列n 調(diào)用調(diào)用schedule()重新進(jìn)行進(jìn)程調(diào)度重新進(jìn)行進(jìn)程調(diào)度進(jìn)程喚醒的過程進(jìn)程喚醒的過程n 取出阻塞隊(duì)列的第一個(gè)進(jìn)程取出阻塞隊(duì)列的第一個(gè)進(jìn)程n 將狀態(tài)改為就緒態(tài)將狀態(tài)改為就緒態(tài)n 插入到就緒隊(duì)列插入到就緒隊(duì)列l(wèi)inux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P34進(jìn)程的阻塞和喚醒進(jìn)程的阻塞和喚醒Linux中的進(jìn)程阻塞和喚醒中的進(jìn)程阻塞和喚醒n 使當(dāng)前進(jìn)程停止執(zhí)行若進(jìn)程等待一個(gè)特定的事件發(fā)生,使當(dāng)前進(jìn)程停止執(zhí)行若進(jìn)程等待一個(gè)特定的事件發(fā)生,則調(diào)用函數(shù)來阻塞當(dāng)前進(jìn)程:則調(diào)用函數(shù)
23、來阻塞當(dāng)前進(jìn)程:n sleep_on():進(jìn)程狀態(tài)被設(shè)置為:進(jìn)程狀態(tài)被設(shè)置為TASK_INTERRUPTIBLEn interruptible_sleep_on():進(jìn)程狀態(tài)被設(shè)置為:進(jìn)程狀態(tài)被設(shè)置為TASK_UNINTERRUPTIBLEn 當(dāng)進(jìn)程等待的事件發(fā)生時(shí),調(diào)用內(nèi)核函數(shù)來喚醒進(jìn)程:當(dāng)進(jìn)程等待的事件發(fā)生時(shí),調(diào)用內(nèi)核函數(shù)來喚醒進(jìn)程:n wake_up():n wake_up_process():n 對(duì)某個(gè)睡眠進(jìn)程的喚醒。將狀態(tài)設(shè)置為對(duì)某個(gè)睡眠進(jìn)程的喚醒。將狀態(tài)設(shè)置為TASK_RUNNINGlinux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P35注意:注意:sleep_on()和和wa
24、ke_up()都是內(nèi)核都是內(nèi)核中提供的函數(shù),應(yīng)用程序中不能直接調(diào)用。中提供的函數(shù),應(yīng)用程序中不能直接調(diào)用。Linux中的進(jìn)程阻塞中的進(jìn)程阻塞n 系統(tǒng)調(diào)用系統(tǒng)調(diào)用wait():等待子進(jìn)程終止而進(jìn)入睡眠等待子進(jìn)程終止而進(jìn)入睡眠u子進(jìn)程執(zhí)行子進(jìn)程執(zhí)行exit()而終止自身,并給父進(jìn)程發(fā)信號(hào)而終止自身,并給父進(jìn)程發(fā)信號(hào)u父進(jìn)程執(zhí)行父進(jìn)程執(zhí)行wait()等待子進(jìn)程終止信號(hào)等待子進(jìn)程終止信號(hào)n 庫函數(shù)庫函數(shù)sleep(n):進(jìn)程延時(shí)進(jìn)程延時(shí)n秒秒進(jìn)程的阻塞和喚醒進(jìn)程的阻塞和喚醒linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P36未引入線程的操作系統(tǒng)中,進(jìn)程的兩個(gè)基未引入線程的操作系統(tǒng)中,進(jìn)程的兩個(gè)
25、基本屬性:本屬性:n 進(jìn)程是一個(gè)擁有資源的獨(dú)立單位進(jìn)程是一個(gè)擁有資源的獨(dú)立單位 給每個(gè)進(jìn)程分配一虛擬地址空間,保存進(jìn)程映像給每個(gè)進(jìn)程分配一虛擬地址空間,保存進(jìn)程映像,控制一些資源(文件,控制一些資源(文件,I/O設(shè)備),有狀態(tài)、設(shè)備),有狀態(tài)、優(yōu)先級(jí)、調(diào)度優(yōu)先級(jí)、調(diào)度n 進(jìn)程是一個(gè)被處理機(jī)獨(dú)立調(diào)度和分配的基本單進(jìn)程是一個(gè)被處理機(jī)獨(dú)立調(diào)度和分配的基本單位位 以上兩個(gè)屬性構(gòu)成進(jìn)程并發(fā)執(zhí)行的基礎(chǔ)以上兩個(gè)屬性構(gòu)成進(jìn)程并發(fā)執(zhí)行的基礎(chǔ)線程的引入線程的引入linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P37系統(tǒng)必須完成的操作:系統(tǒng)必須完成的操作:n 創(chuàng)建進(jìn)程、撤消進(jìn)程、進(jìn)程切換創(chuàng)建進(jìn)程、撤消進(jìn)程、進(jìn)
26、程切換缺點(diǎn):缺點(diǎn):n 每啟動(dòng)一個(gè)新的進(jìn)程都必須分配獨(dú)立的地址空間每啟動(dòng)一個(gè)新的進(jìn)程都必須分配獨(dú)立的地址空間n 進(jìn)程的每次調(diào)度都需要保護(hù)和恢復(fù)進(jìn)程的每次調(diào)度都需要保護(hù)和恢復(fù)CPU現(xiàn)場(chǎng)信息現(xiàn)場(chǎng)信息,開銷過大,開銷過大n 進(jìn)程間通信速度較慢,有些時(shí)刻顯得不太友好進(jìn)程間通信速度較慢,有些時(shí)刻顯得不太友好為此,希望將進(jìn)程的某些屬性展開。使得:為此,希望將進(jìn)程的某些屬性展開。使得:n 作為獨(dú)立調(diào)度的基本單位,不同時(shí)作為占有資源作為獨(dú)立調(diào)度的基本單位,不同時(shí)作為占有資源的基本單位的基本單位n 對(duì)占有資源的基本單位又不頻繁切換對(duì)占有資源的基本單位又不頻繁切換線程的引入線程的引入linux操作系統(tǒng)華軟軟件學(xué)院電
27、子系華軟軟件學(xué)院電子系P38線程線程線程的定義:有時(shí)稱輕量級(jí)進(jìn)程,是進(jìn)線程的定義:有時(shí)稱輕量級(jí)進(jìn)程,是進(jìn)程中的一個(gè)執(zhí)行線路或線索,是一個(gè)相程中的一個(gè)執(zhí)行線路或線索,是一個(gè)相對(duì)獨(dú)立的、可獨(dú)立調(diào)度和指派的執(zhí)行單對(duì)獨(dú)立的、可獨(dú)立調(diào)度和指派的執(zhí)行單元。元。資源的擁有者還是進(jìn)程,線程將原來進(jìn)資源的擁有者還是進(jìn)程,線程將原來進(jìn)程的兩個(gè)屬性分開處理。程的兩個(gè)屬性分開處理。linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P39線程的性質(zhì):線程的性質(zhì):是進(jìn)程內(nèi)的一個(gè)相對(duì)獨(dú)立的可執(zhí)行單元;是進(jìn)程內(nèi)的一個(gè)相對(duì)獨(dú)立的可執(zhí)行單元;是操作系統(tǒng)中的基本調(diào)度單元,在線程中包含調(diào)是操作系統(tǒng)中的基本調(diào)度單元,在線程中包含調(diào)
28、度所需的信息。度所需的信息。一個(gè)進(jìn)程至少有一個(gè)線程,可有多個(gè)線程,因進(jìn)一個(gè)進(jìn)程至少有一個(gè)線程,可有多個(gè)線程,因進(jìn)程已不是被調(diào)度的單元。程已不是被調(diào)度的單元。線程并不擁有資源,而是共享和使用包含它的進(jìn)線程并不擁有資源,而是共享和使用包含它的進(jìn)程所擁有的所有資源。程所擁有的所有資源。線程在需要時(shí)也可創(chuàng)建其他線程。線程有自己的線程在需要時(shí)也可創(chuàng)建其他線程。線程有自己的生命期,也有狀態(tài)變化。生命期,也有狀態(tài)變化。線程線程linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P40單進(jìn)程、單線程單進(jìn)程、單線程單進(jìn)程、多線程單進(jìn)程、多線程多進(jìn)程、一個(gè)進(jìn)程一個(gè)線程多進(jìn)程、一個(gè)進(jìn)程一個(gè)線程多進(jìn)程、一個(gè)進(jìn)程多個(gè)
29、線程多進(jìn)程、一個(gè)進(jìn)程多個(gè)線程線程和進(jìn)程的關(guān)系linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P41引入線程的好處(與進(jìn)程比較)創(chuàng)建、撤消一個(gè)線程的系統(tǒng)開銷小。創(chuàng)建、撤消一個(gè)線程的系統(tǒng)開銷小。兩個(gè)線程的調(diào)度切換方便:線程是調(diào)度的兩個(gè)線程的調(diào)度切換方便:線程是調(diào)度的基本單位,進(jìn)程是資源的擁有單位。進(jìn)程基本單位,進(jìn)程是資源的擁有單位。進(jìn)程可以由一個(gè)或多個(gè)線程組成。在同一進(jìn)程可以由一個(gè)或多個(gè)線程組成。在同一進(jìn)程中,線程的切換不會(huì)引起進(jìn)程的切換,不中,線程的切換不會(huì)引起進(jìn)程的切換,不同進(jìn)程間的線程切換則會(huì)引起進(jìn)程切換。同進(jìn)程間的線程切換則會(huì)引起進(jìn)程切換。linux操作系統(tǒng)華軟軟件學(xué)院電子系華軟軟件學(xué)院電子系P42共享同一地址空間資源:不同進(jìn)程間的地址共享同一地址空間資源:不同進(jìn)程間的地址空間是相對(duì)獨(dú)立的,而同一進(jìn)程的各線程共空間是相對(duì)獨(dú)立的,而同一進(jìn)程的各線程共享同一地址空間,可訪問其隸屬的進(jìn)程資源享同一地址空間,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 魚塘土方開挖施工方案
- 蚌埠九年級(jí)二模數(shù)學(xué)試卷
- 2025年高性能纖維超細(xì)纖維項(xiàng)目建議書
- 灞橋工程鐵藝花箱施工方案
- 2025年柔印CTP項(xiàng)目發(fā)展計(jì)劃
- 馬凳筋專項(xiàng)施工方案
- 渠道預(yù)制板襯砌施工方案
- 多重發(fā)展模式在林業(yè)高效種植中的應(yīng)用價(jià)值及實(shí)現(xiàn)路徑探討
- 基本醫(yī)療衛(wèi)生服務(wù)面臨的主要問題
- 流動(dòng)式起重機(jī)分解組塔施工方案
- 交通安全宣傳意義
- 40米落地式腳手架專項(xiàng)施工方案
- 虛擬現(xiàn)實(shí)環(huán)境中的自然交互技術(shù)與算法
- 質(zhì)量手冊(cè)和質(zhì)量管理手冊(cè)
- 志愿服務(wù)與志愿者精神知識(shí)考試題庫大全(含答案)
- 2024年北京電子科技職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試題庫含答案解析
- 運(yùn)維人員安全培訓(xùn)內(nèi)容記錄
- 獨(dú)股一箭2010年20w實(shí)盤
- 人員傷亡事故應(yīng)急措施及救援預(yù)案
- 企業(yè)安全與風(fēng)險(xiǎn)管控課件
- 蘇教版四年級(jí)科學(xué)下冊(cè)單元測(cè)試卷及答案(全冊(cè))
評(píng)論
0/150
提交評(píng)論