




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第7章章Windows的進程與內存管理的進程與內存管理 作為完全的作為完全的32位位Windows版本,版本,WindowsNT代表代表了微軟公司了微軟公司Windows操作系統發展中的主流體系結操作系統發展中的主流體系結構。構。 Windows的系統服務和應用程序都是以進程的形式的系統服務和應用程序都是以進程的形式駐留在內存中的,處理器通過調度這些進程的執行駐留在內存中的,處理器通過調度這些進程的執行來完成計算任務。本章以來完成計算任務。本章以Windows為例,介紹進程為例,介紹進程與內存管理的方法。與內存管理的方法。Windows是多線程操作系統,是多線程操作系統,處理器調度是以線程為
2、基本單位的。因此,本章在處理器調度是以線程為基本單位的。因此,本章在講解進程的同時,也將介紹講解進程的同時,也將介紹Windows線程的概念和線程的概念和結構。結構。 7.1Windows NT的特點及相關的概念的特點及相關的概念 7.1.1Windows NT體系結構的特點Windows NT是支持多處理器的操作系統。是支持多處理器的操作系統。Windows NT是完全的是完全的32位操作系統,設計了位操作系統,設計了4G大小大小的虛擬地址空間,其中的虛擬地址空間,其中2GB用做進程的私有空間。用做進程的私有空間。Windows NT支持支持16位的位的Windows代碼,并為其提供代碼,并
3、為其提供獨立的運行空間。獨立的運行空間。Windows NT對訪問共享內存的進程有嚴格的安全限對訪問共享內存的進程有嚴格的安全限制。制。Windows NT的系統內存空間只能在和心態被訪問。的系統內存空間只能在和心態被訪問。 隨著計算機體系結構和隨著計算機體系結構和Windows家族的發展,家族的發展,Windows NT內核版本也升級到內核版本也升級到6.0版本以上,版本以上,支持支持64位操作系統位操作系統,具有,具有更多的特點:更多的特點: 新版本增強了Active Directory,使用了新的虛擬化和管理,采用了IIS 7.5。 可支持多達64個物理處理器或最多256個系統的邏輯處理
4、器。 可支持Live Migration(動態遷移),支持虛擬磁盤動態調整容量,及VM內存動態配置功能,能以虛擬鏡像文件于實體主機上開機。 可支持無線廣域網,網絡驅動程序接口規范為6.20,支持AVCHD攝影機以及通用視頻類型1.1. 能支持新的用戶模式調度框架。 能完整支持S800、S1600以及S3200數據傳輸速率的IEEE 1394b的火線堆棧。 Microsoft Windows NT (New Technology)是Microsoft在1993年推出的面向工作站、網絡服務器和大型計算機的網絡操作系統,也可做PC操作系統。它與通信服務緊密集成,基于OS/2 NT基礎編制。OS/2由
5、微軟和IBM聯合研制,分為微軟的Microsoft OS/2 NT與IBM的IBM OS/2。微軟把自己的OS/2 NT的名稱改為Windows NT,即第一代的Windows NT 3.1。 Windows NT的兩個版本分別是Windows NT Workstation 和Windows NT Server 。 Windows NT Server 專為服務器進行了優化,配置要求較高。 最多支持32個處理器。 可以充當網絡服務器,可無限制連入客戶機,完成繁重的網絡任務。 最多可支持多達256個遠程客戶存取。 支持Macintosh文件及打印,具備磁盤容錯功能。 Windows NT Work
6、station 硬件適合個人用戶,當工作站上有如CAD/CAM等高級應用要求時選用。 僅可支持2個處理器。 充當網絡服務器,可以連入不超過10個客戶機,完成有限網絡服務功能。 只能支持一個遠程客戶存取。 不支持Macintosh文件及打印,不具備磁盤容錯功能。 7.1.2Windows的管理機制的管理機制 1. 核心態(kernel mode)和用戶態(user mode) 為了保證操作系統的穩定性和安全性,Windows將處理器的運行模式分為核心態和用戶態。用戶的應用程序運行在用戶態,而操作系統的內核代碼和設備驅動程序則運行在核心態。 運行于核心態的操作系統服務可以訪問所有的系統內存和所有的
7、CPU指令,可以利用所有的計算機資源來完成復雜的系統管理。Windows對運行于用戶態的應用所能訪問的系統資源有很多限制,從而保護了核心的系統資源不受侵害。 所有運行于核心態的系統服務和設備驅動程序都共享同一系統地址空間,這樣可以減少數據交換的中間環節,從而提高系統效率。 用戶態進程擁有自己獨立的虛擬地址空間,它不能訪問系統地址空間中的數據,也不能直接訪問其他用戶進程的地址空間。這種設計將進程執行錯誤所引起的損害限制在出錯進程內,保證了操作系統的和其他應用運行的穩定性。 2. Windows操作系統的體系結構操作系統的體系結構Windows操作系統是由運行在用戶態和核心態的一操作系統是由運行在
8、用戶態和核心態的一些構建組成的,一般將運行于核心態的構件稱為核些構建組成的,一般將運行于核心態的構件稱為核心系統服務,而將運行于用戶態的構件稱為用戶進心系統服務,而將運行于用戶態的構件稱為用戶進程。程。Windows的用戶進程一般包括以下幾種:的用戶進程一般包括以下幾種:1)操作系統支持進程。)操作系統支持進程。2)服務進程。)服務進程。3)應用程序。)應用程序。4)環境子系統服務進程。)環境子系統服務進程。Windows的的核心系統核心系統服務一般包括以下幾種:服務一般包括以下幾種:1)Windows執行體。執行體。2)Windows內核。內核。3)設備驅動程序。)設備驅動程序。4)硬件抽象
9、層。)硬件抽象層。5)窗口和圖形系統。)窗口和圖形系統。 3. 系統調用、中斷和陷阱系統調用、中斷和陷阱 處理器通過陷阱機制捕獲當前執行線程,并將控制轉到某一特定的處理過程。在陷阱處理之前,系統會記錄當前運行線程的核心棧,以便處理完后返回該線程繼續執行。 Windows利用系統服務陷阱來實現用戶程序對系統服務的調用,用戶線程調用系統服務時會進入系統陷阱,并將服務轉到系統服務入口,切換到核心態進行執行。 Windows利用中斷陷阱機制來管理硬件設備。通過設備驅動程序設置硬件中斷陷阱,當進行I/O請求時,系統通過硬件中斷處理完成設定的陷阱。另外還通過設置軟中斷陷阱來進行啟動線程調度、超時處理、進行
10、非同步的I/O操作、費同步調用其他現場功能等。 陷阱是由程序造成的,并且與程序同步。如果程序一而再的被運行,陷阱將總在指令流中相同位置的精確發生。而中斷則是由外部事件和其時鐘造成的,不具有重復性。 3. 系統調用、中斷和陷阱系統調用、中斷和陷阱 Windows利用意外陷阱機制來管理系統的出錯狀態,當發生意外處理事件時,系統會根據意外事件的條件轉到特定的意外處理例程。 陷阱是由程序造成的,并且與程序同步。如果程序一而再的被運行,陷阱將總在指令流中相同位置的精確發生。而中斷則是由外部事件和其時鐘造成的,不具有重復性。 7.2Windows進程和線程進程和線程 7.2.1Windows的進程和線程的
11、定義一個Windows進程有自己獨立的虛擬地址空間,用以保護私有的執行代碼和數據不被其他的進程破壞。每個進程包含一個或多個線程,運行在一個進程中的線程可以創建新的線程和新的進程。在Windows操作系統中,處理器調度的對象時線程,而進程為線程的運行提供資源和上下文環境,保證所屬的線程在進程的虛擬地址空間范圍內運行。一個一個Windows進程進程包含以下信息:包含以下信息: 唯一的進程標識。 一個獨立的虛擬地址空間。 映射到進程虛擬地址空間的執行代碼和數據。 訪問各種系統資源的對象句柄列表。 安全上下文定義來說明與進程相關的用戶、安全信息和訪問特權設定。 至少包含一個可執行的線程。一個一個Win
12、dows線程線程包含以下信息:包含以下信息: 唯一的線程標識。 CPU寄存器的狀態數據,用以表示處理器的狀態。 兩個線程棧,一個在用戶態執行時使用,一個用在核心態執行時使用。 一個供子系統、運行庫和動態鏈接庫使用的線程本地存儲空間。 7.2.2進程和線程的關聯進程和線程的關聯 Windows的進程和線程是緊密相關的,系統的進程和線程是緊密相關的,系統通過創建進程來為線程提供必要的上下文環通過創建進程來為線程提供必要的上下文環境,如內存、資源對象等,進程以境,如內存、資源對象等,進程以執行進程執行進程塊塊的形式駐留在內存中。系統通過的形式駐留在內存中。系統通過創建線程創建線程來運行具體的程序來運
13、行具體的程序,同時提供處理器調度所,同時提供處理器調度所需要的信息,線程以需要的信息,線程以執行線程塊的形式執行線程塊的形式駐留駐留在內存中。一個運行的線程可以在同一進程在內存中。一個運行的線程可以在同一進程中創建新的線程來運行新的功能,也可以通中創建新的線程來運行新的功能,也可以通過創建新的進程來啟動新程序的運行環境。過創建新的進程來啟動新程序的運行環境。 如圖所示,構成進程的數據由分別駐留在系統地址空間中的核心進程如圖所示,構成進程的數據由分別駐留在系統地址空間中的核心進程塊和駐留在進程地址空間中的進程環境塊構成,類似地,構成線程的塊和駐留在進程地址空間中的進程環境塊構成,類似地,構成線程
14、的數據由分別駐留在系統地址空間中的核心線程塊和駐留在系統地址空數據由分別駐留在系統地址空間中的核心線程塊和駐留在系統地址空間中的線程環境塊構成,間中的線程環境塊構成, 線程通過線程環境塊中的指針指向它屬于的進程的進程環境塊,因此線程通過線程環境塊中的指針指向它屬于的進程的進程環境塊,因此線程調度器可以通過線程訪問進程環境提供的上下文信息。線程調度器可以通過線程訪問進程環境提供的上下文信息。圖7.1Windows進程和線程的關聯 7.2.3Windows進程的結構進程的結構 Windows將表示進程的數據結構統稱為執行進程塊,它提供了操作系統管理進程所需要的基本信息。核心進程塊、進程環境塊7.2
15、.4Windows線程的結構 7.2.5Windows進程和線程的創建 1. 進程的創建過程 應用程序是通過調用相應的進程創建函數來創建一個新的Windows進程的,最常用的進程創建函數是CreateProcess. 創建進程的過程是由3個部分配合完成的:創建進程的系統服務、Windows子系統和新的進程。 如圖所示,Windows創建進程的過程如下: (1)CreatProcess通過調用進程管理服務找到執行文件的映像,并未其創建區域對象。 (2)創建執行進程對象。 (3)創建初始線程。 (4)通過發送消息通知Windows子系統新的進程已被創建,子系統將初始線程插入進程的線程列表,并將新的
16、進程加入子系統進程列表。 (5)將控制傳回進程的初始線程,對進程進行初始化。 (6)在新的進程和線程的上下文內調入響應的動態鏈接庫,開始執行程序。2. Windows線程的創建過程線程的創建過程 (1)在進程的地址空間中為線程創建用戶棧,并初)在進程的地址空間中為線程創建用戶棧,并初始化運行上下文環境。始化運行上下文環境。(2)初始化線程的線程環境塊)初始化線程的線程環境塊(3)創建執行線程對象)創建執行線程對象(4)通知)通知Windows子系統新線程已被創建,子系統子系統新線程已被創建,子系統將新線程的線程插入到相應進程的線程列表中。將新線程的線程插入到相應進程的線程列表中。(5)新線程的
17、句柄和標志被返回給調用的線程)新線程的句柄和標志被返回給調用的線程(6)線程進入調度隊列等待執行)線程進入調度隊列等待執行 7.3Windows處理器調度機制 7.3.1調度優先級 Windows處理器調度的粒度為線程,Windows為每一個線程分配調度優先級。調度器根據優先級采用搶占式調度策略,讓具有最高優先級的線程首先執行。每一個線程都分配了以時間配額為單位的執行時間,通過改變線程的狀態來進行線程調度。 7.3Windows處理器調度機制 7.3.1調度優先級 Windows在分配處理器時間時,不考慮調度對象屬于哪一個具體的進程,不同進程的線程原則上具有同樣的調度優先級,優先級的設定更多的
18、是考慮線程要求完成的時間緊迫性。 Windows內核使用32個優先級別來表示線程要求執行的緊迫性,用0-31的數字表示。按照優先級的功能不同,它們可以被分為3組: 1)16個實時優先級別(16-31) 2)15個可變優先級(1-15) 3)1個系統優先級(0),為內存頁清零線程保留 7.3Windows處理器調度機制 7.3.1調度優先級圖圖7.3應用優先級別和系統的優先級別的對應關系應用優先級別和系統的優先級別的對應關系 處理器調度時參考兩個優先級設置,一個是從當前線程所在的進程的基準優先級,另一個是線程的優先級。一般來講,應用線程運行在可變優先級別(1-15)的范圍內,如果需要進入實時優先
19、級別(16-31)范圍來運行,必須取得更高的調度優先級特權。Windows操作系統只有一個內存頁清零線程,它具有最高的調度優先級別,以保證系統內存管理的效率。7.3.2線程狀態線程狀態 圖7.4Windows線程狀態轉換圖 7.3.3線程調度機制 Windows通過調度數據庫來為每一個優先級別的線通過調度數據庫來為每一個優先級別的線程維護一個就緒等待隊列,當處理器需要調入一個程維護一個就緒等待隊列,當處理器需要調入一個線程運行時,系統會從調度數據庫中找到一個具有線程運行時,系統會從調度數據庫中找到一個具有最高優先級別的就緒線程,并給它分配執行時間。最高優先級別的就緒線程,并給它分配執行時間。如
20、果等待隊列中有線程比正在運行的線程的優先級如果等待隊列中有線程比正在運行的線程的優先級跟高,運行的線程就會保存它運行的上下文環境并跟高,運行的線程就會保存它運行的上下文環境并進入就緒隊列,高優先級的線程恢復它的上下文環進入就緒隊列,高優先級的線程恢復它的上下文環境,并進入運行狀態。境,并進入運行狀態。 1. 調度數據庫調度數據庫 系統中同時又多個線程存在,而每個處理器在一個時刻只能運行一個線程,Windows用調度數據庫記錄處于就緒狀態的線程,以便在確定下一個執行的線程時參考。圖7.5調度數據庫的不同優先級就緒線程隊列 2. 時間配額 當一個線程進入運行狀態時,它獲得了一個可以運行的時間配額。
21、線程在核心線程塊中都記錄了當前的時間配額值,每過一個時鐘周期,該值就會減1,當該值變為0時,表示時間配額已經用完。 3. 調度算法 采用基于優先級的搶占式調度算法。 4. 上下文切換 線程的核心棧用來完成上下文切換 2. 時間配額 當一個線程進入運行狀態時,它獲得了一個可以運行的時間配額。線程在核心線程塊中都記錄了當前的時間配額值,每過一個時鐘周期,該值就會減1,當該值變為0時,表示時間配額已經用完。 當分配給該線程的時間配額用完時,調度器會查找調度數據庫看是否有就緒的線程在等待執行。如果有等待的就緒線程,調度器會將正在執行的線程轉入等待或就緒狀態,調入下一個具有最高優先級的線程進行運行。如果
22、調度數據庫中沒有等待運行的就緒線程,調度器就再分配一個時間片讓該線程繼續運行。 3. 調度算法 Windows采用基于優先級的搶占式調度算法,在一個具有較低優先級別的線程正在運行時,如果有一個具有較高優先級別的線程進入就緒等待隊列,或一個具有較高優先級別的線程的等待結束時,就可以搶占處理器優先執行。為了不讓被搶走的線程等待太長的時間,調度器會將它移動到等待就緒隊列的對頭。 4. 上下文切換 處理器調入和調出一個線程時,是通過切換上下文來實現的。當系統調出一個正在運行的線程時,需要保存的線程上下文信息為運行指令指針、用戶棧、核心棧指針以及線程所在進程的虛擬地址空間指針。線程的核心棧用來完成上下文
23、的切換,調度器將調出線程的上下文環境信息壓入該線程的核心棧,并將棧指針用來完成上下文的切換,調度器將調出線程的上下文環境信息壓入該線程的核心棧,并將棧指針保存到該線程的核心線程塊中。7.4Windows的內存管理 7.4.1內存管理器 進程一般只有一部分虛擬地址空間中的數據是進程一般只有一部分虛擬地址空間中的數據是駐留在物理內存中,這一部分虛擬地址空間被駐留在物理內存中,這一部分虛擬地址空間被稱為稱為工作集工作集。 7.4.2內存管理的機制 1. 頁 內存管理器將虛擬內存空間劃分成固定大小的單元頁(page)。頁的大小根據具體的計算機體系結構而定,對于80 x86體系結構的處理器,頁大小一般為
24、4KB。 應用程序一般希望申請到連續的虛擬地址空間,內存管理器對相關的頁做預留標記,但在使用之前,并沒有將預留的虛擬地址空間映射到實際的物理內存空間。這樣可以減少分配內存的時間,在需要使用時再進行地址映射。 2. 共享內存 Windows提供了在進程間共享內存的機制,共享內存可以理解為同一塊物理內存在不同進程空間中的映射。如圖所示: 3. 堆管理 一般來說,內存申請是以頁為單位的(4KB)。當現場需要申請較小的內存塊時,如果按照內存頁分配機制,內存管理器只能為它申請以頁為單位的內存塊,會造成了內存資源的浪費。 為了解決這一問題,Windows使用棧管理器來管理小的內存分配。 4. 系統內存池 在系統服務中,有一部分的程序和數據需要常駐內存,以保證系統的效率,如中斷處理程序等。內存管理器用不分頁的內存池來為這些服務分配內存,這部分內存不會被調出到磁盤上。7.5虛擬地址空間虛擬地址空間 Windows通過虛擬地址空間提供了一個內存的邏輯視圖。應用程序通過內存管理器將虛擬地址映射到實際的物理內存地址。 7.5.1虛擬地址空間布局 32為的Windows操作系統的虛擬地址空間大小為4GB。 如圖所示,基于x86體系結構的Windows的虛擬地址空間可以分為幾個主要的部分。 7.5.1虛擬地址空間布局圖7.8 32位Windows的虛擬地址空間布局 進程的私有地址空間、系統內核、工
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電視設備智能生物診斷技術考核試卷
- 園林綠化工程綠化施工項目風險管理考核試卷
- 典當行不良資產處置與風險化解考核試卷
- 無損檢測非金屬專用設備考核試卷
- 廚房電器行業人才培養與技能培訓考核試卷
- 紡織行業經濟效益與投資回報分析考核試卷
- 服務綠色發展考核試卷
- 屠宰場食品安全管理考核試卷
- 漁業資源的保護與可持續發展考核試卷
- 糖果與巧克力銷售區域差異化策略考核試卷
- 2025年安徽國際商務職業學院單招職業技能考試題庫及答案1套
- 2024北京理工大附中高一(下)期中英語試題及答案
- 干洗店中央洗衣工廠崗位職責及管理手冊
- 2024年數學新高考I卷評析及教學建議
- 玉盤二部合唱簡譜
- 第十一單元課題1 化學與人體健康教學設計-2024-2025學年九年級化學人教版(2024)下冊
- 個人裝載機租賃協議書范本
- 2022年高級經濟師《運輸經濟》試題真題及答案
- 2023-2024學年滬科版(2019)高中信息技術必修一第三單元項目六《解決溫標轉換問題-認識程序和程序設計語言》教學設計
- 《豬的傳染病》課件
- 《新媒體營銷》課件-項目一 新媒體營銷認知
評論
0/150
提交評論