




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【實(shí)驗(yàn)與思考】熟悉計(jì)算機(jī)指令的執(zhí)行
1.實(shí)驗(yàn)背景
考慮一個(gè)簡(jiǎn)單的例子。假設(shè)一臺(tái)機(jī)器具有圖1-18中列出的所有特征,處理器包含一個(gè)稱為
累加器(AC)的數(shù)據(jù)寄存器,所有指令和數(shù)據(jù)長(zhǎng)度均為16位,使用16位的單元或字來組織存
儲(chǔ)器。指令格式中有4位是操作碼,因而最多有24=16種不同的操作碼(由1位十六進(jìn)制數(shù)字
表示)。操作碼定義了處理器執(zhí)行的操作。通過指令格式的余下12位,可直接訪問的存儲(chǔ)器尺
寸最大為212=4096(4K)個(gè)字(用3位十六進(jìn)制數(shù)字表示)。
03415
操作碼|地址
-(a)指令格式~~
0115
S|地址
(b)整數(shù)格式
程序計(jì)數(shù)器(PC)=指令的地址
指令寄存器(IR)=正被執(zhí)行的指令
素加器(AC)=臨時(shí)存儲(chǔ)
(c)內(nèi)部CPU寄存器
0001=從內(nèi)存中栽入AC
0010=將AC存儲(chǔ)到內(nèi)存
0101=從內(nèi)存中添加AC
<d)操作碼的部分清單
圖1-18一臺(tái)假想機(jī)器的特征
圖1-19描述了程序的部分執(zhí)行過程,顯示了存儲(chǔ)器和處理器寄存器的相關(guān)部分。給出的程
序片段把地址為940的存儲(chǔ)單元中的內(nèi)容與地址為941的存儲(chǔ)單元中的內(nèi)容相加,并將結(jié)果保
存在后一個(gè)單元中。這需要三條指令,可用三個(gè)取指階段和三個(gè)執(zhí)行階段來描述:
2操作系統(tǒng)原理(第2版)
存儲(chǔ)器CPU寄存器存儲(chǔ)器CPU寄存器
3001940、300IPC3001940301,PC
1AC
30159413015941>0003AC
3022941>1940IR302294111940IR
J
94000039400003-
94100029410002
步驟1步驟2
存儲(chǔ)器CPU寄存器存儲(chǔ)器CPU寄存器
3001940301|PC3001940302PC
3015941、0003AC3015941/0005AC
、5941IR30212941
3022941(5941
9400003940j0003、、?,J
9410002941|0002M
步驟3步驟4
存儲(chǔ)器CPU寄存器存儲(chǔ)器CPU寄存器
3001940302|PC3001940I303PC
J0005AC
30159410005AC3015941
3022941—?2941IR302294112941IR
9400003940IT。()3
94100029410005.
步驟5步驟6
圖1-19程序執(zhí)行的例子(存儲(chǔ)器和寄存器的內(nèi)容,以十六進(jìn)制表示)
(1)PC中包含第一條指令的地址300,該指令內(nèi)容(值為十六進(jìn)制數(shù)1940)被送入指令
寄存器IR中,PC增lo注意,該處理過程使用了存儲(chǔ)器地址寄存器(MAR)和存儲(chǔ)器緩沖寄
存器(MBR)。為簡(jiǎn)單起見,這里未顯示這些中間寄存器。
(2)IR中最初的4位(第一個(gè)十六進(jìn)制數(shù))表示需要加載AC,剩下的12位(后三個(gè)十
六進(jìn)制數(shù))表示地址為940。
(3)從地址為301的存儲(chǔ)單元中取下一條指令(5941),PC增1。
(4)AC中以前的內(nèi)容和地址為941的存儲(chǔ)單元中的內(nèi)容相加,結(jié)果保存在AC中。
(5)從地址為302的存儲(chǔ)單元中取下一條指令(2041),PC增1。
(6)AC中的內(nèi)容被存儲(chǔ)在地址為941的存儲(chǔ)單元中。
在該例中,為把地址為940的存儲(chǔ)單元中的內(nèi)容與地址為941的存儲(chǔ)單元中的內(nèi)容相加,
一共需要三個(gè)指令周期,每個(gè)指令周期都包含一個(gè)取指階段和一個(gè)執(zhí)行階段。若使用更復(fù)雜的
指令集,則需要的指令周期更少。大多數(shù)現(xiàn)代處理器都具有包含多個(gè)地址的指令,因此指令周
期可能涉及多次存儲(chǔ)器訪問。此外,除存儲(chǔ)器訪問外,指令還可用于I/O操作。
2.工具/準(zhǔn)備工作
在開始本實(shí)驗(yàn)之前,請(qǐng)回顧教科書的相關(guān)內(nèi)容。
需要準(zhǔn)備一臺(tái)運(yùn)行鏈接因特網(wǎng)的計(jì)算機(jī)。
3.實(shí)驗(yàn)內(nèi)容與步驟
第1章硬件基礎(chǔ)3
步驟1:如圖1-18所示,假設(shè)處理器還有兩條I/O指令:
0011=從I/O中載入AC
0111=把人<2保存到1/0中
此時(shí),使用12位地址標(biāo)識(shí)一個(gè)特殊的外部設(shè)備。請(qǐng)給出以下程序的執(zhí)行過程(按照?qǐng)D1-19
的格式,繪圖并黏貼如下):
(1)從設(shè)備5中載入AC。
(2)加入內(nèi)存單元940的內(nèi)容。
(3)把AC保存到設(shè)備6中。
假設(shè)從設(shè)備5中取到的下一個(gè)值為3,內(nèi)存單元940單元中的值為2o
繪圖黏貼于此
步驟2:前面用6步描述了圖1-19所示程序的執(zhí)行情況,請(qǐng)用MAR和MBR擴(kuò)充這一描述。
答:_____________________________________________________________________________
4.實(shí)驗(yàn)總結(jié)
5.教師實(shí)驗(yàn)評(píng)價(jià)
4操作系統(tǒng)原理(第2版)
【實(shí)驗(yàn)與思考】熟悉操作系統(tǒng)實(shí)例
在本節(jié)”實(shí)驗(yàn)與思考”中,我們來熟悉幾個(gè)主流的操作系統(tǒng)實(shí)例,以幫助讀者熟悉現(xiàn)代操作
系統(tǒng)的設(shè)計(jì)原理和實(shí)現(xiàn)問題。
請(qǐng)記錄:在下列空格中,填寫3個(gè)概念中的一個(gè):內(nèi)核、shell或者文件系統(tǒng)。
①表現(xiàn)為用戶界面,把用戶的需求翻譯為系統(tǒng)活動(dòng)。
②在用戶之間管理和分配資源。
③提供命令解釋。
④以層次化的結(jié)構(gòu)組織和存儲(chǔ)數(shù)據(jù)。
⑤進(jìn)行內(nèi)存管理。
⑥組成部分是文件和目錄。
⑦管理硬盤、磁帶機(jī)、打印機(jī)、終端、通信線路和其他設(shè)備。
1.Windows系統(tǒng)
MS-DOS是微軟公司最早成功應(yīng)用于個(gè)人計(jì)算機(jī)上的著名操作系統(tǒng),1985年,微軟公司在
MS-DOS基礎(chǔ)上推出WindowsoWindows/DOS于1993年被WindowsNT替代。和以往的Windows
版本相比,WindowsNT有著類似的圖形界面,但內(nèi)核設(shè)計(jì)更加完善。WindowsNT針對(duì)32位計(jì)
算機(jī)設(shè)計(jì),包含了內(nèi)核和執(zhí)行體以及一系列面向?qū)ο蟮奶卣?。此后,Windows操作系統(tǒng)不斷推
出新版本。Windows8是WindowsNT之后又一次重要革新,是可用于個(gè)人計(jì)算機(jī)、便攜式計(jì)算
機(jī)、平板計(jì)算機(jī)、家庭影院等硬件設(shè)備上的跨平臺(tái)操作系統(tǒng)。Windows8基于微軟的Metro設(shè)計(jì)
語(yǔ)言對(duì)觸屏設(shè)備進(jìn)行了優(yōu)化,這些優(yōu)化主要體現(xiàn)在操作系統(tǒng)平臺(tái)和用戶接口上,并帶來了更好
的用戶體驗(yàn)。在Windows8推出前,Windows的內(nèi)核和執(zhí)行體一直延續(xù)了類似的結(jié)構(gòu)。Windows
8從根本上改變了操作系統(tǒng)的內(nèi)核結(jié)構(gòu),尤其是線程管理和虛擬內(nèi)存管理。
2015年7月29日,微軟發(fā)布了Windows10正式版,這是一個(gè)跨平臺(tái)及設(shè)備應(yīng)用的操作系
統(tǒng),有家庭、專業(yè)、企業(yè)、教育、移動(dòng)、移動(dòng)企業(yè)和物聯(lián)網(wǎng)核心等七個(gè)發(fā)行版本,分別面向不
同用戶和設(shè)備。
2021年6月24日,微軟發(fā)布了Windows11桌面端操作系統(tǒng),應(yīng)用于計(jì)算機(jī)和平板電腦等
設(shè)備。Windows11提供了許多創(chuàng)新功能,增加了新版開始菜單和輸入邏輯等,支持混合工作環(huán)
境,側(cè)重于在靈活多變的體驗(yàn)中提高最終用戶的工作效率。2022年5月19日,微軟宣布Windows
11可以廣泛部署,這意味著任何擁有符合Windows11最低配置要求的PC都能夠安裝該系統(tǒng)。
Windows的內(nèi)核是用C語(yǔ)言編寫的,但其設(shè)計(jì)原理與面向?qū)ο笤O(shè)計(jì)密切相關(guān)。面向?qū)ο蠓?/p>
法簡(jiǎn)化了進(jìn)程間資源和數(shù)據(jù)的共享,便于保護(hù)資源免受未經(jīng)許可的訪問。
類似于其他操作系統(tǒng),Windows分別有面向應(yīng)用和操作系統(tǒng)核心的軟件,后者包括在內(nèi)核
模式下運(yùn)行的執(zhí)行體、內(nèi)核、設(shè)備驅(qū)動(dòng)器和硬件抽象層。在內(nèi)核模式下運(yùn)行的軟件可以訪問系
統(tǒng)數(shù)據(jù)和硬件,在用戶模式下運(yùn)行的其他軟件則不能訪問系統(tǒng)數(shù)據(jù)(見圖2-12)。
第1章硬件基礎(chǔ)5
Lsass=本地安全認(rèn)證服務(wù)器
POS1X=可移植操作系統(tǒng)接口
GDI=圖形設(shè)備接口
DLL=動(dòng)態(tài)鏈接庫(kù)
圖2-12Windows內(nèi)核體系結(jié)構(gòu)
Windows的體系結(jié)構(gòu)是高度模塊化的。每個(gè)系統(tǒng)函數(shù)由一個(gè)操作系統(tǒng)部件管理,操作系統(tǒng)
的其余部分和所有應(yīng)用程序通過相應(yīng)的部件使用標(biāo)準(zhǔn)接口來訪問這個(gè)函數(shù)。關(guān)鍵的系統(tǒng)數(shù)據(jù)只
能通過相應(yīng)的函數(shù)訪問。從理論上講,任何模塊都可以移動(dòng)、升級(jí)或替換,而不需要重寫整個(gè)
系統(tǒng)或其標(biāo)準(zhǔn)應(yīng)用程序編程接口(APD。
Windows利用一組受環(huán)境子系統(tǒng)保護(hù)的通用內(nèi)核模式構(gòu)件,為多操作系統(tǒng)特性編寫的應(yīng)用
程序提供支持。每個(gè)子系統(tǒng)在執(zhí)行時(shí)都包括一個(gè)獨(dú)立的進(jìn)程,該進(jìn)程包含共享的數(shù)據(jù)結(jié)構(gòu)、優(yōu)
先級(jí)和需要實(shí)現(xiàn)特定功能的執(zhí)行對(duì)象的句柄。首個(gè)這類應(yīng)用程序啟動(dòng)時(shí),Windows會(huì)話管理器
會(huì)啟動(dòng)上述進(jìn)程。子系統(tǒng)進(jìn)程作為系統(tǒng)用戶運(yùn)行,因此執(zhí)行體會(huì)保護(hù)其地址空間免受普通用戶
進(jìn)程的影響。
受保護(hù)子系統(tǒng)提供圖形或命令行用戶界面,為用戶定義操作系統(tǒng)的外觀。另外,每個(gè)受保
護(hù)的子系統(tǒng)都會(huì)為特定的操作環(huán)境提供API,這表明為那些特定操作環(huán)境創(chuàng)建的應(yīng)用程序在
Windows下不用改變即可運(yùn)行,原因是它們所看到的操作系統(tǒng)接口與編寫它們時(shí)的接口相同。
請(qǐng)記錄:Windows操作系統(tǒng)的主要優(yōu)點(diǎn)是什么?
答:_____________________________________________________________________________
6操作系統(tǒng)原理(第2版)
2.UNIX系統(tǒng)
UNIX操作系統(tǒng)最初是在貝爾實(shí)驗(yàn)室開發(fā)的,1970年在PDP-7上開始運(yùn)行。貝爾實(shí)驗(yàn)室和
其他地方關(guān)于UNIX的工作,產(chǎn)生了一系列的UNIX版本。第一個(gè)里程碑式的成果是把UNIX
系統(tǒng)從PDP-7上移植到了PDP-11計(jì)算機(jī)上,首次暗示UNIX將成為所有計(jì)算機(jī)上的操作系統(tǒng)。
另一個(gè)里程碑式的成果是用C語(yǔ)言重寫了UNIX,而以往人們認(rèn)為,操作系統(tǒng)這樣需要處理時(shí)
間限制事件的復(fù)雜系統(tǒng),必須完全用匯編語(yǔ)言編寫。如今所有UNIX實(shí)現(xiàn)都是用C語(yǔ)言編寫的。
1974年,UNIX系統(tǒng)首次出現(xiàn)在一本技術(shù)期刊中,這引發(fā)了人們對(duì)該系統(tǒng)的興趣,隨后UNIX
向商業(yè)機(jī)構(gòu)和大學(xué)提供了許可證。首個(gè)在貝爾實(shí)驗(yàn)室外使用的版本是1976年的第6版,隨后于
1978年發(fā)行的第7版是大多數(shù)現(xiàn)代UNIX系統(tǒng)的先驅(qū)。最重要的非AT&T系統(tǒng)是加州大學(xué)伯克
利分校開發(fā)的UNIXBSD,它最初在PDP機(jī)上運(yùn)行,后來在VAX機(jī)上運(yùn)行。AT&T繼續(xù)開發(fā)并
改進(jìn)這一系統(tǒng),1982年,貝爾實(shí)驗(yàn)室將UNIX的多個(gè)AT&T變體合并成為了一個(gè)系統(tǒng),即商業(yè)
版的UNIXSystemIII。后來又增加了很多功能組件,形成了UNIXSystemV。
(1)描述。
圖2-13概述了UNIX的體系結(jié)構(gòu)。底層硬件被操作系統(tǒng)軟件包圍,通常稱操作系統(tǒng)為系統(tǒng)
內(nèi)核,以強(qiáng)調(diào)它與用戶和應(yīng)用程序的隔離。我們主要關(guān)注UNIX內(nèi)核,但UNIX也擁有許多可
視為系統(tǒng)一部分的用戶服務(wù)和接口,包括命令解釋器、其他接口軟件和C編譯器部分(編譯器、
匯編器和加載器),它們的外層由用戶應(yīng)用程序和到C編譯器的用戶接口組成。
圖2-14深入描述了內(nèi)核。用戶程序既可直接調(diào)用操作系統(tǒng)服務(wù),也可通過庫(kù)程序調(diào)用操作
系統(tǒng)服務(wù)。系統(tǒng)調(diào)用接口是內(nèi)核和用戶的邊界,它允許高層軟件使用特定的內(nèi)核函數(shù)。另一方
面,操作系統(tǒng)包含直接與硬件交互的原子例程。在這兩個(gè)接口之間,系統(tǒng)被劃分為兩個(gè)主要部
分:一個(gè)關(guān)心進(jìn)程控制,另一個(gè)關(guān)心文件管理和I/O。進(jìn)程控制子系統(tǒng)負(fù)責(zé)內(nèi)存管理、進(jìn)程的調(diào)
度和分發(fā)、進(jìn)程的同步及進(jìn)程間的通信。文件系統(tǒng)按字符流或塊的形式在內(nèi)存和外部設(shè)備間交
換數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)交換需要用到各種設(shè)備驅(qū)動(dòng)程序。面向塊的傳送使用磁盤高速緩存方法:在
用戶地址空間和外部設(shè)備之間,插入了內(nèi)存中的一個(gè)系統(tǒng)緩沖區(qū)。
第1章硬件基礎(chǔ)7
傳統(tǒng)UNIX系統(tǒng)主要是指SystemVRelease3(SVR3)、4.3BSD及更早的版本。關(guān)于傳統(tǒng)
UNIX可以表述為:它被設(shè)計(jì)成在單一處理器上運(yùn)行,缺乏保護(hù)數(shù)據(jù)結(jié)構(gòu)免受多個(gè)處理器同時(shí)訪
問的能力;它的內(nèi)核不通用,只支持一種文件系統(tǒng)、進(jìn)程調(diào)度策略和可執(zhí)行文件格式。傳統(tǒng)UNIX
的內(nèi)核不可擴(kuò)展,不能重用代碼。因此,增加不同UNIX版本的功能時(shí),必須添加許多新代碼,
因此其內(nèi)核非常大,且不是模塊化的。
(2)現(xiàn)代UNIX系統(tǒng)。
隨著UNIX的不斷發(fā)展,出現(xiàn)了很多具有不同功能的不同版本。因此,人們開始希望得到
具有現(xiàn)代操作系統(tǒng)特征和模塊化結(jié)構(gòu)的全新版本。典型的現(xiàn)代UNIX內(nèi)核具有如圖2-15所示,
它有一個(gè)以模塊化方式編寫的小核心軟件,該軟件可提供許多操作系統(tǒng)進(jìn)程需要的功能和服務(wù);
每個(gè)外部圓圈表示相應(yīng)的功能及以多種方式實(shí)現(xiàn)的接口.
下面給出現(xiàn)代UNIX系統(tǒng)的一些例子。
①SystemVRelease4(SVR4)O由AT&T和Sun共同開發(fā)的SVR4結(jié)合了SVR3、4.3BSD、
MicrosoftXenixSystemV和SunOS的特點(diǎn),幾乎完全重寫了SystemV的內(nèi)核,形成了一個(gè)整
潔且復(fù)雜的版本。這一版本的新特性包括實(shí)時(shí)處理支持、進(jìn)程調(diào)度類、動(dòng)態(tài)分配數(shù)據(jù)結(jié)構(gòu)、虛
擬內(nèi)存管理、虛擬文件系統(tǒng)和可搶占的內(nèi)核。SVR4為商業(yè)UNIX的部署提供了統(tǒng)一平臺(tái),是最
重要的UNIX變體,它合并了以往UNIX系統(tǒng)中的大多數(shù)重要特征,可運(yùn)行于從32位微處理器
到超級(jí)計(jì)算機(jī)的任何處理器上。
8操作系統(tǒng)原理(第2版)
圖2-15現(xiàn)代UNIX內(nèi)核
②BSDoUNIX的BSD(BerkeleySoftwareDistribution)系列在操作系統(tǒng)設(shè)計(jì)原理的演化
中意義重大。4.XBSD廣泛用于高校,是許多商業(yè)UNIX產(chǎn)品的基礎(chǔ),大多數(shù)UNIX的增強(qiáng)功能
首先都出現(xiàn)在BSD版中。
4.4BSD是伯克利最后發(fā)布的BSD版本,隨后其設(shè)計(jì)和實(shí)現(xiàn)小組被解散。它是4.3BSD的重
要升級(jí),包含了一個(gè)新的虛存系統(tǒng),改變了內(nèi)核結(jié)構(gòu),增強(qiáng)了一系列其他特性。應(yīng)用最廣且文
檔最好的BSD版本是FreeBSD。FreeBSD常用于互聯(lián)網(wǎng)的服務(wù)器、防火墻和許多嵌入式系統(tǒng)中。
③Solaris10oSolaris是Sun基于SVR4的UNIX版本,它具有SVR4的所有特征和許多更
高級(jí)的特征,如完全可搶占、多線程內(nèi)核,完全支持SMP及文件系統(tǒng)的面向?qū)ο蠼涌凇olaris
是使用最為廣泛且最成功的商用UNIX版本。
請(qǐng)記錄:
請(qǐng)通過網(wǎng)絡(luò)搜索對(duì)UNIX操作系統(tǒng)做進(jìn)一步的深入了解,并簡(jiǎn)單闡述你對(duì)UNIX操作系統(tǒng)
的認(rèn)識(shí)和看法(主要優(yōu)點(diǎn))。
答:_________________________________________________________________________________
3.Linux系統(tǒng)
Linux最初是IBMPC(Intel80386)上所用的一個(gè)UNIX變體,它由芬蘭的計(jì)算機(jī)科學(xué)專
業(yè)學(xué)生LinusTorvalds編寫。1991年,Torvalds在因特網(wǎng)上公布了最早的Linux版本,此后很多
人通過網(wǎng)上合作為L(zhǎng)inux的發(fā)展做出了貢獻(xiàn)。由于Linux免費(fèi)且源代碼公開,很快成為了Sun
第1章硬件基礎(chǔ)9
和IBM公司的工作站和其他UNIX工作站的替代操作系統(tǒng)。如今Linux已成為功能全面的UNIX
系統(tǒng),可在包括IntelPentium和Ilanium、Motorola/IBMPowerPC的所有平臺(tái)上運(yùn)行。
Linux是由免費(fèi)軟件基金贊助的免費(fèi)軟件包。FSF的目標(biāo)是推出與平臺(tái)無關(guān)的穩(wěn)定軟件,這
種軟件必須免費(fèi)、高質(zhì),并為用戶團(tuán)體所接受。FSF的GNU項(xiàng)目為軟件開發(fā)者提供了工具,GNU
PublicLicense(GPL)是FSF正式認(rèn)可的標(biāo)志。Torvalds在開發(fā)內(nèi)核時(shí)使用了GNU工具,后來
他在GPL下發(fā)布了這個(gè)內(nèi)核。因此,我們今天所見的Linux發(fā)行版是FSF的GNU項(xiàng)目、Torvald
的個(gè)人努力及世界各地很多合作者共同開發(fā)的產(chǎn)品。
除了由很多個(gè)人程序員使用外,Linux已滲透到了業(yè)界,這主要是由于Linux內(nèi)核的質(zhì)量很
高。很多天才的程序員共同造就了這一在技術(shù)上給人留下深刻印象的產(chǎn)品;Linux高度模塊化且
易于配置,因此很容易在各種不同的硬件平臺(tái)上顯示出最佳的性能;另外,由于可以獲得源代
碼,銷售商可以調(diào)整應(yīng)用程序和使用方法,以滿足其特定的要求。
(1)模塊結(jié)構(gòu)。
大多數(shù)UNIX內(nèi)核都是單體的。單體內(nèi)核指在一大塊代碼中包含所有的操作系統(tǒng)功能,并
作為單個(gè)進(jìn)程運(yùn)行,具有唯一的地址空間。內(nèi)核中的所有功能部件可以訪問所有的內(nèi)部數(shù)據(jù)結(jié)
構(gòu)和例程。若對(duì)典型單體操作系統(tǒng)的任何部分進(jìn)行了改變,則變化生效前,所有模塊和例程都
須重新鏈接、重新安裝,再重新啟動(dòng)系統(tǒng)。因此,任何修改(如增加一個(gè)新的設(shè)備驅(qū)動(dòng)程序或
文件系統(tǒng)函數(shù))都很困難,Linux中的這個(gè)問題尤其尖銳。
盡管Linux未采用微內(nèi)核的方法,但由于其特殊的模塊結(jié)構(gòu),因而也具有很多微內(nèi)核方法
的優(yōu)點(diǎn)。Linux是由很多模塊組成的,這些模塊可由命令自動(dòng)加載和卸載。這些相對(duì)獨(dú)立的塊稱
為可加載模塊(loadablemodule),實(shí)質(zhì)上,模塊就是內(nèi)核在運(yùn)行時(shí)可以鏈接或斷開鏈接的對(duì)象
文件。一個(gè)模塊通常實(shí)現(xiàn)一些特定的功能,如一個(gè)文件系統(tǒng)、一個(gè)設(shè)備驅(qū)動(dòng)或內(nèi)核上層的一些
特征。盡管模塊可以因?yàn)楦鞣N目的而創(chuàng)建內(nèi)核線程,但其自身不作為進(jìn)程或線程執(zhí)行。當(dāng)然,
模塊會(huì)代表當(dāng)前進(jìn)程在內(nèi)核模式下執(zhí)行。因此,雖然Libux被認(rèn)為是單體內(nèi)核,但其模塊結(jié)構(gòu)
克服了開發(fā)和發(fā)展內(nèi)核過程中所遇到的困難。
(2)內(nèi)核組件。
圖2-16給出了基于IA-64體系結(jié)構(gòu)(如Intel的Itanium)的Linux內(nèi)核的主要組件。圖中顯
示了運(yùn)行在內(nèi)核上的一些進(jìn)程。每個(gè)方框表示一個(gè)進(jìn)程,每條帶箭頭的曲線表示一個(gè)正在執(zhí)行
的線程。內(nèi)核本身包括一組相互關(guān)聯(lián)的組件,箭頭表示主要的關(guān)聯(lián)。底層的硬件也是一個(gè)組件
集,箭頭表示硬件組件被哪個(gè)內(nèi)核組件使用或控制。當(dāng)然,所有內(nèi)核組件都在CPU上執(zhí)行,但
為了簡(jiǎn)潔起見,圖中未顯示它們之間的關(guān)系。
主要內(nèi)核組件的簡(jiǎn)要介紹如下:
?信號(hào):內(nèi)核使用信號(hào)來向進(jìn)程提供信息。例如,使用信號(hào)來告知進(jìn)程出現(xiàn)了某些錯(cuò)誤(如
被零除錯(cuò)誤)。
10操作系統(tǒng)原理(第2版)
圖2-16Linux內(nèi)核組件
?系統(tǒng)調(diào)用:進(jìn)程通過系統(tǒng)調(diào)用來請(qǐng)求系統(tǒng)服務(wù)。系統(tǒng)調(diào)用有幾百個(gè),大致分為6類:文
件系統(tǒng)、進(jìn)程、調(diào)度、進(jìn)程間通信、套接字(網(wǎng)絡(luò))和其他。
?進(jìn)程和調(diào)度器:創(chuàng)建、管理、調(diào)度進(jìn)程。
?虛存:為進(jìn)程分配和管理虛存。
?文件系統(tǒng):為文件、目錄和其他文件相關(guān)對(duì)象提供一個(gè)全局的分層命名空間,并提供文
件系統(tǒng)函數(shù)。
?網(wǎng)絡(luò)協(xié)議:為用戶的TCP/IP協(xié)議套件提供套接字接口。
?字符設(shè)備驅(qū)動(dòng):管理向內(nèi)核一次發(fā)送/接收1字節(jié)數(shù)據(jù)的設(shè)備,如終端、調(diào)制解調(diào)器和打
印機(jī)。
?塊設(shè)備驅(qū)動(dòng):管理以塊為單位向內(nèi)核發(fā)送/接收數(shù)據(jù)的設(shè)備,如各種形式的外存(磁盤、
CD-ROM等)。
?網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng):管理網(wǎng)卡和通信端口,即管理連接到網(wǎng)橋或路由的網(wǎng)絡(luò)設(shè)備。
?陷阱和錯(cuò)誤:處理CPU產(chǎn)生的陷阱和錯(cuò)誤,如內(nèi)存錯(cuò)誤。
?物理內(nèi)存:管理實(shí)際內(nèi)存中的內(nèi)存頁(yè)池,并為虛存分配內(nèi)存頁(yè)。
?中斷:處理來自外設(shè)的中斷。
請(qǐng)記錄:
請(qǐng)列舉Linux操作系統(tǒng)的主要組成部分。Linux操作系統(tǒng)的主要優(yōu)點(diǎn)是什么?
答:_____________________________________________________________________________
4.安卓(Android)系統(tǒng)
安卓(Android)操作系統(tǒng)是為觸屏移動(dòng)設(shè)備(如智能手機(jī)、平板電腦)設(shè)計(jì)的基于Linux
第1章硬件基礎(chǔ)II
的操作系統(tǒng),也是最流行的手機(jī)操作系統(tǒng),當(dāng)然,這只是安卓系統(tǒng)強(qiáng)勢(shì)增長(zhǎng)的原因之一。從更
廣泛的層面上來看,操作系統(tǒng)應(yīng)能在任何含有電子芯片的硬件設(shè)備上使用,而不僅僅是在服務(wù)
器和個(gè)人主機(jī)上使用,安卓系統(tǒng)恰恰很好地體現(xiàn)了這一點(diǎn),也正因?yàn)槿绱?,安卓系統(tǒng)成為了“物
聯(lián)網(wǎng)”操作系統(tǒng)的標(biāo)桿,它能把傳感器和應(yīng)用更好地聯(lián)系起來,構(gòu)建更多、更好的智能設(shè)備。
最初的安卓操作系統(tǒng)由Android公司開發(fā),隨后該公司于2005年被谷歌公司收購(gòu)。最早的
商業(yè)版本Android1.0于2008年發(fā)布。2007年,開放手機(jī)聯(lián)盟(OHA)成立。創(chuàng)立之初,OHA
的成員共有84家公司,它們共同為手機(jī)設(shè)備制定了公開標(biāo)準(zhǔn)。安卓操作系統(tǒng)的發(fā)布由OHA負(fù)
責(zé),開源性是安卓操作系統(tǒng)成功的關(guān)鍵因素。
(1)軟件體系結(jié)構(gòu)。
安卓是一個(gè)包括操作系統(tǒng)內(nèi)核、中間件和關(guān)鍵應(yīng)用的軟件棧。圖2-17顯示了安卓的軟件體
系結(jié)構(gòu)。因此,安卓應(yīng)視為一個(gè)完整的軟件棧,而非單個(gè)操作系統(tǒng)。從某種意義上講,安卓是
一種嵌入式Linux,但它所提供的功能并不是一個(gè)簡(jiǎn)單的嵌入式內(nèi)核就可以做到的。
應(yīng)用
(Home)[撥號(hào)程序)IM)(瀏覽器](相機(jī))(報(bào)警)(計(jì)算器)
(聯(lián)系人J國(guó)撥號(hào)(電子由泊日歷)(媒體播放罌)(相珊)(時(shí)鐘j(.)
應(yīng)用框架
活動(dòng)管理器Window*管理器)內(nèi)容提供商通知管理器)
包管理器電話管理器資源管理器XMPP服務(wù))
系統(tǒng)庫(kù)Android運(yùn)行時(shí)
面管理器]媒體框架)
SQLite核心庫(kù)
OperGlJESFreeTvpeLibWebCoreDalvik虛擬機(jī)
Linux內(nèi)核
顯示驅(qū)動(dòng)相機(jī)驅(qū)動(dòng)藍(lán)牙驅(qū)動(dòng)
USB驅(qū)動(dòng)鍵盤驅(qū)動(dòng)WiFi驅(qū)動(dòng)
實(shí)現(xiàn):
應(yīng)用、應(yīng)用框架:Java
系統(tǒng)庫(kù)、Android運(yùn)行時(shí):C和C++
Linux內(nèi)核:C
圖2-17安卓軟件體系結(jié)構(gòu)
安卓系統(tǒng)的內(nèi)核與Linux的內(nèi)核非常相似但不完全相同。變化之一是安卓系統(tǒng)中沒有不適
合在移動(dòng)設(shè)備環(huán)境中應(yīng)用的驅(qū)動(dòng),這使得安卓的內(nèi)核更小。此外,安卓系統(tǒng)針對(duì)移動(dòng)設(shè)備環(huán)境
提高了內(nèi)核的功能。
安卓系統(tǒng)依賴Linux內(nèi)核來提供核心的系統(tǒng)服務(wù),如安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)
議棧和驅(qū)動(dòng)模型。內(nèi)核也扮演硬件和軟件中間的抽象層角色,以使安卓系統(tǒng)能使用Linux系統(tǒng)
支持的大多數(shù)硬件驅(qū)動(dòng)。
12操作系統(tǒng)原理(第2版)
(2)系統(tǒng)體系結(jié)構(gòu)。
從應(yīng)用開發(fā)者的角度來看,如圖2-18所示的安卓系統(tǒng)體系結(jié)構(gòu)是圖2-17所示軟件體系結(jié)構(gòu)
的簡(jiǎn)化抽象。
從這個(gè)角度來看,安卓包含了如下幾層:
(1)應(yīng)用和框架:應(yīng)用開發(fā)者最關(guān)心這一層及訪問低層服務(wù)的API。
(2)BinderIPC:Binder進(jìn)程間通信機(jī)制允許應(yīng)用框架打破進(jìn)程的界限來訪問安卓系統(tǒng)服
務(wù)代碼,從而允許系統(tǒng)的高層框架API與安卓的系統(tǒng)服務(wù)進(jìn)行交互。
(3)安卓系統(tǒng)服務(wù):框架中大部分能夠調(diào)用系統(tǒng)服務(wù)的接口都向開發(fā)者開放,以便開發(fā)者
能夠使用底層的硬件和內(nèi)核功能。安卓系統(tǒng)服務(wù)分為兩部分:媒體服務(wù)處理播放和錄制媒體文
件,系統(tǒng)服務(wù)處理應(yīng)用所需要的系統(tǒng)功能。
(4)硬件抽象層(HAL):提供調(diào)用核心層設(shè)備驅(qū)動(dòng)的標(biāo)準(zhǔn)接口,以便上層代碼不需要關(guān)
心具體驅(qū)動(dòng)和硬件的實(shí)現(xiàn)細(xì)節(jié)。安卓的HAL與標(biāo)準(zhǔn)Linux中的HAL基本一致。
(5)Linux內(nèi)核:己被裁剪到滿足移動(dòng)環(huán)境的需求。
請(qǐng)記錄:
請(qǐng)簡(jiǎn)述,安卓操作系統(tǒng)的主要優(yōu)點(diǎn)是什么?
答:_____________________________________________________________________________
第1章硬件基礎(chǔ)13
5.實(shí)驗(yàn)總結(jié)
6.教師實(shí)驗(yàn)評(píng)價(jià)
14操作系統(tǒng)原理(第2版)
【實(shí)驗(yàn)與思考】Windows進(jìn)程的“一生”
i.背景知識(shí)
Windows所創(chuàng)建的每個(gè)進(jìn)程都從調(diào)用CreateProcess()API函數(shù)開始,該函數(shù)的任務(wù)是在對(duì)象
管理器子系統(tǒng)內(nèi)初始化進(jìn)程對(duì)象。每一進(jìn)程都以調(diào)用ExilProcessO或TerminaleProcess()API函
數(shù)終止。通常應(yīng)用程序的框架負(fù)責(zé)調(diào)用ExitProcess()函數(shù)。對(duì)于C++運(yùn)行庫(kù)來說,這一調(diào)用
發(fā)生在應(yīng)用程序的main。函數(shù)返回之后。
(1)創(chuàng)建進(jìn)程。
CreateProcessO調(diào)用的核心參數(shù)是可執(zhí)行文件運(yùn)行時(shí)的文件名及其命令行。表3-6列出了每
個(gè)參數(shù)的類型和名稱。
表3-6CreateProcessO函數(shù)的參數(shù)
參數(shù)名稱使用目的
LPCTSTRIpApplivationName全部或部分地指明包括可執(zhí)行代碼的EXE文件的文件名
LPCTSTRIpCommandLine向可執(zhí)行文件發(fā)送的參數(shù)
LPSECURIITY.ATTRIBUTES返回進(jìn)程句柄的安全屬性。主要指明這?句柄是否應(yīng)該由其他
IpProcessAttributes子進(jìn)程所繼承
LPSECURIITY_ATTRIBUTES
返回進(jìn)程的主線程的句柄的安全屬性
IpThreadAttributes
BOOLblnheritHandle一種標(biāo)志,告訴系統(tǒng)允許新進(jìn)程繼承創(chuàng)建者進(jìn)程的句柄
DWORDdwCreationFlage特殊的創(chuàng)建標(biāo)志(如CREATE_SUSPENDED)的位標(biāo)記
LPVOIDIpEnvironmcnt向新進(jìn)程發(fā)送的一套環(huán)境變量;如為null值則發(fā)送調(diào)用者環(huán)境
LPCTSTRIpCurrentDirectory新進(jìn)程的啟動(dòng)目錄
STARTUPINFOIpStartupInfoSTARTUPINFO結(jié)構(gòu),包括新進(jìn)程的輸入和輸出配置的詳情
LPPROCESS.INFORMATION
調(diào)用的結(jié)果塊;發(fā)送新應(yīng)用程序的進(jìn)程和主線程的句柄和ID
IpProcessInfbrmation
可以指定第一個(gè)參數(shù),即應(yīng)庠程序的名稱,其中包括相對(duì)于當(dāng)前進(jìn)程的當(dāng)前目錄的全路徑
或者利用搜索方法找到的路徑;IpCommandLine參數(shù)允許調(diào)用者向新應(yīng)用程序發(fā)送數(shù)據(jù);接下
來的三個(gè)參數(shù)與進(jìn)程和它的主線程以及返回的指向該對(duì)象的句柄的安全性有關(guān)。
然后是標(biāo)志參數(shù),用以在dwCreationFlags參數(shù)中指明系統(tǒng)應(yīng)該給予新進(jìn)程什么行為。經(jīng)常
使用的標(biāo)志是CREATE_SUSPNDED,告訴主線程立刻暫停。當(dāng)準(zhǔn)備好時(shí),應(yīng)該使用
ResumeThread()API來啟動(dòng)進(jìn)程。另一個(gè)常用的標(biāo)志是CREATE_NEW_CONSOLE,告訴新進(jìn)
程啟動(dòng)自己的控制臺(tái)窗口,而不是利用父窗口。這一參數(shù)還允許設(shè)置進(jìn)程的優(yōu)先級(jí),用以向系
統(tǒng)指明,相對(duì)于系統(tǒng)中所有其他的活動(dòng)進(jìn)程來說,給此進(jìn)程多少CPU時(shí)間。
第1章硬件基礎(chǔ)15
接著是CreateProcess()函數(shù)調(diào)用所需要的三個(gè)通常使用缺省值的參數(shù)。第一個(gè)參數(shù)是
IpEnvironment參數(shù),指明為新進(jìn)程提供的環(huán)境;第二個(gè)參數(shù)是IpCurrentDirectory,可用于向主
創(chuàng)進(jìn)程發(fā)送與缺省目錄不同的新進(jìn)程使用的特殊的當(dāng)前目錄;第三個(gè)參數(shù)是STARTUPINFO數(shù)
據(jù)結(jié)構(gòu)所必需的,用于在必要時(shí)指明新應(yīng)用程序的主窗口的外觀。
CreateProcess()的最后一個(gè)參數(shù)是用于新進(jìn)程對(duì)象及其主線程的句柄和ID的返回值緩沖
區(qū)。以PROCESS」NFORMATION結(jié)構(gòu)中返回的句柄調(diào)用CloseHandle()API函數(shù)是重要的,因
為如果不將這些句柄關(guān)閉的話,有可能危及主創(chuàng)進(jìn)程終止之前的任何未釋放的資源。
(2)正在運(yùn)行的進(jìn)程。
如果一個(gè)進(jìn)程擁有至少一個(gè)執(zhí)行線程,則為正在系統(tǒng)中運(yùn)行的進(jìn)程。通常,這種進(jìn)程使用
主線程來指示它的存在。當(dāng)主線程結(jié)束時(shí),調(diào)用ExitProcess()API函數(shù),通知系統(tǒng)終止它所擁有
的所有正在運(yùn)行、準(zhǔn)備運(yùn)行或正在掛起的其他線程。當(dāng)進(jìn)程正在運(yùn)行時(shí),可以查看它的許多特
性,其中少數(shù)特性也允許加以修改。
首先可查看的進(jìn)程特性是系統(tǒng)進(jìn)程標(biāo)識(shí)符(P1D),可利用GetCurrentProcessId()API函數(shù)來
查看,與GetCurrenlProcess。相似,對(duì)該函數(shù)的調(diào)用不能失敗,但返回的PID在整個(gè)系統(tǒng)中都
可使用。其他的可顯示當(dāng)前進(jìn)程信息的API函數(shù)還有GetStartupInfo()和
GetProcessShutdownParameters()>可給出進(jìn)程存活期內(nèi)的配置詳情。
通常,一個(gè)進(jìn)程需要它的運(yùn)行期環(huán)境的信息。例如API函數(shù)GetModuleFileName()和
GetCommandLine(),可以給出用在CreateProcess。中的參數(shù)以啟動(dòng)應(yīng)用程序。在創(chuàng)建應(yīng)用程序
時(shí)可使用的另一個(gè)API函數(shù)是IsDebuggerPresent()。
可利用API函數(shù)GetGuiResourcesO來查看進(jìn)程的GUI資源。此函數(shù)既可返回指定進(jìn)程中
的打開的GUI對(duì)象的數(shù)目,也可返回指定進(jìn)程中打開的USER對(duì)象的數(shù)目。進(jìn)程的其他性能信
息可通過GetProcessIoCounters()、GetProcessPriorityBoost()、GetProcessTimes()和
GetProcessWorkingSetSizeOAPI得到。以上這幾個(gè)API函數(shù)都只需要具有
PROCESS_QUERY_INFORMATION訪問權(quán)限的指向所感興趣進(jìn)程的句柄。
另一個(gè)可用于進(jìn)程信息查詢的API函數(shù)是GetProcessVersionO。此函數(shù)只需感興趣進(jìn)程的
PID(進(jìn)程標(biāo)識(shí)號(hào))。本實(shí)驗(yàn)的程序清單3-2中列出了這一API函數(shù)與GetVersionEx()的共同作
用,可確定運(yùn)行進(jìn)程的系統(tǒng)的版本號(hào)。
(3)終止進(jìn)程。
所有進(jìn)程都是以調(diào)用ExitProcess()或者TerminateProcess()函數(shù)結(jié)束的。但最好使用前者而
不要使用后者,因?yàn)檫M(jìn)程是在完成了它的所有的關(guān)閉“職責(zé)”之后以正常的終止方式來調(diào)用前
者的。而外部進(jìn)程通常調(diào)用后者即突然終止進(jìn)程的進(jìn)行,由于關(guān)閉時(shí)的途徑不太正常,有可能
引起錯(cuò)誤的行為。
TerminateProcess()API函數(shù)只要打開帶有PROCESS_TERMINATE訪問權(quán)的進(jìn)程對(duì)象,就
可以終止進(jìn)程,并向系統(tǒng)返回指定的代碼。這是一種“野蠻”的終止進(jìn)程的方式,但是有時(shí)卻
是需要的。
16操作系統(tǒng)原理(第2版)
如果開發(fā)人員確實(shí)有機(jī)會(huì)來設(shè)計(jì)“謀殺”(終止別的進(jìn)程的進(jìn)程)和“受害”進(jìn)程(被終止
的進(jìn)程)時(shí),應(yīng)該創(chuàng)建一個(gè)進(jìn)程間通訊的內(nèi)核對(duì)象一一如一個(gè)互斥程序一一這樣一來,“受害”
進(jìn)程只在等待或周期性地測(cè)試它是否應(yīng)該終止。
2.工具/準(zhǔn)備工作
在開始本實(shí)驗(yàn)之前,請(qǐng)回顧教科書的相關(guān)內(nèi)容。
需要準(zhǔn)備一臺(tái)運(yùn)行Windows操作系統(tǒng)的計(jì)算機(jī),且該計(jì)算機(jī)中需安裝VisualC++。
3.實(shí)驗(yàn)內(nèi)容與步驟
本節(jié)“實(shí)驗(yàn)與思考”的目的是:
(1)通過創(chuàng)建進(jìn)程、觀察正在運(yùn)行的進(jìn)程和終止進(jìn)程的程序設(shè)計(jì)和調(diào)試操作,進(jìn)一步熟悉
操作系統(tǒng)的進(jìn)程概念,理解Windows進(jìn)程的“一生”。
(2)通過閱讀和分析實(shí)驗(yàn)程序,學(xué)習(xí)創(chuàng)建進(jìn)程、觀察進(jìn)程和終止進(jìn)程的程序設(shè)計(jì)方法。
請(qǐng)回答:
Windows所創(chuàng)建的每個(gè)進(jìn)程都是以調(diào)用API函數(shù)開始和
以調(diào)用或API函數(shù)終止。
(1)當(dāng)前進(jìn)程對(duì)象信息的獲取。
操作系統(tǒng)將當(dāng)前運(yùn)行的行的應(yīng)用程序看作是進(jìn)程對(duì)象。利用系統(tǒng)提供的惟一的稱為句柄
(HANDLE)的號(hào)碼,就可與進(jìn)程對(duì)象交互。這一號(hào)碼只對(duì)當(dāng)前進(jìn)程有效。
本實(shí)驗(yàn)表示了一個(gè)簡(jiǎn)單的進(jìn)程句柄的應(yīng)用。在系統(tǒng)中運(yùn)行的任何進(jìn)程都可調(diào)用
GetCurrentProcess()API函數(shù)和GetCurrentProcessId(),GetCurrentProcess()函數(shù)可返回標(biāo)識(shí)進(jìn)程本
身的句柄,GetCurrentProcessId()函數(shù)可返回進(jìn)程標(biāo)識(shí)號(hào)。然后就可在Windows需要該進(jìn)程的有
關(guān)情況時(shí),利用這一句柄或進(jìn)程標(biāo)識(shí)號(hào)來獲取。
步驟1:在C++開發(fā)環(huán)境中輸入程序3-1.cpp,
清單3-1通過句柄或進(jìn)程標(biāo)識(shí)號(hào)獲取當(dāng)前進(jìn)程信息。
#include<windows.h>
#include<iostream>
intmain(){
//從當(dāng)前進(jìn)程中提取句柄
HANDLEhProcessThis=::GetCurrentProcess();
//提取當(dāng)前進(jìn)程的ID號(hào)
DWORDdwIdThis=::GetCurrentProcessId();
//獲得這?進(jìn)程所需的操作系統(tǒng)版本
DWORDdwVerReq=::GetProcessVersion(dwIdThis);
WORDwMajorReq=(WORD)(dwVerReq?16);//右移16位
第1章硬件基礎(chǔ)17
WORDwMinorReq=(WORD)(dwVerReq&Oxffff);
std::cout?”當(dāng)前進(jìn)程標(biāo)識(shí)號(hào):dwIdThis?",所需的操作系統(tǒng)版本:”
<<wMajorReq<<"."?wMinorReq?std::endl;
//設(shè)置版本信息的數(shù)據(jù)結(jié)構(gòu),以便保存操作系統(tǒng)的版本信息
OSVERSIONINFOEXosvix;
::ZeroMemory(&osvixzsizeof(osvix));
osvix.dwOSVersionInfoSize=sizeof(osvix);
//提取當(dāng)前操作系統(tǒng)的版本信息
::GetVersionEx(reinterpret_cast<LPOSVERSIONINFO>(&osvix));
std::cout當(dāng)前操作系統(tǒng)版本:osvix.dwMajorVersion?"."
<<osvix.dwMinorVersion<<std::endl;
//請(qǐng)求內(nèi)核提供該進(jìn)程所屬的優(yōu)先權(quán)類
DWORDdwPriority=::GetPriorityClass(hProcessThis);
//發(fā)出消息,為用戶描述該類
std::cout<<"Currentprocesspriority:";
switch(dwPriority)
(
caseHIGH_PRIORITY_CLASS:std::cout?"高”;break;
caseNORMAL_PRIORITY_CLASS:std::cout?“普通”;break;
caseIDLE_PRIORITY_CLASS:std::cout?"空閑”;break;
caseREALTIME_PRIORITY_CLASS:std::cout?”實(shí)時(shí)“;break;
default:std::cout?"未矢口";break;
}
std::cout?std::endl;
getchar();//僅僅為了讓窗口停下來,以便觀察
return0;
}
清單3-1中列出的是一種獲得進(jìn)程句柄的方法。對(duì)于進(jìn)程句柄可進(jìn)行的惟一有用的操作是
在API調(diào)用時(shí),將其作為參數(shù)發(fā)還給系統(tǒng),正如清單3-1中對(duì)GetPriorityClass。API函數(shù)的調(diào)用
那樣。在這種情況下,系統(tǒng)向進(jìn)程對(duì)象內(nèi)“窺視”,以決定其優(yōu)先級(jí),然后將此優(yōu)先級(jí)返回給應(yīng)
用程序。
OpenProcess()和CreateProcess。API函數(shù)也可以用于提取進(jìn)程句柄。前者提取的是已經(jīng)存
在的進(jìn)程的句柄,而后者創(chuàng)建一個(gè)新進(jìn)程,并將其句柄提供出來。
步驟2:編譯源程序。
你采用的編譯方法是(寫出編程軟件):_____________________________________________
18操作系統(tǒng)原理(第2版)
步驟3:運(yùn)行可執(zhí)行文件。(請(qǐng)直接找到可執(zhí)行文件(如3-l.exe),右鍵一以管理員身份運(yùn)
行,下同)。
運(yùn)行結(jié)果:_______________________________________________________________________
步驟4:通過改編程序,增加第二次進(jìn)程優(yōu)先級(jí)的輸出。功能要求如下,在進(jìn)程運(yùn)行期間,
打開任務(wù)管理器,找到當(dāng)前進(jìn)程,右鍵一一設(shè)置優(yōu)先級(jí),然后更改當(dāng)前進(jìn)程的優(yōu)先級(jí),完成優(yōu)
先級(jí)設(shè)置后,使進(jìn)程執(zhí)行第二次輸出優(yōu)先級(jí)的代碼,觀察結(jié)果。
請(qǐng)問在任務(wù)管理器觀察到的當(dāng)前進(jìn)程的進(jìn)程名(映像名稱)是:
進(jìn)程標(biāo)識(shí)號(hào)是:___________________________________________________________________
請(qǐng)描述這次的運(yùn)行結(jié)果:__________________________________________________________
步驟5:改編程序,在第二次進(jìn)程優(yōu)先級(jí)輸出前,用編程的方式修改進(jìn)程優(yōu)先級(jí)。改變優(yōu)先
級(jí)的API函數(shù)SetPriorityClass()的調(diào)用方法如下:
::SetPriorityClass(進(jìn)程句柄,進(jìn)程優(yōu)先級(jí))
其中進(jìn)程優(yōu)先級(jí)使用的是優(yōu)先級(jí)類中的成員,如HIGH_PRIORITY_CLASSo
給出更改進(jìn)程優(yōu)先級(jí)的代碼:
運(yùn)行結(jié)果:_______________________________________________________________________
通過上述三次運(yùn)行結(jié)果,觀察進(jìn)程標(biāo)識(shí)號(hào)有什么規(guī)律?是同一個(gè)進(jìn)程嗎?為什么?
知識(shí)點(diǎn)回顧:
@獲取當(dāng)前進(jìn)程的API:____________________________________________________
②獲取當(dāng)前進(jìn)程的進(jìn)程標(biāo)識(shí)號(hào)(PID)的API:
③獲得進(jìn)程所需的操作系統(tǒng)版本的API:
④獲得進(jìn)程優(yōu)先級(jí)的API:__________________________________________________
⑤設(shè)置進(jìn)程優(yōu)先級(jí)的API:_________________
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CCMA 0185-2024壓路機(jī)排氣污染物車載測(cè)量方法
- T/CCMA 0134-2022工程機(jī)械潤(rùn)滑脂集中潤(rùn)滑系統(tǒng)
- T/CCMA 0127-2022塔式起重機(jī)測(cè)力環(huán)式起重量限制器
- T/CCMA 0107-2020移動(dòng)式升降工作平臺(tái)排氣煙度臂架式升降工作平臺(tái)測(cè)量方法
- T/CBMMAS 007-2022 T/BFTA 02-2022適老家具通用技術(shù)要求
- T/CBMCA 020-2021地鋪石瓷磚
- T/CAQI 243-2021建筑智慧照明系統(tǒng)技術(shù)要求
- T/CAQI 201-2021小型新風(fēng)系統(tǒng)用風(fēng)量分配器
- T/CAQI 127-2020空氣凈化器家居環(huán)境下甲醛凈化性能評(píng)價(jià)規(guī)范
- ccat考試題及答案
- 2025年公共安全管理考試題及答案
- 2025年寧夏吳忠紅寺堡區(qū)公開招聘社區(qū)工作者46人筆試備考題庫(kù)及答案解析
- 搶救配合流程和站位規(guī)范
- 2025年高考物理考試易錯(cuò)題易錯(cuò)點(diǎn)07動(dòng)量定理、動(dòng)量守恒定律(3陷阱點(diǎn)7考點(diǎn)4題型)(學(xué)生版+解析)
- 雨季行車安全教育
- 行政檢查業(yè)務(wù)培訓(xùn)課件
- 建筑工程觀感質(zhì)量檢查評(píng)分方法
- T-CALC 007-2025 重癥監(jiān)護(hù)病房成人患者人文關(guān)懷規(guī)范
- (二診)成都市2022級(jí)2025屆高中畢業(yè)班第二次診斷性檢測(cè)英語(yǔ)試卷(含標(biāo)準(zhǔn)答案)
- 《血液透析基本知識(shí)》課件
- 《自動(dòng)配送車從業(yè)人員能力要求 第1部分:安全員》
評(píng)論
0/150
提交評(píng)論