




免費預(yù)覽已結(jié)束,剩余46頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
進程和進程控制線程進程互斥和同步進程間通信死鎖問題處理器調(diào)度 第三章處理機管理 上 進程和進程控制 進程的定義和描述進程的狀態(tài)轉(zhuǎn)換進程控制Windows的進程管理 進程的定義和描述 進程的定義 一個具有一定獨立功能的程序在一個數(shù)據(jù)集合上的一次動態(tài)執(zhí)行過程 進程的特征 動態(tài)性 具有動態(tài)的地址空間獨立性 各進程的地址空間相互獨立并發(fā)性 宏觀上各進程同時運行結(jié)構(gòu)化 進程的地址空間是結(jié)構(gòu)化的 進程和進程控制 進程與程序的區(qū)別 進程是動態(tài)的 程序是靜態(tài)的 程序是有序代碼的集合 進程是程序的執(zhí)行 通常進程不可在計算機之間遷移 而程序通常對應(yīng)著文件 是靜態(tài)的 可以復(fù)制 進程是暫時的 程序的永久的 進程是一個狀態(tài)變化的過程 程序可長久保存 進程與程序的組成不同 進程的組成包括程序 數(shù)據(jù)和進程控制塊 即進程狀態(tài)信息 進程與程序的對應(yīng)關(guān)系 通過多次執(zhí)行 一個程序可對應(yīng)多個進程 通過調(diào)用關(guān)系 一個進程可包括多個程序 進程的定義和描述 進程和進程控制 進程控制塊 每個進程在OS中的登記表項 可能有總數(shù)目限制 OS據(jù)此對進程進行控制和管理 PCB中的內(nèi)容會動態(tài)改變 處于核心段 通常不能由應(yīng)用程序自身的代碼來直接訪問 而要通過系統(tǒng)調(diào)用訪問 進程控制塊 PCB processcontrolblock 是由OS維護的用來記錄進程相關(guān)信息的一個數(shù)據(jù)結(jié)構(gòu) 進程和進程控制 進程的定義和描述 進程控制塊的內(nèi)容 進程描述信息 進程標識符 processID 唯一 通常是一個整數(shù) 進程名 通?;诳蓤?zhí)行文件名 用戶標識符 userID 進程組 processgroup 進程控制信息 當前狀態(tài) 優(yōu)先級 priority 代碼執(zhí)行入口地址 程序的外存地址 運行統(tǒng)計信息 執(zhí)行時間 頁面調(diào)度 阻塞原因資源占用信息 虛擬地址空間的現(xiàn)狀 打開文件列表CPU現(xiàn)場保護結(jié)構(gòu) 寄存器值 通用 程序計數(shù)器PC 狀態(tài)PSW 地址包括棧指針 進程和進程控制 進程的定義和描述 PCB的組織方式 鏈表 同一狀態(tài)的進程其PCB成一鏈表 多個狀態(tài)對應(yīng)多個不同的鏈表 各狀態(tài)的進程形成不同的鏈表 就緒鏈表 阻塞鏈表索引表 同一狀態(tài)的進程歸入一個index表 由index指向PCB 多個狀態(tài)對應(yīng)多個不同的index表 各狀態(tài)的進程形成不同的索引表 就緒索引表 阻塞索引表 進程和進程控制 進程的定義和描述 進程上下文 context 用戶級上下文 進程的用戶地址空間 包括用戶棧各層次 包括用戶正文段 用戶數(shù)據(jù)段和用戶棧 寄存器級上下文 程序寄存器 處理機狀態(tài)寄存器 棧指針 通用寄存器的值 系統(tǒng)級上下文 靜態(tài)部分 PCB和資源表格 動態(tài)部分 核心棧 核心過程的棧結(jié)構(gòu) 不同進程在調(diào)用相同核心過程時有不同核心棧 進程上下文是對進程執(zhí)行活動全過程的靜態(tài)描述 進程上下文由進程的用戶地址空間內(nèi)容 硬件寄存器內(nèi)容及與該進程相關(guān)的核心數(shù)據(jù)結(jié)構(gòu)組成 進程和進程控制 進程的定義和描述 五狀態(tài)進程模型 五狀態(tài)進程模型 狀態(tài)轉(zhuǎn)換 進程的狀態(tài)轉(zhuǎn)換 進程在從創(chuàng)建到終止的全過程中一直處于一個不斷變化的過程 為了刻畫進程的這個變化過程 操作系統(tǒng)把進程分成若干種狀態(tài) 進程和進程控制 狀態(tài) 新建狀態(tài) New 進程剛創(chuàng)建 但還不能運行 一種可能的原因是OS對并發(fā)進程數(shù)的限制 OS在進程新建狀態(tài)的工作 分配和建立PCB表項 建立資源表格 如打開文件表 并分配資源 加載程序并建立地址空間表 結(jié)束狀態(tài) Exit 進程已結(jié)束運行 回收除PCB之外的其他資源 并讓其他進程從PCB中收集有關(guān)信息 如記帳 將退出碼exitcode傳遞給父進程 進程的狀態(tài)轉(zhuǎn)換 五狀態(tài)進程模型 進程和進程控制 運行狀態(tài) Running 占用處理機資源并運行 處于此狀態(tài)的進程的數(shù)目小于等于CPU的數(shù)目 在沒有其他進程可以執(zhí)行時 如所有進程都在阻塞狀態(tài) 通常會自動執(zhí)行系統(tǒng)的idle進程 相當于空操作 就緒狀態(tài) Ready 進程已獲得除處理機外的所需資源 等待分配處理機資源 只要分配CPU就可執(zhí)行 可以按多個優(yōu)先級來劃分隊列 如 時間片用完 低優(yōu) I O完成 中優(yōu) 頁面調(diào)入完成 高優(yōu)阻塞狀態(tài) Blocked 由于進程等待某種條件 如I O操作或進程同步 在條件滿足之前無法繼續(xù)執(zhí)行 在該事件發(fā)生前即使把處理機分配給該進程 也無法運行 如 等待I O操作的完成 進程的狀態(tài)轉(zhuǎn)換 五狀態(tài)進程模型 進程和進程控制 進程狀態(tài)轉(zhuǎn)換 創(chuàng)建 Create 新進程 創(chuàng)建一個新進程 以運行一個程序 提交 Admit 收容一個新進程 進入就緒狀態(tài) 由于性能 內(nèi)存 進程總數(shù)等原因 系統(tǒng)會限制并發(fā)進程總數(shù) 調(diào)度運行 Dispatch 從就緒進程表中選擇一個進程 進入運行狀態(tài) 釋放 Release 由于進程完成或失敗而中止進程運行 進入結(jié)束狀態(tài) 運行到結(jié)束 分為正常退出Exit和異常退出abort 執(zhí)行超時或內(nèi)存不夠 非法指令或地址 I O失敗 被其他進程所終止 就緒或阻塞到結(jié)束 可能的原因有 父進程可在任何時間中止子進程 進程的狀態(tài)轉(zhuǎn)換 五狀態(tài)進程模型 進程和進程控制 超時 Timeout 由于用完時間片或高優(yōu)先進程就緒等導(dǎo)致進程暫停運行 事件等待 EventWait 進程要求的事件未出現(xiàn)而進入阻塞 可能的原因包括 申請系統(tǒng)服務(wù)或資源 通信 I O操作等 事件發(fā)生 EventOccurs 進程等待的事件發(fā)生 如 I O操作完成 申請資源成功等 進程的狀態(tài)轉(zhuǎn)換 五狀態(tài)進程模型 進程和進程控制 五狀態(tài)進程模型沒有區(qū)分進程地址空間位于內(nèi)存還是外存 而在操作系統(tǒng)中引入虛擬存儲管理技術(shù)后 需要進一步區(qū)分進程的地址空間狀態(tài) 這個問題的出現(xiàn)是由于進程優(yōu)先級的引入 一些低優(yōu)先級進程可能等待較長時間 從而被對換至外存 這樣做的目的是 提高處理機效率 就緒進程表為空時 有空閑的內(nèi)存空間來提交新進程 以提高處理機效率 為運行進程提供足夠內(nèi)存 資源緊張時 暫停某些進程 如 CPU繁忙 或?qū)崟r任務(wù)執(zhí)行 內(nèi)存緊張用于調(diào)試 在調(diào)試時 掛起被調(diào)試進程 從而對其地址空間進行讀寫 掛起進程模型 進程的狀態(tài)轉(zhuǎn)換 進程和進程控制 單掛起進程模型 掛起進程模型 進程的狀態(tài)轉(zhuǎn)換 進程和進程控制 雙掛起進程模型 掛起進程模型 進程的狀態(tài)轉(zhuǎn)換 進程和進程控制 Admit Running Ready Suspend Exit Ready Blocked Dispatch Timeout Event Wait Event Occurs Release Blocked Suspend Suspend New Event Occurs Activate Suspend Activate Admit Suspend 就緒狀態(tài) Ready 進程在內(nèi)存且可立即進入運行狀態(tài) 阻塞狀態(tài) Blocked 進程在內(nèi)存并等待某事件的出現(xiàn) 阻塞掛起狀態(tài) Blocked suspend 進程在外存并等待某事件的出現(xiàn) 就緒掛起狀態(tài) Ready suspend 進程在外存 但只要進入內(nèi)存 即可運行 掛起進程模型 進程的狀態(tài)轉(zhuǎn)換 狀態(tài) 進程和進程控制 掛起 Suspend 把一個進程從內(nèi)存轉(zhuǎn)到外存 可能有以下幾種情況 阻塞到阻塞掛起 沒有進程處于就緒狀態(tài)或就緒進程要求更多內(nèi)存資源時 會進行這種轉(zhuǎn)換 以提交新進程或運行就緒進程 就緒到就緒掛起 當有高優(yōu)先級阻塞 系統(tǒng)認為會很快就緒的 進程和低優(yōu)先級就緒進程時 系統(tǒng)會選擇掛起低優(yōu)先級就緒進程 運行到就緒掛起 對搶先式操作系統(tǒng) 當有高優(yōu)先級阻塞進程因事件出現(xiàn)而進入就緒狀態(tài)時 系統(tǒng)可能會把運行進程轉(zhuǎn)到就緒掛起狀態(tài) 掛起進程模型 進程的狀態(tài)轉(zhuǎn)換 狀態(tài)轉(zhuǎn)換 進程和進程控制 Running Ready Suspend Ready Blocked Dispatch Timeout Event Wait Event Occurs Blocked Suspend Suspend Event Occurs Activate Suspend Activate Suspend 激活 Activate 把一個進程從外存轉(zhuǎn)到內(nèi)存 可能有以下幾種情況 就緒掛起到就緒 沒有就緒進程或掛起就緒進程優(yōu)先級高于就緒進程時 會進行這種轉(zhuǎn)換 阻塞掛起到阻塞 當一個進程釋放足夠內(nèi)存時 系統(tǒng)會把一個高優(yōu)先級阻塞掛起進程激活 系統(tǒng)認為會很快出現(xiàn)所等待的事件 掛起進程模型 進程的狀態(tài)轉(zhuǎn)換 狀態(tài)轉(zhuǎn)換 進程和進程控制 Running Ready Suspend Ready Blocked Dispatch Timeout Event Wait Event Occurs Blocked Suspend Suspend Event Occurs Activate Suspend Activate Suspend 事件發(fā)生 EventOccurs 進程等待的事件發(fā)生 可能的情況有 阻塞到就緒 針對內(nèi)存進程的事件發(fā)生 阻塞掛起到就緒掛起 針對外存進程的事件發(fā)生 掛起進程模型 進程的狀態(tài)轉(zhuǎn)換 進程和進程控制 狀態(tài)轉(zhuǎn)換 Running Ready Suspend Ready Blocked Dispatch Timeout Event Wait Event Occurs Blocked Suspend Suspend Event Occurs Activate Suspend Activate Suspend 收容 Admit 收容一個新進程 進入就緒狀態(tài)或就緒掛起狀態(tài) 進入就緒掛起的原因是系統(tǒng)希望保持一個大的就緒進程表 掛起和非掛起 掛起進程模型 進程的狀態(tài)轉(zhuǎn)換 進程和進程控制 狀態(tài)轉(zhuǎn)換 Admit Running Ready Suspend Ready Dispatch Timeout New Suspend Activate Admit Suspend 雙掛起進程模型 掛起進程模型 進程的狀態(tài)轉(zhuǎn)換 進程和進程控制 Admit Running Ready Suspend Exit Ready Blocked Dispatch Timeout Event Wait Event Occurs Release Blocked Suspend Suspend New Event Occurs Activate Suspend Activate Admit Suspend 進程控制 進程控制 就是操作系統(tǒng)使用一些具有特定功能的程序段來創(chuàng)建與撤消進程以及完成進程狀態(tài)的轉(zhuǎn)換 從而達到多個進程高效率地并發(fā)執(zhí)行和協(xié)調(diào) 實現(xiàn)資源共享 進程控制主要體現(xiàn)在進程的創(chuàng)建與撤消 以及進程的阻塞與喚醒 操作系統(tǒng)對進程的控制是依據(jù)用戶命令和系統(tǒng)狀態(tài)來決定的 用戶可在一定程序上對進程的狀態(tài)進行控制 具有特定功能的程序段 原語 進程和進程控制 進程控制 原語 primitive 由若干條指令構(gòu)成的 原子操作 atomicoperation 過程 作為一個整體而不可分割 要么全都完成 要么全都不做 許多系統(tǒng)調(diào)用就是原語 注意 系統(tǒng)調(diào)用并不都是原語 進程A調(diào)用read 因無數(shù)據(jù)而阻塞 在read 里未返回 然后進程B調(diào)用read 此時read 被重入 系統(tǒng)調(diào)用不一定一次執(zhí)行完并返回該進程 有可能在特定的點暫停 而轉(zhuǎn)入到其他進程 進程和進程控制 進程控制 進程和進程控制 創(chuàng)建原語 進程的存在以PCB為標志 所以創(chuàng)建新進程的主要任務(wù)就是為進程建立PCB 將調(diào)用者提供的有關(guān)信息填入PCB的各數(shù)據(jù)項中 開始 分配PCB空間 將有關(guān)信息填入PCB的數(shù)據(jù)項 將PCB送入相應(yīng)狀態(tài)PCB鏈表 結(jié)束 進程控制 進程和進程控制 撤消原語 進程完成其任務(wù)之后 系統(tǒng)應(yīng)及時回收它占有的資源 開始 搜索PCB鏈表 釋放該進程所占有的資源 釋放PCB結(jié)構(gòu)本身 結(jié)束 有此PCB 異常處理 No Yes 進程控制 進程和進程控制 阻塞原語 開始 將CPU當前狀態(tài)存入PCB 設(shè)置進程狀態(tài)為阻塞狀態(tài) 將PCB置入阻塞隊列 轉(zhuǎn)處理機調(diào)度 進程控制 進程和進程控制 喚醒原語 開始 從阻塞隊列刪除該PCB 設(shè)置進程狀態(tài)為就緒狀態(tài) 將PCB置入就緒隊列 轉(zhuǎn)處理機調(diào)度 Windows的進程管理 Windows的進程由執(zhí)行體進程塊EPROCESS表示 EPROCESS即進程對象 進程對象的屬性 PID PCB AccessToken BasePriority 句柄表 指向進程環(huán)境塊PEB的指針 親和處理器集合等在Windows中 PCB也稱為內(nèi)核進程塊KPROCESS 即內(nèi)核進程對象EPOCESS和KPROCESS位于內(nèi)核空間 PEB位于用戶空間 進程和進程控制 Windows的進程結(jié)構(gòu) Windows的進程管理 進程和進程控制 進程創(chuàng)建 CreateProcess 函數(shù)用于創(chuàng)建新進程及其主線程 以執(zhí)行指定的程序 新進程可以繼承 打開文件的句柄 各種對象 如進程 線程 信號量 管道等 的句柄 環(huán)境變量 當前目錄 每個句柄在創(chuàng)建或打開時能指定是否可繼承 新進程不能繼承 優(yōu)先權(quán)類 內(nèi)存句柄 DLL模塊句柄CREATE NEW CONSOLE表示新進程有一個新的控制臺CREATE NEW PROCESS GROUP表示新進程是一個新的進程組的根 Windows的進程管理 進程和進程控制 進程退出 ExitProcess 或TerminateProcess 則進程包含的線程全部終止 ExitProcess 終止一個進程和它的所有線程 它的終止操作是完整的 包括關(guān)閉所有對象句柄 它的所有線程等 TerminateProcess 終止指定的進程和它的所有線程 它的終止操作是不完整的 如 不向相關(guān)DLL通報關(guān)閉情況 通常只用于異常情況下對進程的終止 Windows的進程管理 進程和進程控制 與進程管理相關(guān)的內(nèi)核變量 PsActiveProcessHead進程鏈表頭PsInitialSystemProcess系統(tǒng)進程 系統(tǒng)線程的宿主 PsIdleProcess空閑進程 Windows的進程管理 進程和進程控制 線程 線程的引入操作系統(tǒng)對線程的實現(xiàn)方式進程和線程的比較Windows的線程 如果說在操作系統(tǒng)中引入進程是為了使多個程序能夠并發(fā)執(zhí)行 提高資源利用率和系統(tǒng)吞吐量 那么引入線程 THREAD 的目的則是減少程序并發(fā)執(zhí)行所付出的時空開銷來 進一步提高系統(tǒng)的并發(fā)程度 線程 線程的引入 進程 資源 存儲器 文件 分配單位和CPU調(diào)度 分派單位 由于進程是資源擁有者 因而在創(chuàng)建 終止 切換過程中 系統(tǒng)必須為之付出較大的時空開銷 正因為如此 系統(tǒng)中并發(fā)執(zhí)行的進程的數(shù)目不宜過多 進程切換才頻率也不宜過高 這樣就限制了系統(tǒng)的并發(fā)程度 解決這一問題的思路 將進程的兩個基本屬性分開 由操作系統(tǒng)分別處理 線程概念的引入在支持線程的操作系統(tǒng)中 進程只作為資源分配單位 而線程則作為CPU調(diào)度 分派單位 線程 線程的引入 線程 作為CPU調(diào)度單位 只擁有必不可少的資源 如 線程狀態(tài) 寄存器上下文和棧同樣具有就緒 阻塞和執(zhí)行三種基本狀態(tài)線程的優(yōu)點 減小并發(fā)執(zhí)行的時間和空間開銷 線程的創(chuàng)建 退出和調(diào)度 因此容許在系統(tǒng)中建立更多的線程來提高并發(fā)程度 線程的創(chuàng)建時間比進程短 線程的終止時間比進程短 同進程內(nèi)的線程切換時間比進程短 由于同進程內(nèi)線程間共享內(nèi)存和文件資源 可直接進行不通過內(nèi)核的通信 線程 進程與線程的關(guān)系 線程 線程的引入 OS對線程的實現(xiàn)方式 內(nèi)核維護進程和線程的上下文信息 線程切換由內(nèi)核完成 一個線程發(fā)起系統(tǒng)調(diào)用而阻塞 不會影響其他線程的運行 時間片分配給線程 所以多線程的進程獲得更多CPU時間 依賴于OS核心 由內(nèi)核完成創(chuàng)建和撤銷 Windows支持內(nèi)核線程 內(nèi)核線程 kernel levelthread 線程 用戶線程 user levelthread 用戶線程的維護由應(yīng)用進程完成 內(nèi)核不了解用戶線程的存在 用戶線程切換不需要內(nèi)核特權(quán) 用戶線程調(diào)度算法可針對應(yīng)用優(yōu)化 不依賴于OS核心 應(yīng)用進程利用線程庫提供的創(chuàng)建 同步 調(diào)度和管理線程的函數(shù)來控制用戶線程 如 數(shù)據(jù)庫系統(tǒng)Informix 圖形處理AldusPageMaker 調(diào)度由應(yīng)用軟件內(nèi)部進行 通常采用非搶先式和更簡單的規(guī)則 一個線程發(fā)起系統(tǒng)調(diào)用而阻塞 則整個進程在等待 時間片分配給進程 多線程則每個線程就慢 線程 OS對線程的實現(xiàn)方式 進程和線程的比較 地址空間和其他資源 如打開文件 進程間相互獨立 同一進程的各線程間共享 某進程內(nèi)的線程在其他進程不可見通信 進程間只能使用IPC線程間可以直接讀寫進程數(shù)據(jù)段 如全局變量 來進行通信也需要同步和互斥手段的輔助 以保證數(shù)據(jù)的一致性調(diào)度 線程上下文切換比進程上下文切換要快得多 線程 線程切換和進程切換 線程 進程和線程的比較 Windows的線程 線程 線程對象 Windows線程由執(zhí)行體線程塊ETHREAD表示 即線程對象 其中包含內(nèi)核線程塊KTHREAD 即線程控制塊TCB指向線程環(huán)境塊TEB的指針ETHRE
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國加氫站項目創(chuàng)業(yè)計劃書
- 中國口腔植入材料項目創(chuàng)業(yè)計劃書
- 中國人造血漿項目創(chuàng)業(yè)計劃書
- 中國橘、橙項目創(chuàng)業(yè)計劃書
- 中國光驅(qū)配件項目創(chuàng)業(yè)計劃書
- 2025照明設(shè)備采購與銷售合同
- 中國高爾夫綠化項目創(chuàng)業(yè)計劃書
- 中國5G傳輸網(wǎng)絡(luò)切片項目創(chuàng)業(yè)計劃書
- 2025年部編版語文六年級下冊第二次月考試題及答案(共4套)
- 內(nèi)存安全與優(yōu)化-第1篇-洞察闡釋
- GB/T 14598.2-2025量度繼電器和保護裝置第1部分:通用要求
- 2025年安全月安全有獎答題考試題庫(附答案)
- 浙江省寧波市2025年八年級下學期期末數(shù)學試題及答案及答案
- 北京歷史文化街區(qū)風貌保護與更新設(shè)計導(dǎo)則
- 國能集團工會工作報告
- 2025年商業(yè)管理與商業(yè)模式創(chuàng)新能力考核題及答案
- T/CBMCA 012-2020室內(nèi)環(huán)境清潔消毒服務(wù)規(guī)范
- 2024年青海省囊謙縣事業(yè)單位公開招聘輔警考試題帶答案分析
- 廣東省深圳市南山區(qū)2023-2024學年七年級下學期期末語文試題(含答案)
- 工程力學(山東科技大學)知到智慧樹期末考試答案題庫2025年山東科技大學
- 補繳社保員工協(xié)議書
評論
0/150
提交評論