chap5UNIX進(jìn)程調(diào)度和進(jìn)程存儲(chǔ) unix_第1頁(yè)
chap5UNIX進(jìn)程調(diào)度和進(jìn)程存儲(chǔ) unix_第2頁(yè)
chap5UNIX進(jìn)程調(diào)度和進(jìn)程存儲(chǔ) unix_第3頁(yè)
chap5UNIX進(jìn)程調(diào)度和進(jìn)程存儲(chǔ) unix_第4頁(yè)
chap5UNIX進(jìn)程調(diào)度和進(jìn)程存儲(chǔ) unix_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、整理課件第五講第五講 UNIXUNIX進(jìn)程調(diào)用進(jìn)程調(diào)用和進(jìn)程存儲(chǔ)和進(jìn)程存儲(chǔ) 整理課件概述概述 UNIX UNIX系統(tǒng)是分時(shí)多任務(wù)、多道程序環(huán)境系統(tǒng)。它采用時(shí)間片輪轉(zhuǎn)系統(tǒng)是分時(shí)多任務(wù)、多道程序環(huán)境系統(tǒng)。它采用時(shí)間片輪轉(zhuǎn)轉(zhuǎn)方式為系統(tǒng)中的多個(gè)用戶的多道程序提供服務(wù)。為了跟蹤計(jì)算機(jī)并轉(zhuǎn)方式為系統(tǒng)中的多個(gè)用戶的多道程序提供服務(wù)。為了跟蹤計(jì)算機(jī)并行活動(dòng)的狀態(tài)及并發(fā)程序?qū)Y源的共享使用,提出了進(jìn)程的概念。行活動(dòng)的狀態(tài)及并發(fā)程序?qū)Y源的共享使用,提出了進(jìn)程的概念。整理課件提綱提綱1 1 進(jìn)程基本概念進(jìn)程基本概念2 UNIX2 UNIX系統(tǒng)中的進(jìn)程系統(tǒng)中的進(jìn)程3 UNIX3 UNIX系統(tǒng)進(jìn)程調(diào)度和管理系統(tǒng)進(jìn)程調(diào)

2、度和管理4 4 進(jìn)程存儲(chǔ)管理與存儲(chǔ)技術(shù)進(jìn)程存儲(chǔ)管理與存儲(chǔ)技術(shù)5 UNIX5 UNIX進(jìn)程的存儲(chǔ)管理進(jìn)程的存儲(chǔ)管理6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制整理課件1 1 進(jìn)程的基本概念進(jìn)程的基本概念1進(jìn)程與程序進(jìn)程與程序(a)程序:程序代碼,靜態(tài))程序:程序代碼,靜態(tài) 進(jìn)程:可以看作某種特定任務(wù)的程序在一個(gè)數(shù)據(jù)集合上的一進(jìn)程:可以看作某種特定任務(wù)的程序在一個(gè)數(shù)據(jù)集合上的一次具體的活動(dòng),動(dòng)態(tài)。次具體的活動(dòng),動(dòng)態(tài)。(b)進(jìn)程與程序相比具有動(dòng)態(tài)性、獨(dú)立性、并發(fā)性等特點(diǎn)。)進(jìn)程與程序相比具有動(dòng)態(tài)性、獨(dú)立性、并發(fā)性等特點(diǎn)。整理課件1 1 進(jìn)程的基本概念進(jìn)程的基本概念2進(jìn)程的描述進(jìn)程的描述 進(jìn)程的結(jié)構(gòu)進(jìn)程描

3、述信息進(jìn)程的結(jié)構(gòu)進(jìn)程描述信息 進(jìn)程實(shí)體進(jìn)程實(shí)體PCB 程序段數(shù)據(jù)結(jié)構(gòu)集程序段數(shù)據(jù)結(jié)構(gòu)集PCB:包括進(jìn)程的描述信息、控制信息及進(jìn)程使用資源信息、包括進(jìn)程的描述信息、控制信息及進(jìn)程使用資源信息、處理器現(xiàn)場(chǎng)保護(hù)結(jié)構(gòu)等,其中內(nèi)容是進(jìn)程動(dòng)態(tài)特征的集中反處理器現(xiàn)場(chǎng)保護(hù)結(jié)構(gòu)等,其中內(nèi)容是進(jìn)程動(dòng)態(tài)特征的集中反映。映。OS通過(guò)通過(guò)PCB感知一個(gè)進(jìn)程的存在。感知一個(gè)進(jìn)程的存在。程序段:程序段:進(jìn)程需要完成功能的程序代碼。進(jìn)程需要完成功能的程序代碼。數(shù)據(jù)結(jié)構(gòu)集數(shù)據(jù)結(jié)構(gòu)集:進(jìn)程的程序執(zhí)行時(shí)要完成功能的程序代碼。:進(jìn)程的程序執(zhí)行時(shí)要完成功能的程序代碼。整理課件1 1 進(jìn)程的基本概念進(jìn)程的基本概念3進(jìn)程的狀態(tài)進(jìn)程的狀態(tài)

4、程序程序 靜態(tài)靜態(tài) 進(jìn)程進(jìn)程 動(dòng)態(tài),具有生命周期動(dòng)態(tài),具有生命周期 非運(yùn)行 運(yùn)行 調(diào)度 進(jìn)入 退出 暫停 兩狀態(tài)進(jìn)程模式:兩狀態(tài)進(jìn)程模式:兩狀態(tài)進(jìn)程模式中包含的進(jìn)程狀態(tài)轉(zhuǎn)換過(guò)程:兩狀態(tài)進(jìn)程模式中包含的進(jìn)程狀態(tài)轉(zhuǎn)換過(guò)程:進(jìn)程開始;調(diào)度運(yùn)行;暫停運(yùn)行;進(jìn)程結(jié)束進(jìn)程開始;調(diào)度運(yùn)行;暫停運(yùn)行;進(jìn)程結(jié)束整理課件1 1 進(jìn)程的基本概念進(jìn)程的基本概念五狀態(tài)進(jìn)程模式:五狀態(tài)進(jìn)程模式: 創(chuàng)建創(chuàng)建阻塞阻塞就緒就緒運(yùn)行運(yùn)行退出退出事件等待超時(shí)調(diào)度事件發(fā)生提交新建釋放五狀態(tài)進(jìn)程模式中包含的進(jìn)程狀態(tài)轉(zhuǎn)換過(guò)程:五狀態(tài)進(jìn)程模式中包含的進(jìn)程狀態(tài)轉(zhuǎn)換過(guò)程: 創(chuàng)建新進(jìn)程;進(jìn)程提交;調(diào)度運(yùn)行;釋放;超時(shí);創(chuàng)建新進(jìn)程;進(jìn)程提交;調(diào)度

5、運(yùn)行;釋放;超時(shí);事件等待;事件發(fā)生事件等待;事件發(fā)生整理課件1 1 進(jìn)程的基本概念進(jìn)程的基本概念4進(jìn)程控制進(jìn)程控制 主要實(shí)現(xiàn)進(jìn)程狀態(tài)的轉(zhuǎn)換和并發(fā)進(jìn)程的管理主要實(shí)現(xiàn)進(jìn)程狀態(tài)的轉(zhuǎn)換和并發(fā)進(jìn)程的管理 1)原語(yǔ)原語(yǔ) 不可分解,不間斷,不可并發(fā)執(zhí)行的程序段不可分解,不間斷,不可并發(fā)執(zhí)行的程序段2)臨界區(qū)臨界區(qū) 指共享某個(gè)資源時(shí),不允許多個(gè)并發(fā)的程序交叉執(zhí)行的一段代指共享某個(gè)資源時(shí),不允許多個(gè)并發(fā)的程序交叉執(zhí)行的一段代碼。并發(fā)產(chǎn)生的原因:隨機(jī)發(fā)生,碼。并發(fā)產(chǎn)生的原因:隨機(jī)發(fā)生, 程序需要互不干涉。程序需要互不干涉。 3)進(jìn)程互斥進(jìn)程互斥 4)信號(hào)量信號(hào)量 描述共享資源使用情況的數(shù)據(jù)結(jié)構(gòu)描述共享資源使用情

6、況的數(shù)據(jù)結(jié)構(gòu) 5)進(jìn)程同步進(jìn)程同步 有兩種方式:有兩種方式:互斥互斥: 我在,你不能在我在,你不能在 間接制約關(guān)系間接制約關(guān)系 同步同步: 你不來(lái),我不能走你不來(lái),我不能走 直接制約關(guān)系直接制約關(guān)系整理課件2 UNIX2 UNIX中的進(jìn)程中的進(jìn)程1 UNIX創(chuàng)建進(jìn)程的過(guò)程創(chuàng)建進(jìn)程的過(guò)程 引引 導(dǎo)導(dǎo) 程程 序序 核核 心心 程程 序序 創(chuàng)創(chuàng) 建建 : 0 號(hào)號(hào) 進(jìn)進(jìn) 程程 0 號(hào)號(hào) 進(jìn)進(jìn) 程程 創(chuàng)創(chuàng) 建建 1 號(hào)號(hào) 進(jìn)進(jìn) 程程 完完 成成 init 1 號(hào)號(hào) 進(jìn)進(jìn) 程程 創(chuàng)創(chuàng)建建 終終 端端 1 1 號(hào)號(hào) 進(jìn)進(jìn) 程程 創(chuàng)創(chuàng)建建 終終 端端 2 1 號(hào)號(hào) 進(jìn)進(jìn) 程程 創(chuàng)創(chuàng)建建 終終 端端 n .

7、子子 進(jìn)進(jìn) 程程 子子 進(jìn)進(jìn) 程程 . 子子 進(jìn)進(jìn) 程程 整理課件2 UNIX2 UNIX中的進(jìn)程中的進(jìn)程2UNIX中進(jìn)程的描述中進(jìn)程的描述 運(yùn)行中的每個(gè)進(jìn)程都有一個(gè)獨(dú)立的運(yùn)行環(huán)境,這個(gè)環(huán)境是進(jìn)程生存的基運(yùn)行中的每個(gè)進(jìn)程都有一個(gè)獨(dú)立的運(yùn)行環(huán)境,這個(gè)環(huán)境是進(jìn)程生存的基礎(chǔ),即礎(chǔ),即進(jìn)程上下文進(jìn)程上下文 。 Proc User 系系 統(tǒng)統(tǒng) 棧棧 用用 戶戶 棧棧 數(shù)數(shù) 據(jù)據(jù) 段段 正正 文文 段段 整理課件3 UNIX3 UNIX進(jìn)程調(diào)度和管理進(jìn)程調(diào)度和管理 1進(jìn)程調(diào)度的方法進(jìn)程調(diào)度的方法 動(dòng)態(tài)優(yōu)先級(jí)多級(jí)反饋循環(huán)調(diào)度法公式:動(dòng)態(tài)優(yōu)先級(jí)多級(jí)反饋循環(huán)調(diào)度法公式: 2計(jì)算公式計(jì)算公式P-priP-cpuP

8、USER(25)P-niceNZERO(20) 優(yōu)點(diǎn):優(yōu)點(diǎn): 1)創(chuàng)建新進(jìn)程,)創(chuàng)建新進(jìn)程,cpu0, P-pri值較小,優(yōu)先級(jí)較大值較小,優(yōu)先級(jí)較大 2)使用越多,)使用越多,P-cpu越大,越大,P-pri值較大,優(yōu)先級(jí)較小值較大,優(yōu)先級(jí)較小 3)使用越少,)使用越少,P-cpu越小,越小,P-pri值較小,優(yōu)先級(jí)較大值較小,優(yōu)先級(jí)較大 整理課件4 4 進(jìn)程存儲(chǔ)管理進(jìn)程存儲(chǔ)管理 存儲(chǔ)管理的主要功能:存儲(chǔ)管理的主要功能:(1)存儲(chǔ)空間的分配,回收;)存儲(chǔ)空間的分配,回收;(2)地址變換;)地址變換;(3)存儲(chǔ)共享和保護(hù);)存儲(chǔ)共享和保護(hù);(4)存儲(chǔ)器擴(kuò)充)存儲(chǔ)器擴(kuò)充(5)提高主存的利用率)提

9、高主存的利用率計(jì)算機(jī)的存儲(chǔ)結(jié)構(gòu)圖:計(jì)算機(jī)的存儲(chǔ)結(jié)構(gòu)圖: 寄寄存存器器 高高速速緩緩存存 主主存存 輔輔存存 CPU CPU內(nèi)內(nèi) 系系統(tǒng)統(tǒng)內(nèi)內(nèi)存存 硬硬盤盤,光光盤盤,磁磁帶帶 訪訪問(wèn)問(wèn)速速度度 慢慢 存存儲(chǔ)儲(chǔ)空空間間 大大 單單位位價(jià)價(jià)格格 低低 整理課件4.1 4.1 進(jìn)程存儲(chǔ)技術(shù)進(jìn)程存儲(chǔ)技術(shù) 程序以進(jìn)程的方式存放于內(nèi)存中,程序以進(jìn)程的方式存放于內(nèi)存中,CPU在內(nèi)存中實(shí)現(xiàn)進(jìn)程之間在內(nèi)存中實(shí)現(xiàn)進(jìn)程之間的切換調(diào)度。采用一些策略和算法來(lái)分配存儲(chǔ)空間,使進(jìn)程在內(nèi)的切換調(diào)度。采用一些策略和算法來(lái)分配存儲(chǔ)空間,使進(jìn)程在內(nèi)存和磁盤之間來(lái)回切換。此過(guò)程為進(jìn)程的存儲(chǔ)管理過(guò)程。存和磁盤之間來(lái)回切換。此過(guò)程為進(jìn)程

10、的存儲(chǔ)管理過(guò)程。 1連續(xù)分配存儲(chǔ)技術(shù)連續(xù)分配存儲(chǔ)技術(shù) 操作系統(tǒng)為運(yùn)行的進(jìn)程分配一個(gè)連續(xù)的內(nèi)存空間操作系統(tǒng)為運(yùn)行的進(jìn)程分配一個(gè)連續(xù)的內(nèi)存空間 (a) 單一連續(xù)分配存儲(chǔ)方式:?jiǎn)我贿B續(xù)分配存儲(chǔ)方式: 系系統(tǒng)統(tǒng)區(qū)區(qū) 用用戶戶區(qū)區(qū) 為為一一個(gè)個(gè)進(jìn)進(jìn)程程分分配配,適適用用了了單單用用戶戶單單任任務(wù)務(wù)的的系系統(tǒng)統(tǒng)管管理理,出出現(xiàn)現(xiàn)在在較較早早時(shí)時(shí)期期 整理課件4.1 4.1 進(jìn)程存儲(chǔ)技術(shù)進(jìn)程存儲(chǔ)技術(shù) 系系統(tǒng)統(tǒng)區(qū)區(qū) 用用戶戶區(qū)區(qū) 1 可可以以連連續(xù)續(xù)放放多多個(gè)個(gè)進(jìn)進(jìn)程程,實(shí)實(shí)現(xiàn)現(xiàn)進(jìn)進(jìn)程程的的并并發(fā)發(fā),但但是是有有碎碎片片產(chǎn)產(chǎn)生生,可可以以利利用用內(nèi)內(nèi)存存緊緊縮縮技技術(shù)術(shù) 用用戶戶區(qū)區(qū) 2 . 1連續(xù)分配存儲(chǔ)技

11、術(shù)連續(xù)分配存儲(chǔ)技術(shù) 操作系統(tǒng)為運(yùn)行的進(jìn)程分配一個(gè)連續(xù)的內(nèi)存空間操作系統(tǒng)為運(yùn)行的進(jìn)程分配一個(gè)連續(xù)的內(nèi)存空間 (b)分區(qū)式連續(xù)存儲(chǔ)方式:分區(qū)式連續(xù)存儲(chǔ)方式: 整理課件4.1 4.1 進(jìn)程存儲(chǔ)技術(shù)進(jìn)程存儲(chǔ)技術(shù) (1)覆蓋)覆蓋 目的:目的: 在較小的可用內(nèi)存中運(yùn)行較大的程序在較小的可用內(nèi)存中運(yùn)行較大的程序 原理:原理: 一個(gè)程序的幾個(gè)代碼段或數(shù)據(jù)段按照使用的先后順序以一個(gè)程序的幾個(gè)代碼段或數(shù)據(jù)段按照使用的先后順序以覆蓋方式占用共享內(nèi)存區(qū)域。覆蓋方式占用共享內(nèi)存區(qū)域。 原則:原則: 將程序中必要的數(shù)據(jù)放在常駐內(nèi)存中。將程序中必要的數(shù)據(jù)放在常駐內(nèi)存中。將不經(jīng)常用的放在交換區(qū)。將不存在調(diào)用關(guān)系的模塊可以采

12、用覆將不經(jīng)常用的放在交換區(qū)。將不存在調(diào)用關(guān)系的模塊可以采用覆蓋方式共享內(nèi)存分區(qū)。蓋方式共享內(nèi)存分區(qū)。(2 2)交換:在多個(gè)程序并發(fā)執(zhí)行的時(shí)候,將暫時(shí)不執(zhí)行的代碼放)交換:在多個(gè)程序并發(fā)執(zhí)行的時(shí)候,將暫時(shí)不執(zhí)行的代碼放入交換區(qū),從而可以用更大的內(nèi)存空間裝入新的進(jìn)程。入交換區(qū),從而可以用更大的內(nèi)存空間裝入新的進(jìn)程。 2覆蓋和交換技術(shù)覆蓋和交換技術(shù)整理課件4.1 4.1 進(jìn)程存儲(chǔ)技術(shù)進(jìn)程存儲(chǔ)技術(shù) 3頁(yè)式存儲(chǔ)管理頁(yè)式存儲(chǔ)管理 解決內(nèi)存碎片,提高內(nèi)存的利用率解決內(nèi)存碎片,提高內(nèi)存的利用率 1)基本思想:進(jìn)程邏輯空間劃分為若干頁(yè),內(nèi)存劃分為若干物理頁(yè)。)基本思想:進(jìn)程邏輯空間劃分為若干頁(yè),內(nèi)存劃分為若干物

13、理頁(yè)。進(jìn)程按照頁(yè)的大小分配內(nèi)存空間,可以連續(xù)或不連續(xù)分配。進(jìn)程按照頁(yè)的大小分配內(nèi)存空間,可以連續(xù)或不連續(xù)分配。頁(yè)號(hào)頁(yè)號(hào)頁(yè)面號(hào)頁(yè)面號(hào)05176212靜態(tài)頁(yè)式管理靜態(tài)頁(yè)式管理:進(jìn)程在執(zhí)行前將程序段和數(shù)據(jù)段一次性裝入內(nèi)存的各個(gè):進(jìn)程在執(zhí)行前將程序段和數(shù)據(jù)段一次性裝入內(nèi)存的各個(gè)頁(yè)面中。頁(yè)面中。數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu): 進(jìn)程頁(yè)表:每個(gè)進(jìn)程都有進(jìn)程頁(yè)表,邏輯頁(yè)號(hào)對(duì)應(yīng)物理頁(yè)面號(hào)進(jìn)程頁(yè)表:每個(gè)進(jìn)程都有進(jìn)程頁(yè)表,邏輯頁(yè)號(hào)對(duì)應(yīng)物理頁(yè)面號(hào) 整理課件4.1 4.1 進(jìn)程存儲(chǔ)技術(shù)進(jìn)程存儲(chǔ)技術(shù) 請(qǐng)求表:系統(tǒng)有一個(gè)請(qǐng)求表,可以放到請(qǐng)求表:系統(tǒng)有一個(gè)請(qǐng)求表,可以放到PCB描述中描述中 進(jìn)程號(hào)進(jìn)程號(hào)請(qǐng)求數(shù)請(qǐng)求數(shù)頁(yè)表地址頁(yè)表地址頁(yè)表

14、長(zhǎng)度頁(yè)表長(zhǎng)度狀態(tài)狀態(tài)120102220已分配已分配 用于地址轉(zhuǎn)換用于地址轉(zhuǎn)換 存儲(chǔ)頁(yè)面表:存儲(chǔ)頁(yè)面表: 系統(tǒng)有一張,用于描述內(nèi)存各個(gè)頁(yè)面的分配情況系統(tǒng)有一張,用于描述內(nèi)存各個(gè)頁(yè)面的分配情況動(dòng)態(tài)頁(yè)式管理動(dòng)態(tài)頁(yè)式管理:只需要將執(zhí)行部分調(diào)入(缺頁(yè)中斷則調(diào)入),動(dòng):只需要將執(zhí)行部分調(diào)入(缺頁(yè)中斷則調(diào)入),動(dòng)態(tài)管理程序各部分在內(nèi)存中的調(diào)入調(diào)出。態(tài)管理程序各部分在內(nèi)存中的調(diào)入調(diào)出。 整理課件4.1 4.1 進(jìn)程存儲(chǔ)技術(shù)進(jìn)程存儲(chǔ)技術(shù) 2)頁(yè)式管理的地址變換)頁(yè)式管理的地址變換 頁(yè)頁(yè)表表長(zhǎng)長(zhǎng)度度 頁(yè)頁(yè)表表地地址址 控控制制寄寄存存器器 8 有有效效地地址址 邏邏輯輯頁(yè)頁(yè)號(hào)號(hào) 物物理理頁(yè)頁(yè)號(hào)號(hào) 0 2 1 3

15、2 8 1C4 2 1C4(頁(yè)頁(yè)內(nèi)內(nèi)地地址址) 物物理理地地址址 整理課件4.1 4.1 進(jìn)程存儲(chǔ)技術(shù)進(jìn)程存儲(chǔ)技術(shù) 4段式存儲(chǔ)管理段式存儲(chǔ)管理 1)將內(nèi)存分為不同的分區(qū),視為二維空間,進(jìn)程按照邏輯內(nèi)容)將內(nèi)存分為不同的分區(qū),視為二維空間,進(jìn)程按照邏輯內(nèi)容分段。分段。 2)特點(diǎn):以段為單位分配內(nèi)存分區(qū),段可以不連續(xù)。每個(gè)段可)特點(diǎn):以段為單位分配內(nèi)存分區(qū),段可以不連續(xù)。每個(gè)段可以占用一個(gè)內(nèi)存分區(qū)。內(nèi)存管理采用動(dòng)態(tài)分區(qū)方法,采用缺段中以占用一個(gè)內(nèi)存分區(qū)。內(nèi)存管理采用動(dòng)態(tài)分區(qū)方法,采用缺段中斷處理。斷處理。 3)數(shù)據(jù)結(jié)構(gòu):進(jìn)程段表)數(shù)據(jù)結(jié)構(gòu):進(jìn)程段表整理課件4.2 4.2 虛擬存儲(chǔ)技術(shù)虛擬存儲(chǔ)技術(shù)

16、1局部性原理局部性原理 程序執(zhí)行過(guò)程中,在較短的時(shí)期內(nèi),所執(zhí)行的指令地址以及操程序執(zhí)行過(guò)程中,在較短的時(shí)期內(nèi),所執(zhí)行的指令地址以及操作數(shù)地址分別局限在一個(gè)區(qū)域內(nèi)。作數(shù)地址分別局限在一個(gè)區(qū)域內(nèi)。 時(shí)間局限性:時(shí)間局限性: 當(dāng)前指令執(zhí)行與下條指令執(zhí)行,數(shù)據(jù)的當(dāng)前訪問(wèn)當(dāng)前指令執(zhí)行與下條指令執(zhí)行,數(shù)據(jù)的當(dāng)前訪問(wèn)和下次訪問(wèn)集中在一個(gè)時(shí)間段中。和下次訪問(wèn)集中在一個(gè)時(shí)間段中。 空間局部性:空間局部性: 當(dāng)前訪問(wèn)指令和臨近訪問(wèn)的指令,當(dāng)前訪問(wèn)的數(shù)當(dāng)前訪問(wèn)指令和臨近訪問(wèn)的指令,當(dāng)前訪問(wèn)的數(shù)據(jù)和臨近訪問(wèn)的數(shù)據(jù)集中在一個(gè)較小區(qū)域內(nèi)。據(jù)和臨近訪問(wèn)的數(shù)據(jù)集中在一個(gè)較小區(qū)域內(nèi)。 原因:大部分程序在空間上順序執(zhí)行,在時(shí)間上

17、循環(huán)執(zhí)行原因:大部分程序在空間上順序執(zhí)行,在時(shí)間上循環(huán)執(zhí)行整理課件4.2 4.2 虛擬存儲(chǔ)技術(shù)虛擬存儲(chǔ)技術(shù) 2虛存的原理虛存的原理 只需將當(dāng)前需要執(zhí)行的部分頁(yè)和部分段讀入到內(nèi)存中就可讓只需將當(dāng)前需要執(zhí)行的部分頁(yè)和部分段讀入到內(nèi)存中就可讓程序開始執(zhí)行。程序開始執(zhí)行。利用缺頁(yè)和缺段請(qǐng)求,動(dòng)態(tài)實(shí)現(xiàn)存儲(chǔ)管理。利用缺頁(yè)和缺段請(qǐng)求,動(dòng)態(tài)實(shí)現(xiàn)存儲(chǔ)管理。 3特點(diǎn):特點(diǎn):存儲(chǔ)空間變大存儲(chǔ)空間變大 內(nèi)存外存,內(nèi)存外存, 支持程序的并發(fā)執(zhí)行支持程序的并發(fā)執(zhí)行,采用部分交換。采用部分交換。 4虛擬存儲(chǔ)器的種類虛擬存儲(chǔ)器的種類 1)頁(yè)式虛存)頁(yè)式虛存 2)段式虛存)段式虛存 3)段頁(yè)式虛存)段頁(yè)式虛存 整理課件5 UN

18、IX5 UNIX進(jìn)程存儲(chǔ)管理進(jìn)程存儲(chǔ)管理 1交換策略交換策略 早期早期 內(nèi)存和交換區(qū)之間傳送整個(gè)進(jìn)程內(nèi)存和交換區(qū)之間傳送整個(gè)進(jìn)程 費(fèi)時(shí),影響效率費(fèi)時(shí),影響效率 現(xiàn)代現(xiàn)代 部分交換部分交換 關(guān)鍵信息,關(guān)鍵信息,PCB不參與交換,常駐內(nèi)存。不參與交換,常駐內(nèi)存。 0號(hào)進(jìn)程負(fù)責(zé)調(diào)度和交換工作,無(wú)限循環(huán)的執(zhí)行。號(hào)進(jìn)程負(fù)責(zé)調(diào)度和交換工作,無(wú)限循環(huán)的執(zhí)行。 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 映射圖來(lái)管理交換設(shè)備的空間資源,包含可分映射圖來(lái)管理交換設(shè)備的空間資源,包含可分配的資源地址及該地址可用的資源單位。配的資源地址及該地址可用的資源單位。 UNIX系統(tǒng)采用交換和請(qǐng)求調(diào)頁(yè)兩種策略完成存儲(chǔ)管理系統(tǒng)采用交換和請(qǐng)求調(diào)頁(yè)兩種策略

19、完成存儲(chǔ)管理整理課件5 UNIX5 UNIX進(jìn)程存儲(chǔ)管理進(jìn)程存儲(chǔ)管理 2請(qǐng)求調(diào)頁(yè)策略請(qǐng)求調(diào)頁(yè)策略 內(nèi)存分頁(yè)內(nèi)存分頁(yè) 外存分頁(yè)外存分頁(yè) 進(jìn)程運(yùn)行時(shí)系統(tǒng)只在內(nèi)存中保留當(dāng)前活動(dòng)進(jìn)程的某些頁(yè)面,而進(jìn)程運(yùn)行時(shí)系統(tǒng)只在內(nèi)存中保留當(dāng)前活動(dòng)進(jìn)程的某些頁(yè)面,而不放入整個(gè)進(jìn)程頁(yè)面不放入整個(gè)進(jìn)程頁(yè)面 缺頁(yè)中斷缺頁(yè)中斷 虛存技術(shù)不受空間限制虛存技術(shù)不受空間限制 為了提高運(yùn)行效率,核心進(jìn)程提供了一個(gè)工作區(qū),存放內(nèi)存中為了提高運(yùn)行效率,核心進(jìn)程提供了一個(gè)工作區(qū),存放內(nèi)存中最近被訪問(wèn)過(guò)的頁(yè)面集合。最近被訪問(wèn)過(guò)的頁(yè)面集合。 3UNIX系統(tǒng)中進(jìn)程存儲(chǔ)管理結(jié)構(gòu)系統(tǒng)中進(jìn)程存儲(chǔ)管理結(jié)構(gòu) Proc User PCB 放內(nèi)存中放內(nèi)存中

20、放外存中放外存中 整理課件8 UNIX8 UNIX進(jìn)程管理的系統(tǒng)調(diào)用進(jìn)程管理的系統(tǒng)調(diào)用 例題:例題:#include #include main()main() int pid; int pid; pid = fork(); pid = fork(); if ( pid 0 ) if ( pid 0 ) p r i n t f ( “ f o r k f a i l e d ! ” ) ; p r i n t f ( “ f o r k f a i l e d ! ” ) ; exit(1); exit(1); if( pid = = 0) if( pid = = 0) exec(“l(fā)s”,

21、“-l”,0); exec(“l(fā)s”, “-l”,0); else else printf(“This is the parent process”); printf(“This is the parent process”); 整理課件8 UNIX8 UNIX進(jìn)程管理的系統(tǒng)調(diào)用進(jìn)程管理的系統(tǒng)調(diào)用parentchildchildchildparentforkexecexit自動(dòng)wait 整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 include int getpid(void); int getppid(void);getpidgetpid函數(shù)返回調(diào)用進(jìn)程的進(jìn)程函數(shù)返回調(diào)用進(jìn)程的進(jìn)程ID

22、IDgetppidgetppid函數(shù)則返回調(diào)用進(jìn)程的父進(jìn)程函數(shù)則返回調(diào)用進(jìn)程的父進(jìn)程IDID。include int fork(void);forkfork函數(shù)創(chuàng)建一新進(jìn)程。函數(shù)創(chuàng)建一新進(jìn)程。整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 #include #include #include “err_exit.h”int global = 5;int main(void) int pid; char *string = “these are values before fork:”; int local =10; printf( “before fork *”); if( (pid = f

23、ork( ) )0) /fork調(diào)用失敗調(diào)用失敗 err_exit (“fork”);整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制UNIX系統(tǒng)在實(shí)現(xiàn)fork()調(diào)用完成的主要工作:1)為子進(jìn)程在進(jìn)程表中分配一個(gè)空閑的proc結(jié)構(gòu)2)賦給子進(jìn)程一個(gè)唯一的進(jìn)程標(biāo)識(shí)符pid3)復(fù)制一個(gè)父進(jìn)程上下文的邏輯副本4)增加與父進(jìn)程相關(guān)聯(lián)的文件表和索引節(jié)點(diǎn)表的引用次數(shù)5)對(duì)父進(jìn)程返回子進(jìn)程的標(biāo)識(shí)符為pid.對(duì)子進(jìn)程返回標(biāo)識(shí)符pid.整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 if( pid = 0) /*子進(jìn)程子進(jìn)程*/ printf (“Its Child process, pid is %dn”

24、, getpid ();else /*父進(jìn)程父進(jìn)程*/ printf( “Its Father process pid is %dn”, getpid();exit( EXIT_SUCCESS );整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 include external char *environ;int execl(const char *path,const char *arg0,);int execlp(const char *file,const char *arg0,);int execle(const char *path,const char *arg0,), cons

25、t char *envp);int execv(const char *path,const char *argv);int execvp(const char *file,const char *argv);int execve(const char *path,const char *argv, const char *envp);這這6 6個(gè)函數(shù)具有相同的功能,它們都能用新程序的程序映像個(gè)函數(shù)具有相同的功能,它們都能用新程序的程序映像覆蓋進(jìn)程原來(lái)的程序映像。新程序文件名由參數(shù)覆蓋進(jìn)程原來(lái)的程序映像。新程序文件名由參數(shù)pathpath或或filefile給出,它的程序代碼將替代原來(lái)的程序代

26、碼被執(zhí)行。給出,它的程序代碼將替代原來(lái)的程序代碼被執(zhí)行。整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制Main().Printf(“onen”):Execl(/bin/ls”,”ls”,0);Printf(“twon”);Perror(“exec error);.6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 #include #include #include “err_exit.h”int main(void) pid_t pid; if(pid = fork( )0) err_exit(“fork error”); else if (pid =

27、 0) if( (“/demo.exe”, “myarg1”, “MYARG2”,(char*)0)0) err_exit(“execle error”); exit(EXIT_SUCCESS);整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 char *arg=“file1”,“file2”,0;Char *env=“PATH=/home/usr”,”TERM=console”,0int main(void) execl(“/bin/mycat”,”file1”,”file2”,(char*)argv0); execlp(“mycat”, ”file1”,”file2”,(char*)ar

28、gv0); execle(“/bin/mycat”,”file1”,”file2”,(char*)argv0, env); execv(“/bin/mycat”,arg); execvp(“mycat”, arg); execvle(“/bin/mycat”,arg, env);整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 include int wait(int *stat_loc);int waitpid(pid_t pid,int *stat_loc,int options); 通常,父進(jìn)程用通常,父進(jìn)程用forkfork派生了一個(gè)子進(jìn)程后,常常會(huì)需要等待子進(jìn)派生了一個(gè)子進(jìn)程后,常常

29、會(huì)需要等待子進(jìn)程執(zhí)行完后才能繼續(xù)執(zhí)行。程執(zhí)行完后才能繼續(xù)執(zhí)行。 UNIXUNIX提供了兩個(gè)函數(shù)來(lái)等待子進(jìn)程的結(jié)束提供了兩個(gè)函數(shù)來(lái)等待子進(jìn)程的結(jié)束wait和和waitpid函數(shù)允許等待子進(jìn)程結(jié)束,并獲取其子進(jìn)程的狀態(tài)信息。函數(shù)允許等待子進(jìn)程結(jié)束,并獲取其子進(jìn)程的狀態(tài)信息。wait(stat_loc)相當(dāng)于相當(dāng)于waitpid(-1, stat_loc,0)整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 例例1:#include#include#include#include “err_exit.h”int main(void) pid_t pid; int status; if( (pid =

30、 fork() 0 ) /派生子進(jìn)程派生子進(jìn)程 1 err_exit(“call fork() failed!”); else if ( pid = 0 ) /子進(jìn)程子進(jìn)程 1 exit(1); if ( wait(&status) != pid ) /等待子進(jìn)程等待子進(jìn)程1的結(jié)束的結(jié)束 err_exit(“call wait() failed”);整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制main()int pid;printf(“just I process now.n”);printf(“calling fork()n”);pid=fork();if (pid=0) pri

31、ntf(“I am the childn”); exit(1);else wait(0);printf(“I am thr parentn”);elseprintf( “fork failed.n”);Printf(“program end.n”);整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 6.4 6.4 進(jìn)程終止與僵死進(jìn)程進(jìn)程終止與僵死進(jìn)程1 1、正常終止、正常終止(a a)從)從mainmain函數(shù)內(nèi)執(zhí)行函數(shù)內(nèi)執(zhí)行returnreturn。這相當(dāng)于調(diào)用。這相當(dāng)于調(diào)用exitexit。(b b)調(diào)用)調(diào)用exitexit函數(shù)。函數(shù)。(c c)調(diào)用)調(diào)用_exit_exit函數(shù),該函數(shù)

32、由函數(shù),該函數(shù)由exitexit調(diào)用并處理與調(diào)用并處理與UNIXUNIX相關(guān)相關(guān)的特定細(xì)節(jié)。的特定細(xì)節(jié)。整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 6.4 6.4 進(jìn)程終止與僵死進(jìn)程進(jìn)程終止與僵死進(jìn)程2 2、異常終止、異常終止(a a)調(diào)用)調(diào)用abortabort函數(shù)。函數(shù)。(c c)當(dāng)進(jìn)程收到某種信號(hào)時(shí)。)當(dāng)進(jìn)程收到某種信號(hào)時(shí)。整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 6.4 6.4 進(jìn)程終止與僵死進(jìn)程進(jìn)程終止與僵死進(jìn)程 僵死進(jìn)程一般指的是已經(jīng)終止但并沒(méi)有由父進(jìn)程等待的進(jìn)程僵死進(jìn)程一般指的是已經(jīng)終止但并沒(méi)有由父進(jìn)程等待的進(jìn)程整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 例

33、例 1int main(void) pid_t pid; int n; printf(“fork program startingn”); pid = fork(); switch(pid) case 0: exit(0); default: sleep(5); break; exit(EXIT_SUCESS);該子進(jìn)程將成為僵死進(jìn)程該子進(jìn)程將成為僵死進(jìn)程整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 例例 2int main(void) pid_t pid; int n; printf(“fork program startingn”); pid = fork(); switch(pid) case 0: exit(0); default: sleep(60000); /在父進(jìn)程在父進(jìn)程sleep期間,子進(jìn)程為僵死狀態(tài)期間,子進(jìn)程為僵死狀態(tài) wait(&n); /僵死的子進(jìn)程被釋放僵死的子進(jìn)程被釋放 exit(EXIT_SUCESS);整理課件6 UNIX6 UNIX進(jìn)程控制進(jìn)程控制 # ps alS UID PID PPID TIME COMDR 181 2081 1872 0:00 ps S 181 2074 1872 0:00 testZ 181 2080 2074 0:00 S 181

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論