《進(jìn)程線程與作業(yè)》PPT課件.ppt_第1頁
《進(jìn)程線程與作業(yè)》PPT課件.ppt_第2頁
《進(jìn)程線程與作業(yè)》PPT課件.ppt_第3頁
《進(jìn)程線程與作業(yè)》PPT課件.ppt_第4頁
《進(jìn)程線程與作業(yè)》PPT課件.ppt_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章 進(jìn)程、線程與作業(yè),2.1 多道程序設(shè)計 Multi-programming 2.2 進(jìn)程的引入 Process 2.3 線程與輕進(jìn)程 Thread and light-weighted process 2.4 作業(yè) Job,Active objects,2.1 多道程序設(shè)計,2.1.1 單道程序設(shè)計的缺點 2.1.2 多道程序設(shè)計的提出 2.1.3 多道程序設(shè)計的問題,Multi-programming,多道程序設(shè)計目標(biāo),提高系統(tǒng)效率(吞吐量),2.1.1 單道程序設(shè)計的缺點,處理機利用率低 設(shè)備利用率低 內(nèi)存利用率低,運行程序A,CPU,設(shè)備1,運行程序A,t,t1,t2,t5,t6

2、,設(shè)備2,2.1.2 多道程序設(shè)計的提出,CPU,設(shè)備1,程序A,t,t1,t2,t5,t6,設(shè)備2,程序B,提高處理機、設(shè)備、內(nèi)存等各種資源的利用率,從而提高系統(tǒng)效率。,程序A,t3,t4,2.1.2 多道程序設(shè)計的提出(Cont.),增加同時運行程序的道數(shù)可以提高資源利用率,從而提高系統(tǒng)效率,但道數(shù)應(yīng)與系統(tǒng)資源數(shù)量相當(dāng)。 道數(shù)過少,系統(tǒng)資源利用率低。 道數(shù)過多,系統(tǒng)開銷(system overhead)增大,程序響應(yīng)速度下降。,2.1.3 多道程序設(shè)計的問題,處理機資源的管理 程序個數(shù)處理機個數(shù)(如何分配?) 存儲資源的管理 地址空間的相對獨立性、共享性 內(nèi)存、外存(swap space)

3、的分配與去配 設(shè)備資源管理 分配策略 IO控制,2.2 進(jìn)程的引入,2.2.1 進(jìn)程的概念 2.2.2 進(jìn)程狀態(tài)及狀態(tài)轉(zhuǎn)換 2.2.3 進(jìn)程控制塊 2.2.4 進(jìn)程的組成與上下文 2.2.5 進(jìn)程的隊列,2.2.6 進(jìn)程的類型與特征 2.2.7 進(jìn)程間相互聯(lián)系與相互作用 2.2.8 進(jìn)程的創(chuàng)建與撤銷 2.2.9 進(jìn)程與程序間的聯(lián)系與差別,多道系統(tǒng)中的程序: 推進(jìn),暫停,推進(jìn),暫停,. 暫停:保存現(xiàn)場(PSW+PC,寄存器) 推進(jìn):恢復(fù)現(xiàn)場(寄存器,PSW+PC) 暫停原因:(1) 自身原因:等待資源,啟動IO (2) 剝奪CPU給其它程序運行機會,2.2 進(jìn)程的引入(Cont.),2.2.1

4、進(jìn)程的概念,定義: 可參與并發(fā)執(zhí)行的程序稱為進(jìn)程。 進(jìn)程是具有一定獨立功能的程序關(guān)于一個數(shù)據(jù)集合的一次運行活動。 定義強調(diào)兩個方面: 動態(tài):執(zhí)行中的程序; 并發(fā):可與其他進(jìn)程同時執(zhí)行。,并發(fā) vs. 并行,并發(fā):concurrent 宏觀同時,“交替執(zhí)行”,不要求多個CPU 并行:parallel 微觀同時,要求多個CPU “并行算法”,2.2.2 進(jìn)程狀態(tài)及狀態(tài)轉(zhuǎn)換, 進(jìn)程狀態(tài)(基本狀態(tài)) 運行態(tài)(RUN): 占有CPU正在向前推進(jìn) 就緒態(tài)(READY): 可以運行,但未得到CPU 等待態(tài)(WAIT): 等待某一事件發(fā)生 狀態(tài)轉(zhuǎn)換 就緒運行:獲得處理機 運行就緒

5、:剝奪處理機 運行等待:申請資源未得到,啟動IO 等待就緒:得到資源,IO中斷,就緒,等待,運行,獲得處理機,剝奪處理機,等待事件,事件發(fā)生, 進(jìn)程狀態(tài)轉(zhuǎn)換圖,Keep in Mind,進(jìn)程狀態(tài)轉(zhuǎn)換由操作系統(tǒng)完成,對用戶是透明的; 進(jìn)程在其生存期內(nèi)經(jīng)過多次狀態(tài)轉(zhuǎn)換,體現(xiàn)了進(jìn)程的動態(tài)性和并發(fā)性。,2.2.3 進(jìn)程控制塊(PCB),標(biāo)志進(jìn)程存在的數(shù)據(jù)結(jié)構(gòu),其中保存系統(tǒng)管理進(jìn)程所需的全部信息 PCB內(nèi)容:(不同系統(tǒng)不盡相同) 進(jìn)程標(biāo)識(pid) 家族聯(lián)系 進(jìn)程狀態(tài) 地址信息 現(xiàn)場信息 打開文件 調(diào)度參數(shù) 消息指針 所屬用戶(uid) 隊列指針,Process Control Block

6、,2.2.4 進(jìn)程的組成與上下文,進(jìn)程的組成 進(jìn)程控制塊(process control block) 建立進(jìn)程建立PCB 撤銷PCB撤銷進(jìn)程 程序 代碼(code) 數(shù)據(jù)(data) 堆棧(stack+heap) 棧:保存返回點、參數(shù)、返回值、局部變量 堆:動態(tài)變量,2.2.4 進(jìn)程的組成與上下文,進(jìn)程的表記,PCB,程序,PCB,代碼,數(shù)據(jù) + 堆棧,表記1,表記2,系統(tǒng)空間,用戶空間,定義:進(jìn)程的程序(代碼和數(shù)據(jù))稱為進(jìn)程影像(Process Image)。,2.2.4 進(jìn)程的組成與上下文,進(jìn)程上下文(process context) 進(jìn)程的物理實體與支持進(jìn)程運行的物理環(huán)境統(tǒng)稱為進(jìn)程上下

7、文 PCB+程序 系統(tǒng)環(huán)境:地址空間,系統(tǒng)棧,打開文件表, 上下文切換(context switch) 由一個進(jìn)程的上下文轉(zhuǎn)到另外一個進(jìn)程的上下文 系統(tǒng)開銷(system overhead) 運行操作系統(tǒng)程序完成系統(tǒng)管理工作所花費的時間和空間,2.2.5 進(jìn)程的隊列,1. 就緒隊列:系統(tǒng)一個或若干個(根據(jù)調(diào)度算法確定) 2. 等待隊列:每個等待事件一個 3. 運行指示字:每個處理機一個,PCB構(gòu)成的隊列:(不一定FIFO,單向或雙向),進(jìn)程隊列模型,等待隊列1,等待隊列2,等待隊列n,CPU,創(chuàng)建,完成,時間片用完,等待事件1,等待事件2,等待事件n,事件1發(fā)生,事件2發(fā)生,事件n發(fā)生,2.2

8、.6 進(jìn)程的類型與特征,進(jìn)程類型 系統(tǒng)進(jìn)程 運行操作系統(tǒng)程序,完成系統(tǒng)管理(服務(wù))功能. 例如:UNIX #0 - sched, #1 - init 用戶進(jìn)程 運行用戶(應(yīng)用)程序,為用戶服務(wù)。 例如:UNIX vi, cc,2.2.6 進(jìn)程的類型與特征(Cont.),進(jìn)程的特征 并發(fā)性:可以與其它進(jìn)程一道向前推進(jìn); 動態(tài)性:動態(tài)產(chǎn)生、消亡,生存期內(nèi)狀態(tài)動態(tài)變化; 獨立性:一個進(jìn)程是可以調(diào)度的基本單位; 交往性:同時運行的進(jìn)程可能發(fā)生相互作用; 異步性:進(jìn)程以各自獨立,不可預(yù)知的速度向前推進(jìn); 結(jié)構(gòu)性:每個進(jìn)程有一個PCB。,2.2.7 進(jìn)程間相互聯(lián)系與相互作用,相互聯(lián)系 相關(guān)進(jìn)程 同一家族的

9、進(jìn)程 可以共享文件,需要相互通訊,協(xié)調(diào)推進(jìn)速度 父進(jìn)程可以監(jiān)視子進(jìn)程,子進(jìn)程完成父進(jìn)程交給的任務(wù)。 無關(guān)進(jìn)程 沒有邏輯關(guān)系的進(jìn)程。,2.2.7 進(jìn)程間相互聯(lián)系與相互作用,相互作用,1. 直接相互作用:發(fā)生在相關(guān)進(jìn)程之間,2. 間接相互作用:發(fā)生在任何進(jìn)程之間,R,P2,P1,sync,send,receive,P1:,P2:,hold,wait,2.2.8 進(jìn)程的創(chuàng)建與撤銷,進(jìn)程的創(chuàng)建 建立PCB,分配內(nèi)存,加載程序,入就緒鏈 UNIX:pid=fork(),exec(prog,args) 進(jìn)程的撤銷 去配資源,撤銷PCB,通知父進(jìn)程 UNIX:exit() vs. kill 除初始進(jìn)程外,其

10、它進(jìn)程由(父)進(jìn)程創(chuàng)建,并形成進(jìn)程家族。,考慮生滅的進(jìn)程狀態(tài)轉(zhuǎn)換圖,初創(chuàng),終止,創(chuàng)建,結(jié)束,2.2.9 進(jìn)程與程序的聯(lián)系與差別,進(jìn)程與程序的聯(lián)系 進(jìn)程包括一個程序 進(jìn)程存在的目的就是執(zhí)行這個程序 進(jìn)程與程序的差別 程序靜態(tài),進(jìn)程動態(tài) 程序可長期保存,進(jìn)程有生存期 一個程序可對應(yīng)多個進(jìn)程,一個進(jìn)程只能執(zhí)行一個程序,2.3 線程與輕進(jìn)程,2.3.1 線程的引入 2.3.2 線程的概念 2.3.3 線程的結(jié)構(gòu) 2.3.4 線程控制塊 2.3.5 線程的實現(xiàn) 2.3.6 線程的應(yīng)用 2.3.7 Java線程,Thread Light-weighted process,2.3.1 線程的引入,進(jìn)程切換

11、上下文涉及內(nèi)容多,開銷大,“笨重” PCB+程序 系統(tǒng)環(huán)境:地址空間,系統(tǒng)棧,打開文件表, 相關(guān)進(jìn)程之間耦合關(guān)系差 解決方案 Multi-threading 同一進(jìn)程中包含多個線程 上下文只涉及寄存器和用戶棧,切換速度快 相關(guān)線程之間通訊方便、快捷,2.3.2 線程的概念,進(jìn)程中一個相對獨立的執(zhí)行流。 進(jìn)程 vs.線程 進(jìn)程是資源分配單位 線程是執(zhí)行單位 多線程優(yōu)點 切換速度快(地址空間不變)(light weighted) 系統(tǒng)開銷小 通訊容易(共享數(shù)據(jù)空間),2.3.3 線程結(jié)構(gòu),多進(jìn)程結(jié)構(gòu)(用戶視圖),內(nèi)存,靜態(tài)數(shù)據(jù),程序代碼,棧,寄存器,進(jìn)程,動 態(tài) 堆,內(nèi)存,2.3.3 線程結(jié)構(gòu),靜

12、態(tài)數(shù)據(jù),程序代碼,寄存器,寄存器,線程1,線程2,進(jìn)程,動 態(tài) 堆,內(nèi)存,多線程結(jié)構(gòu)(用戶視圖),棧,棧,2.3.4 線程控制塊,TCB(Thread control block) 標(biāo)志線程存在的數(shù)據(jù)結(jié)構(gòu),其中包含對線程管理需要的全部信息 內(nèi)容 線程標(biāo)識 線程狀態(tài) 調(diào)度參數(shù) 現(xiàn)場(通用寄存器,PC,SP) 鏈接指針 存放位置 用戶級線程:目態(tài)空間(運行時系統(tǒng)) 核心級線程:系統(tǒng)空間,2.3.5 線程的實現(xiàn),2.3.1 用戶級別線程 User-level thread 2.3.2 核心級別線程 Kernel-level thread 2.3.3 混合線程 Hybrid approach,2.3.

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

14、一進(jìn)程內(nèi)多線程切換速度慢 調(diào)度算法不能靈活控制, 核心級別線程,進(jìn)程,線程,核心棧,進(jìn)程表,用戶空間,系統(tǒng)空間,TCB, 混合線程,Solaris例子 User level thread: 由Lib程序支持(創(chuàng)建,調(diào)度) Light weighted process(LWP): 由Lib程序支持 每個task至少一個LWP 用戶級別線程與LWP可以多對多 LWP對操作系統(tǒng)可見 只有與LWP相聯(lián)系的用戶線程向前推進(jìn) Kernel level thread: 由kernel 支持 每個LWP與唯一一個核心線程對應(yīng) 核心線程可與CPU多對多,多對一, 混合線

15、程(Solaris),CPU,task1,task2,task3,kernel,User level thread,Lightweight process,Kernel thread,2.3.6 線程的應(yīng)用,內(nèi)在的多控制流,需要共享數(shù)據(jù) 生產(chǎn)消費問題 多線程優(yōu)于多進(jìn)程 快100倍! 提高處理機與設(shè)備的并行性 多處理機環(huán)境 提高處理機利用率,加快進(jìn)程推進(jìn)速度,2.3.6 線程的應(yīng)用,例子: Word字處理(不同代碼) 交互編輯(T1) 詞法檢查(T2) 定時保存(T3) HTTP server(相同代碼) 對每個http請求,pop up一個線程,2.4 作業(yè)(Job),作業(yè)概念 用戶要求計算機

16、系統(tǒng)為其完成的計算任務(wù)集合。 作業(yè)步(job step) 作業(yè)處理過程中一個相對獨立的步驟 一般一個作業(yè)步可由一個進(jìn)程完成 某些作業(yè)步之間可以并行 作業(yè)分類 批處理作業(yè) 交互式作業(yè),2.4.1 批處理作業(yè),定義:作業(yè)控制塊是標(biāo)志作業(yè)存在的數(shù)據(jù)結(jié)構(gòu),其中包含系統(tǒng)對作業(yè)進(jìn)行管理所需要的全部信息 作業(yè)控制塊 作業(yè)名稱 作業(yè)狀態(tài) 調(diào)度參數(shù) 資源需求 相關(guān)進(jìn)程 作業(yè)長度 在輸入井與輸出井中的存放位置 記帳信息,2.4.1 批處理作業(yè),作業(yè)控制語言(JCL) 描述批處理作業(yè)控制意圖的語言 作業(yè)說明書(JCL語句的序列) 一般一特殊符號起始 $JOB J1 $FORTN $LINK $EXEC $ENDJO

17、B 作業(yè)控制程序 解釋并處理作業(yè)說明書的程序 作業(yè)控制進(jìn)程 執(zhí)行作業(yè)控制程序的進(jìn)程,作業(yè)控制進(jìn)程,讀入作業(yè)內(nèi)容,釋放輸入井空間,順取作業(yè)控制語句,是結(jié)束語句,執(zhí)行該作業(yè)步 (可能創(chuàng)建子進(jìn)程),申請輸出井空間,輸出作業(yè)結(jié)果,進(jìn)程自我終止,F,T,2.4.2 交互式作業(yè),帳戶管理 /etc/passwd文件 (用戶名,口令,用戶根目錄,同組用戶,余額) 創(chuàng)建與撤銷 創(chuàng)建: 用戶提供(用戶名,口令,資金) 系統(tǒng)操作員建立(根目錄/usr/zhang, 填寫passwd文件) 撤銷: 刪除該用戶目錄及所有文件 在passwd文件中清除對應(yīng)entry,2.4.2 交互式作業(yè),注冊與注銷 注冊: logo

18、n: 用戶名 password: * (使用) 注銷: 顯式注銷: logoff 隱式注銷: (如5分鐘無輸入命令),命令解釋程序,提示符$,讀入終端命令,分析,Logout,內(nèi)部命令,處理,建立子進(jìn)程,后臺命令,等子進(jìn)程結(jié)束,輸出子進(jìn)程號,記帳,T,F,T,F,F,T,小結(jié):作業(yè)、進(jìn)程、線程,作業(yè)與進(jìn)程 作業(yè)進(jìn)入內(nèi)存后變?yōu)檫M(jìn)程 一個作業(yè)通常與多個進(jìn)程相對應(yīng) 進(jìn)程與線程 一個進(jìn)程一般包含多個線程,至少包含一個線程 不支持多線程的系統(tǒng),可視為單線程進(jìn)程,2.5.1 Java線程,Java線程四種基本狀態(tài) New:新建的線程 Runnable:可運行狀態(tài) Blocked:封鎖狀態(tài) Dead:終止?fàn)?/p>

19、態(tài),Java線程,Java線程狀態(tài)之間的轉(zhuǎn)換關(guān)系圖,Sleep() Suspend() IO,Runnable,Blocked,Dead,New,Start(),Stop(),Resume(),JAVA線程與JVM,Java線程是由Java虛擬機JVM支持的 JVM位于操作系統(tǒng)之上 Java線程與操作系統(tǒng)線程之間的對應(yīng)關(guān)系由JVM確定 對于Windows NT的JVM,Java線程與操作系統(tǒng)線程具有一對一關(guān)系; 對于Solaris的JVM,其對應(yīng)關(guān)系為多對多.,2.5.2 Linux進(jìn)程與線程,進(jìn)程與線程在系統(tǒng)內(nèi)部具有統(tǒng)一的表示 進(jìn)程與線程的差別通過與fork不同的另外一個系統(tǒng)調(diào)用clone體現(xiàn)出來 Clone系統(tǒng)調(diào)用的形式 pid = clone(function,stack_ptr,sharing_flag,arg) Sharing-flag: CLONE_VM, CLONE_FILES, CLONE_SIGHAND, CLONE_PID,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論