大學(xué)操作系統(tǒng)_第1頁
大學(xué)操作系統(tǒng)_第2頁
大學(xué)操作系統(tǒng)_第3頁
大學(xué)操作系統(tǒng)_第4頁
大學(xué)操作系統(tǒng)_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第二章第二章 進(jìn)程、線程與作業(yè)進(jìn)程、線程與作業(yè)n2.1 多道程序設(shè)計多道程序設(shè)計nMulti-programmingn2.2 進(jìn)程的引入進(jìn)程的引入nProcess n2.3 線程與輕進(jìn)程線程與輕進(jìn)程nThread and light-weighted processn2.4 作業(yè)作業(yè)nJobActive objects2.1 多道程序設(shè)計多道程序設(shè)計n2.1.1 單道程序設(shè)計的缺點(diǎn)單道程序設(shè)計的缺點(diǎn)n2.1.2 多道程序設(shè)計的提出多道程序設(shè)計的提出n2.1.3 多道程序設(shè)計的問題多道程序設(shè)計的問題 Multi-programming多道程序設(shè)計目標(biāo)多道程序設(shè)計目標(biāo)n提高系統(tǒng)效率提高系統(tǒng)效率(

2、(吞吐量吞吐量) )全部處理時間作業(yè)道數(shù)吞吐量 2.1.1 單道程序設(shè)計的缺點(diǎn)單道程序設(shè)計的缺點(diǎn)n處理機(jī)利用率低處理機(jī)利用率低n設(shè)備利用率低設(shè)備利用率低n內(nèi)存利用率低內(nèi)存利用率低運(yùn)行程序運(yùn)行程序ACPU設(shè)備設(shè)備1運(yùn)行程序運(yùn)行程序Att1t2t5t6設(shè)備設(shè)備22.1.2 多道程序設(shè)計的提出多道程序設(shè)計的提出CPU設(shè)備設(shè)備1程序程序Att1t2t5t6設(shè)備設(shè)備2程序程序Bn提高處理機(jī)、設(shè)備、內(nèi)存等各種資源的提高處理機(jī)、設(shè)備、內(nèi)存等各種資源的利用率,從而提高系統(tǒng)效率。利用率,從而提高系統(tǒng)效率。程序程序At3t42.1.2 多道程序設(shè)計的提出多道程序設(shè)計的提出(Cont.)n增加同時運(yùn)行程序的道數(shù)可以

3、提高資源增加同時運(yùn)行程序的道數(shù)可以提高資源利用率,從而提高系統(tǒng)效率,但道數(shù)應(yīng)利用率,從而提高系統(tǒng)效率,但道數(shù)應(yīng)與系統(tǒng)資源數(shù)量相當(dāng)。與系統(tǒng)資源數(shù)量相當(dāng)。n道數(shù)過少,系統(tǒng)資源利用率低。道數(shù)過少,系統(tǒng)資源利用率低。n道數(shù)過多,系統(tǒng)開銷道數(shù)過多,系統(tǒng)開銷(system overhead)增大,程序響應(yīng)速度下降。增大,程序響應(yīng)速度下降。2.1.3 多道程序設(shè)計的問題多道程序設(shè)計的問題n處理機(jī)資源的管理處理機(jī)資源的管理n程序個數(shù)程序個數(shù) 處理機(jī)個數(shù)處理機(jī)個數(shù)(如何分配如何分配?)n存儲資源的管理存儲資源的管理n地址空間的相對獨(dú)立性、共享性地址空間的相對獨(dú)立性、共享性n內(nèi)存、外存內(nèi)存、外存(swap spa

4、ce)的分配與去配的分配與去配n設(shè)備資源管理設(shè)備資源管理n分配策略分配策略nIO控制控制2.2 進(jìn)程的引入進(jìn)程的引入n2.2.1 進(jìn)程的概念進(jìn)程的概念n2.2.2 進(jìn)程狀態(tài)及狀進(jìn)程狀態(tài)及狀態(tài)轉(zhuǎn)換態(tài)轉(zhuǎn)換n2.2.3 進(jìn)程控制塊進(jìn)程控制塊n2.2.4 進(jìn)程的組成與進(jìn)程的組成與上下文上下文n2.2.5 進(jìn)程的隊列進(jìn)程的隊列n2.2.6 進(jìn)程的類型與進(jìn)程的類型與特征特征n2.2.7 進(jìn)程間相互聯(lián)進(jìn)程間相互聯(lián)系與相互作用系與相互作用n2.2.8 進(jìn)程的創(chuàng)建與進(jìn)程的創(chuàng)建與撤銷撤銷n2.2.9 進(jìn)程與程序間進(jìn)程與程序間的聯(lián)系與差別的聯(lián)系與差別多道系統(tǒng)中的程序:多道系統(tǒng)中的程序: 暫停:保存現(xiàn)場暫停:保存現(xiàn)場

5、(PSW+PC,寄存器),寄存器)推進(jìn):恢復(fù)現(xiàn)場推進(jìn):恢復(fù)現(xiàn)場(寄存器,寄存器,PSW+PC)暫停原因:暫停原因:(1) 自身原因:等待資源,啟動自身原因:等待資源,啟動IO (2) 剝奪剝奪CPU給其它程序運(yùn)行機(jī)會給其它程序運(yùn)行機(jī)會2.2 進(jìn)程的引入進(jìn)程的引入(Cont.)2.2.1 進(jìn)程的概念進(jìn)程的概念n定義:定義:n可參與并發(fā)執(zhí)行的程序稱為進(jìn)程。可參與并發(fā)執(zhí)行的程序稱為進(jìn)程。n進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于一個數(shù)進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于一個數(shù)據(jù)集合的一次運(yùn)行活動。據(jù)集合的一次運(yùn)行活動。n定義強(qiáng)調(diào)兩個方面:定義強(qiáng)調(diào)兩個方面:n動態(tài):執(zhí)行中的程序動態(tài):執(zhí)行中的程序;n并發(fā):可與其他

6、進(jìn)程同時執(zhí)行。并發(fā):可與其他進(jìn)程同時執(zhí)行。并發(fā)并發(fā) vs. 并行并行n并發(fā):并發(fā):concurrentn宏觀同時,宏觀同時,“交替執(zhí)行交替執(zhí)行”,不要求多個,不要求多個CPUn并行:并行:paralleln微觀同時,要求多個微觀同時,要求多個CPUn“并行算法并行算法”2.2.2 進(jìn)程狀態(tài)及狀態(tài)轉(zhuǎn)換進(jìn)程狀態(tài)及狀態(tài)轉(zhuǎn)換n 進(jìn)程狀態(tài)進(jìn)程狀態(tài)(基本狀態(tài)基本狀態(tài))n運(yùn)行態(tài)運(yùn)行態(tài)(RUN): 占有占有CPU正在向前推進(jìn)正在向前推進(jìn)n就緒態(tài)就緒態(tài)(READY): 可以運(yùn)行可以運(yùn)行,但未得到,但未得到CPUn等待態(tài)等待態(tài)(WAIT): 等待某一事件發(fā)生等待某一事件發(fā)生n 狀態(tài)轉(zhuǎn)換

7、狀態(tài)轉(zhuǎn)換n就緒就緒運(yùn)行:獲得處理機(jī)運(yùn)行:獲得處理機(jī)n運(yùn)行運(yùn)行就緒:剝奪處理機(jī)就緒:剝奪處理機(jī)n運(yùn)行運(yùn)行等待:申請資源未得到,啟動等待:申請資源未得到,啟動IOn等待等待就緒:得到資源,就緒:得到資源,IO中斷中斷就緒就緒等待等待運(yùn)行運(yùn)行獲得處理機(jī)獲得處理機(jī)剝奪處理機(jī)剝奪處理機(jī)等待事件等待事件事件發(fā)生事件發(fā)生 進(jìn)程狀態(tài)轉(zhuǎn)換圖進(jìn)程狀態(tài)轉(zhuǎn)換圖 進(jìn)程狀態(tài)轉(zhuǎn)換圖進(jìn)程狀態(tài)轉(zhuǎn)換圖就緒就緒等待等待運(yùn)行運(yùn)行獲得處理機(jī)獲得處理機(jī)剝奪處理機(jī)剝奪處理機(jī)等待事件等待事件事件發(fā)生事件發(fā)生初創(chuàng)初創(chuàng)終止終止創(chuàng)建創(chuàng)建結(jié)束結(jié)束2.2.3 進(jìn)程控制塊進(jìn)程控制塊(PCB)n標(biāo)志進(jìn)程存在的數(shù)據(jù)結(jié)構(gòu),其中保存

8、系標(biāo)志進(jìn)程存在的數(shù)據(jù)結(jié)構(gòu),其中保存系統(tǒng)管理進(jìn)程所需的全部信息統(tǒng)管理進(jìn)程所需的全部信息nPCB內(nèi)容內(nèi)容:(不同系統(tǒng)不盡相同不同系統(tǒng)不盡相同)n進(jìn)程標(biāo)識進(jìn)程標(biāo)識(pid) 家族聯(lián)系家族聯(lián)系n進(jìn)程狀態(tài)進(jìn)程狀態(tài) 地址信息地址信息n現(xiàn)場信息現(xiàn)場信息 打開文件打開文件n調(diào)度參數(shù)調(diào)度參數(shù) 消息指針消息指針n所屬用戶所屬用戶(uid) 隊列指針隊列指針Process Control Block2.2.4 進(jìn)程的組成與上下文進(jìn)程的組成與上下文n進(jìn)程的組成進(jìn)程的組成n進(jìn)程控制塊進(jìn)程控制塊(process control block)n建立進(jìn)程建立進(jìn)程建立建立PCBn撤銷撤銷PCB撤銷進(jìn)程撤銷進(jìn)程n程序程序n代碼代

9、碼(code)n數(shù)據(jù)數(shù)據(jù)(data)n堆棧堆棧(stack+heap)n棧:保存返回點(diǎn)、參數(shù)、返回值、局部變量棧:保存返回點(diǎn)、參數(shù)、返回值、局部變量n堆:動態(tài)變量堆:動態(tài)變量2.2.4 進(jìn)程的組成與上下文進(jìn)程的組成與上下文n進(jìn)程的表記進(jìn)程的表記PCB程序程序PCB代碼代碼數(shù)據(jù)數(shù)據(jù)+堆棧堆棧表記表記1表記表記2系統(tǒng)空間系統(tǒng)空間用戶空間用戶空間l進(jìn)程上下文(進(jìn)程上下文(process context)進(jìn)程的物理實體與支持進(jìn)程運(yùn)行的物理環(huán)境統(tǒng)稱為進(jìn)程的物理實體與支持進(jìn)程運(yùn)行的物理環(huán)境統(tǒng)稱為進(jìn)程上下文進(jìn)程上下文lPCB+程序程序l系統(tǒng)環(huán)境:地址空間,系統(tǒng)棧,打開文件表,系統(tǒng)環(huán)境:地址空間,系統(tǒng)棧,打開

10、文件表,l上下文切換(上下文切換(context switch)由一個進(jìn)程的上下文轉(zhuǎn)到另外一個進(jìn)程的上下文由一個進(jìn)程的上下文轉(zhuǎn)到另外一個進(jìn)程的上下文l系統(tǒng)開銷(系統(tǒng)開銷(system overhead)運(yùn)行操作系統(tǒng)程序完成系統(tǒng)管理工作所花費(fèi)的時間運(yùn)行操作系統(tǒng)程序完成系統(tǒng)管理工作所花費(fèi)的時間和空間和空間2.2.5 進(jìn)程的隊列進(jìn)程的隊列PCBPCBPCBhead1. 就緒隊列:系統(tǒng)一個或若干個(根據(jù)調(diào)度算法確定)就緒隊列:系統(tǒng)一個或若干個(根據(jù)調(diào)度算法確定)2. 等待隊列:每個等待事件一個等待隊列:每個等待事件一個3. 運(yùn)行指示字:每個處理機(jī)一個運(yùn)行指示字:每個處理機(jī)一個PCB構(gòu)成的隊列:(不一定

11、構(gòu)成的隊列:(不一定FIFO,單向或雙向),單向或雙向)2.2.6 進(jìn)程的類型與特征進(jìn)程的類型與特征n進(jìn)程類型進(jìn)程類型n系統(tǒng)進(jìn)程系統(tǒng)進(jìn)程n運(yùn)行操作系統(tǒng)程序,完成系統(tǒng)管理運(yùn)行操作系統(tǒng)程序,完成系統(tǒng)管理(服務(wù)服務(wù))功能功能.n例如:例如:UNIX #0 - sched, #1 - initn用戶進(jìn)程用戶進(jìn)程n運(yùn)行用戶運(yùn)行用戶(應(yīng)用應(yīng)用)程序,為用戶服務(wù)。程序,為用戶服務(wù)。n例如:例如:UNIX vi, shell, cc2.2.6 進(jìn)程的類型與特征進(jìn)程的類型與特征(Cont.)n進(jìn)程的特征進(jìn)程的特征n并發(fā)性并發(fā)性:可以與其它進(jìn)程一道向前推進(jìn);:可以與其它進(jìn)程一道向前推進(jìn);n動態(tài)性動態(tài)性:動態(tài)產(chǎn)生、

12、消亡,生存期內(nèi)狀態(tài)動:動態(tài)產(chǎn)生、消亡,生存期內(nèi)狀態(tài)動態(tài)變化;態(tài)變化;n獨(dú)立性獨(dú)立性:一個進(jìn)程是可以調(diào)度的基本單位;:一個進(jìn)程是可以調(diào)度的基本單位;n交往性交往性:同時運(yùn)行的進(jìn)程可能發(fā)生相互作用;:同時運(yùn)行的進(jìn)程可能發(fā)生相互作用;n異步性異步性:進(jìn)程以各自獨(dú)立,不可預(yù)知的速度:進(jìn)程以各自獨(dú)立,不可預(yù)知的速度向前推進(jìn);向前推進(jìn);n結(jié)構(gòu)性結(jié)構(gòu)性:每個進(jìn)程有一個:每個進(jìn)程有一個PCB。2.2.7 進(jìn)程間相互聯(lián)系與相互作用進(jìn)程間相互聯(lián)系與相互作用n相互聯(lián)系相互聯(lián)系n相關(guān)進(jìn)程相關(guān)進(jìn)程n同一家族的進(jìn)程同一家族的進(jìn)程n可以共享文件,需要相互通訊,協(xié)調(diào)推進(jìn)速度可以共享文件,需要相互通訊,協(xié)調(diào)推進(jìn)速度n父進(jìn)程可以

13、監(jiān)視子進(jìn)程,子進(jìn)程完成父進(jìn)程交給父進(jìn)程可以監(jiān)視子進(jìn)程,子進(jìn)程完成父進(jìn)程交給的任務(wù)。的任務(wù)。n無關(guān)進(jìn)程無關(guān)進(jìn)程n沒有邏輯關(guān)系、同時執(zhí)行的進(jìn)程。沒有邏輯關(guān)系、同時執(zhí)行的進(jìn)程。n有資源競爭關(guān)系,互斥、死鎖、餓死。有資源競爭關(guān)系,互斥、死鎖、餓死。2.2.7 進(jìn)程間相互聯(lián)系與相互作用進(jìn)程間相互聯(lián)系與相互作用n相互作用相互作用RP2P1syncsendreceiveP1:P2:holdwait2.2.8 進(jìn)程的創(chuàng)建與撤銷進(jìn)程的創(chuàng)建與撤銷n進(jìn)程的創(chuàng)建進(jìn)程的創(chuàng)建n建立建立PCB,分配內(nèi)存,加載程序,入就緒鏈,分配內(nèi)存,加載程序,入就緒鏈nUNIX:pid=fork(),exec(prog,args) n進(jìn)程

14、的撤銷進(jìn)程的撤銷n去配資源,撤銷去配資源,撤銷PCB,通知父進(jìn)程,通知父進(jìn)程nUNIX:exit() vs. killn除初始進(jìn)程外,其它進(jìn)程由除初始進(jìn)程外,其它進(jìn)程由(父父)進(jìn)程創(chuàng)建,并進(jìn)程創(chuàng)建,并形成進(jìn)程家族。形成進(jìn)程家族。2.2.9 進(jìn)程與程序的聯(lián)系與差別進(jìn)程與程序的聯(lián)系與差別n進(jìn)程與程序的聯(lián)系進(jìn)程與程序的聯(lián)系n進(jìn)程包括一個程序進(jìn)程包括一個程序n進(jìn)程存在的目的就是執(zhí)行這個程序進(jìn)程存在的目的就是執(zhí)行這個程序n進(jìn)程與程序的差別進(jìn)程與程序的差別n程序靜態(tài),進(jìn)程動態(tài)程序靜態(tài),進(jìn)程動態(tài)n程序可長期保存,進(jìn)程有生存期程序可長期保存,進(jìn)程有生存期n一個程序可對應(yīng)多個進(jìn)程,一個進(jìn)程只能執(zhí)行一個一個程序可

15、對應(yīng)多個進(jìn)程,一個進(jìn)程只能執(zhí)行一個程序程序2.3 線程與輕進(jìn)程線程與輕進(jìn)程n2.3.1 線程的引入線程的引入n2.3.2 線程的概念線程的概念n2.3.3 線程的結(jié)構(gòu)線程的結(jié)構(gòu)n2.3.4 線程控制塊線程控制塊n2.3.5 線程的實現(xiàn)線程的實現(xiàn)n2.3.6 線程的應(yīng)用線程的應(yīng)用n2.3.7 Java線程線程ThreadLight-weighted process2.3.1 線程的引入線程的引入n進(jìn)程切換進(jìn)程切換n上下文涉及內(nèi)容多,開銷大,上下文涉及內(nèi)容多,開銷大,“笨重笨重”nPCB+程序程序n系統(tǒng)環(huán)境:地址空間,系統(tǒng)棧,打開文件表,系統(tǒng)環(huán)境:地址空間,系統(tǒng)棧,打開文件表,n相關(guān)進(jìn)程之間耦合關(guān)

16、系差相關(guān)進(jìn)程之間耦合關(guān)系差n解決方案解決方案nMulti-threadingn同一進(jìn)程中包含多個線程同一進(jìn)程中包含多個線程n上下文只涉及寄存器和用戶棧,切換速度快上下文只涉及寄存器和用戶棧,切換速度快n相關(guān)線程之間通訊方便、快捷相關(guān)線程之間通訊方便、快捷2.3.2 線程的概念線程的概念2.3.3 線程結(jié)構(gòu)線程結(jié)構(gòu)寄存器寄存器靜態(tài)數(shù)據(jù)靜態(tài)數(shù)據(jù)程序代碼程序代碼 棧棧寄存器寄存器進(jìn)程進(jìn)程2動動 態(tài)態(tài) 堆堆內(nèi)存內(nèi)存多進(jìn)程結(jié)構(gòu)(用戶視圖)多進(jìn)程結(jié)構(gòu)(用戶視圖)靜態(tài)數(shù)據(jù)靜態(tài)數(shù)據(jù)程序代碼程序代碼 棧棧進(jìn)程進(jìn)程1動動 態(tài)態(tài) 堆堆內(nèi)存內(nèi)存寄存器寄存器2.3.3 線程結(jié)構(gòu)線程結(jié)構(gòu)靜態(tài)數(shù)據(jù)靜態(tài)數(shù)據(jù)程序代碼程序代碼

17、棧棧棧棧寄存器寄存器寄存器寄存器線程線程1:線程線程2:進(jìn)程進(jìn)程動動 態(tài)態(tài) 堆堆內(nèi)存內(nèi)存多線程結(jié)構(gòu)(用戶視圖)多線程結(jié)構(gòu)(用戶視圖)2.3.3 線程結(jié)構(gòu)(另一種表示)線程結(jié)構(gòu)(另一種表示)text segmentdata segmentProgram counterTask:2.3.4 線程控制塊線程控制塊nTCB(Thread control block)n標(biāo)志線程存在的數(shù)據(jù)結(jié)構(gòu),標(biāo)志線程存在的數(shù)據(jù)結(jié)構(gòu), 其中包含對線程管理需其中包含對線程管理需要的全部信息要的全部信息n內(nèi)容內(nèi)容n線程標(biāo)識線程標(biāo)識n線程狀態(tài)線程狀態(tài)n調(diào)度參數(shù)調(diào)度參數(shù)n現(xiàn)場現(xiàn)場(通用寄存器通用寄存器,PC,SP)n存放位置存放

18、位置n用戶級線程:目態(tài)空間(運(yùn)行系統(tǒng))用戶級線程:目態(tài)空間(運(yùn)行系統(tǒng))n核心級線程:系統(tǒng)空間核心級線程:系統(tǒng)空間2.3.5 線程的實現(xiàn)線程的實現(xiàn)n2.3.1 用戶級別線程用戶級別線程nUser-level threadn2.3.2 核心級別線程核心級別線程nKernel-level threadn2.3.3 混合線程混合線程nHybrid approach 用戶級別線程用戶級別線程n實現(xiàn)方法:實現(xiàn)方法:n基于基于library函數(shù),系統(tǒng)不可見函數(shù),系統(tǒng)不可見n線程創(chuàng)建、撤銷、狀態(tài)轉(zhuǎn)換在目態(tài)完成線程創(chuàng)建、撤銷、狀態(tài)轉(zhuǎn)換在目態(tài)完成nTCB在用戶空間,每個進(jìn)程一個系統(tǒng)棧在用戶空間,每

19、個進(jìn)程一個系統(tǒng)棧n優(yōu)點(diǎn):優(yōu)點(diǎn):n不依賴于操作系統(tǒng),調(diào)度靈活不依賴于操作系統(tǒng),調(diào)度靈活n同一進(jìn)程中多線程切換速度快同一進(jìn)程中多線程切換速度快(不需進(jìn)入操作系統(tǒng)不需進(jìn)入操作系統(tǒng))n缺點(diǎn):缺點(diǎn):n同一進(jìn)程中多個線程不能真正并行同一進(jìn)程中多個線程不能真正并行n一個線程進(jìn)入系統(tǒng)受阻,進(jìn)程中其它線程不能執(zhí)行一個線程進(jìn)入系統(tǒng)受阻,進(jìn)程中其它線程不能執(zhí)行 用戶級別線程用戶級別線程運(yùn)行系統(tǒng)運(yùn)行系統(tǒng)TCB進(jìn)程進(jìn)程線程線程核心棧核心棧進(jìn)程表進(jìn)程表用戶空間用戶空間系統(tǒng)空間系統(tǒng)空間 核心級別線程核心級別線程n實現(xiàn)方法:實現(xiàn)方法:n基于系統(tǒng)調(diào)用基于系統(tǒng)調(diào)用n創(chuàng)建、撤銷、狀態(tài)轉(zhuǎn)換由操作系統(tǒng)完成創(chuàng)

20、建、撤銷、狀態(tài)轉(zhuǎn)換由操作系統(tǒng)完成n優(yōu)點(diǎn):優(yōu)點(diǎn):n同一進(jìn)程內(nèi)多線程可以并行執(zhí)行同一進(jìn)程內(nèi)多線程可以并行執(zhí)行n一線程進(jìn)入核心等待,其它線程仍可執(zhí)行一線程進(jìn)入核心等待,其它線程仍可執(zhí)行n缺點(diǎn):缺點(diǎn):n系統(tǒng)開銷大,同一進(jìn)程內(nèi)多線程切換速度慢系統(tǒng)開銷大,同一進(jìn)程內(nèi)多線程切換速度慢n調(diào)度算法不能靈活控制調(diào)度算法不能靈活控制進(jìn)程進(jìn)程線程線程核心棧核心棧進(jìn)程表進(jìn)程表用戶空間用戶空間系統(tǒng)空間系統(tǒng)空間TCB 混合線程混合線程nSolaris例子例子nUser level thread:n由由Lib程序支持(創(chuàng)建程序支持(創(chuàng)建,調(diào)度)調(diào)度)nLight weighted process(LWP):n由

21、由Lib程序支持程序支持n每個每個task至少一個至少一個LWPn用戶級別線程與用戶級別線程與LWP可以多對多可以多對多nLWP對操作系統(tǒng)可見對操作系統(tǒng)可見n只有與只有與LWP相聯(lián)系的用戶線程向前推進(jìn)相聯(lián)系的用戶線程向前推進(jìn)nKernel level thread:n由由kernel 支持支持n每個每個LWP與唯一一個核心線程對應(yīng)與唯一一個核心線程對應(yīng)n核心線程可與核心線程可與CPU多對多,可對一多對多,可對一 混合線程混合線程(Solaris)CPUtask1task2task3kernelUser level threadLightweight processKernel t

22、hread2.3.6 線程的應(yīng)用線程的應(yīng)用n內(nèi)在的多控制流內(nèi)在的多控制流,需要共享數(shù)據(jù)需要共享數(shù)據(jù)n生產(chǎn)消費(fèi)問題生產(chǎn)消費(fèi)問題n多線程優(yōu)于多進(jìn)程多線程優(yōu)于多進(jìn)程n快快100倍倍!n提高處理機(jī)與設(shè)備的并行性提高處理機(jī)與設(shè)備的并行性n多處理機(jī)環(huán)境多處理機(jī)環(huán)境n提高處理機(jī)利用率,加快進(jìn)程推進(jìn)速度提高處理機(jī)利用率,加快進(jìn)程推進(jìn)速度2.3.6 線程的應(yīng)用線程的應(yīng)用n例子:例子:nWord字處理(不同代碼)字處理(不同代碼)n交互編輯交互編輯(T1)n詞法檢查詞法檢查(T2)n定時保存定時保存(T3)nHTTP server(相同代碼)(相同代碼)n對每個對每個http請求,請求,pop up一個線程一個線

23、程2.4 作業(yè)(作業(yè)(Job) )n作業(yè)概念作業(yè)概念n用戶要求計算機(jī)系統(tǒng)為其完成的計算任務(wù)集合。用戶要求計算機(jī)系統(tǒng)為其完成的計算任務(wù)集合。n作業(yè)步(作業(yè)步(job step)n作業(yè)處理過程中一個相對獨(dú)立的步驟作業(yè)處理過程中一個相對獨(dú)立的步驟n一般一個作業(yè)步可由一個進(jìn)程完成一般一個作業(yè)步可由一個進(jìn)程完成n某些作業(yè)步之間可以并行某些作業(yè)步之間可以并行n作業(yè)分類作業(yè)分類n批處理作業(yè)批處理作業(yè)n交互式作業(yè)交互式作業(yè)2.4.1 批處理作業(yè)批處理作業(yè)n作業(yè)控制語言作業(yè)控制語言(JCL) )n描述批處理作業(yè)控制意圖的語言描述批處理作業(yè)控制意圖的語言n作業(yè)說明書作業(yè)說明書(JCL語句的序列)語句的序列)n一般

24、一特殊符號起始一般一特殊符號起始n$JOB J1n$FORTN n$LINK n$EXEC n$ENDJOBn作業(yè)控制程序作業(yè)控制程序n解釋并處理作業(yè)說明書的程序解釋并處理作業(yè)說明書的程序n作業(yè)控制進(jìn)程作業(yè)控制進(jìn)程n執(zhí)行作業(yè)控制程序的進(jìn)程執(zhí)行作業(yè)控制程序的進(jìn)程作業(yè)控制進(jìn)程作業(yè)控制進(jìn)程讀入作業(yè)內(nèi)容讀入作業(yè)內(nèi)容釋放輸入井空間釋放輸入井空間順取作業(yè)控制語句順取作業(yè)控制語句是結(jié)束語句是結(jié)束語句 執(zhí)行該作業(yè)步執(zhí)行該作業(yè)步(可能創(chuàng)建子進(jìn)程可能創(chuàng)建子進(jìn)程)申請輸出井空間申請輸出井空間輸出作業(yè)結(jié)果輸出作業(yè)結(jié)果進(jìn)程自我終止進(jìn)程自我終止FT2.4.2 交互式作業(yè)交互式作業(yè) n帳戶管理帳戶管理n/etc/passw

25、d文件文件n(用戶名用戶名,口令口令,用戶根目錄用戶根目錄,同組用戶同組用戶,余額余額)n創(chuàng)建與撤銷創(chuàng)建與撤銷n創(chuàng)建:創(chuàng)建:n用戶提供(用戶名用戶提供(用戶名,口令口令,資金)資金)n系統(tǒng)操作員建立(根目錄系統(tǒng)操作員建立(根目錄/usr/zhang, 填寫填寫passwd文件)文件)n撤銷:撤銷:n刪除該用戶目錄及所有文件刪除該用戶目錄及所有文件n在在passwd文件中清除對應(yīng)文件中清除對應(yīng)entry2.4.2 交互式作業(yè)交互式作業(yè)n注冊與注銷注冊與注銷n注冊:注冊:nlogon: 用戶名用戶名npassword: *n(使用使用)n注銷:注銷:n顯式注銷:顯式注銷:nlogoffn隱式注銷:

26、隱式注銷:n(如(如5分鐘無輸入命令)分鐘無輸入命令)命令解釋程序命令解釋程序提示符提示符$讀入終端命令讀入終端命令分析分析Logout內(nèi)部命令內(nèi)部命令處理處理建立子進(jìn)程建立子進(jìn)程后臺命令后臺命令等子進(jìn)程結(jié)束等子進(jìn)程結(jié)束輸出子進(jìn)程號輸出子進(jìn)程號記帳記帳TFTFFT小結(jié):作業(yè)、進(jìn)程、線程小結(jié):作業(yè)、進(jìn)程、線程n作業(yè)與進(jìn)程作業(yè)與進(jìn)程n作業(yè)進(jìn)入內(nèi)存后變?yōu)檫M(jìn)程作業(yè)進(jìn)入內(nèi)存后變?yōu)檫M(jìn)程n一個作業(yè)通常與多個進(jìn)程相對應(yīng)一個作業(yè)通常與多個進(jìn)程相對應(yīng)n進(jìn)程與線程進(jìn)程與線程n一個進(jìn)程一般包含多個線程,至少包含一個一個進(jìn)程一般包含多個線程,至少包含一個線程線程n不支持多線程的系統(tǒng),可視為單線程進(jìn)程不支持多線程的系統(tǒng),

27、可視為單線程進(jìn)程 2.5.1 Java線程線程 nJava線程四種基本狀態(tài)線程四種基本狀態(tài) nNew:新建的線程:新建的線程nRunnable:可運(yùn)行狀態(tài):可運(yùn)行狀態(tài)nBlocked:封鎖狀態(tài):封鎖狀態(tài)nDead:終止?fàn)顟B(tài):終止?fàn)顟B(tài) Java線程線程nJavaJava線程狀態(tài)之間的轉(zhuǎn)換關(guān)系圖線程狀態(tài)之間的轉(zhuǎn)換關(guān)系圖 Sleep()Suspend()IORunnableBlockedDeadNewStart()Stop()Resume()JAVA線程線程與與JVMnJava線程是由線程是由Java虛擬機(jī)虛擬機(jī)JVM支持的支持的 nJVM位于操作系統(tǒng)之上位于操作系統(tǒng)之上 nJava線程與操作系統(tǒng)線

28、程之間的對應(yīng)關(guān)線程與操作系統(tǒng)線程之間的對應(yīng)關(guān)系由系由JVM確定確定 n對于對于Windows NT的的JVM,Java線程與操線程與操作系統(tǒng)線程具有一對一關(guān)系作系統(tǒng)線程具有一對一關(guān)系; n對于對于Solaris的的JVM,其對應(yīng)關(guān)系為多對多,其對應(yīng)關(guān)系為多對多.2.5.2 Linux進(jìn)程與線程進(jìn)程與線程 n進(jìn)程與線程在系統(tǒng)內(nèi)部具有統(tǒng)一的表示進(jìn)程與線程在系統(tǒng)內(nèi)部具有統(tǒng)一的表示n進(jìn)程與線程的差別通過與進(jìn)程與線程的差別通過與fork不同的另不同的另外一個系統(tǒng)調(diào)用外一個系統(tǒng)調(diào)用clone體現(xiàn)出來體現(xiàn)出來 nClone系統(tǒng)調(diào)用的形式系統(tǒng)調(diào)用的形式 npid = clone(function,stack_

29、ptr,sharing_flag,arg)pid = clone(function,stack_ptr,sharing_flag,arg) nSharing-flag:Sharing-flag:nCLONE_VM, CLONE_FILES, CLONE_SIGHAND, CLONE_PIDCLONE_VM, CLONE_FILES, CLONE_SIGHAND, CLONE_PID2.5.3 Windows2000/XP進(jìn)程、線程與纖程 n進(jìn)程n在Win32環(huán)境中創(chuàng)建進(jìn)程的過程n當(dāng)Win32應(yīng)用執(zhí)行CreateProcess調(diào)用,消息被發(fā)給Win32子系統(tǒng),后者調(diào)用進(jìn)程管理器創(chuàng)建進(jìn)程,進(jìn)程管理器調(diào)用OM創(chuàng)建進(jìn)程對象,然后返回對象把柄給Win32.Win32子系統(tǒng)再次調(diào)用進(jìn)程管理器為該進(jìn)程創(chuàng)建線程,最后Win32將把柄返給新進(jìn)程和線程 對象頭部屬性Type: Process對象體屬性進(jìn)程標(biāo)識(Process id)訪問令牌(Access token)基礎(chǔ)優(yōu)先級(Base priority)缺省親合處理機(jī)(Default processor affinity)配額限制(Quota limits)執(zhí)行時間(Execution time)輸入/輸出記數(shù)(I/O counters)執(zhí)行/調(diào)試端口(Exception

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論