計算機操作系統(tǒng)實驗指導書windows_第1頁
計算機操作系統(tǒng)實驗指導書windows_第2頁
計算機操作系統(tǒng)實驗指導書windows_第3頁
計算機操作系統(tǒng)實驗指導書windows_第4頁
計算機操作系統(tǒng)實驗指導書windows_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、操作系統(tǒng)原理實驗指導書計算機科學與技術系2010年9月目錄操作系統(tǒng)原理實驗教學大綱(修訂)1實驗考核方式與基本要求3實驗一進程控制描述與控制12實驗二并發(fā)與調度24實驗三存儲管理31實驗四設備管理40實驗五文件管理與系統(tǒng)安全44附錄實驗報告參考規(guī)范64操作系統(tǒng)管理實驗指導書操作系統(tǒng)原理實驗教學大綱(修訂)課程編號:0433314課程名稱:操作系統(tǒng)原理實驗學時:14一、本實驗課的性質、任務與目的操作系統(tǒng)作為計算機專業(yè)的一門專業(yè)基礎課,是計算機專業(yè)的核心課程之一,學好與否 直接關系到學生是否能更好地學習后續(xù)課程。通過本實驗課程的學習,使學生理解與掌握操 作系統(tǒng)設計所遵循的基本原理,基本方法,建立多

2、道程序設計環(huán)境下的并行程序設計的思維 方式。此外,操作系統(tǒng)用到的各種算法也是學生加強算法鍛煉的好機會,對日后從事系統(tǒng)開 發(fā)方面的工作有直接的借鑒作用。本實驗課程在操作系統(tǒng)原理課程教學中占有重要地位,目的是讓學生及時掌握和鞏固所 學的基本原理和基礎理論,加深理解。提高學生自適應能力,為將來使用和設計各類新的操 作系統(tǒng)打下良好的基礎。二、本實驗課所依據(jù)的課程基本理論計算機操作系統(tǒng),操作系統(tǒng)中所介紹的重要算法。三、實驗類型與要求序 號實驗內容內容提要實驗 要求實驗 時數(shù)實驗 回每 組 人 數(shù)所在實 驗室名 稱備 注一進程控制描述與控制操作系統(tǒng)界面、進程管理必修2驗證2系機房一并發(fā)與調度進程并發(fā)、進程

3、 狀態(tài)轉換必修2驗證2系機房三存儲管理內存空間分配 及虛擬存儲器必修2驗證2系機房四設備管理設備分配與回 收必修2驗證2系機房五文件管理與系統(tǒng)安全文件系統(tǒng)目錄 結構,文件操作 及操作系統(tǒng)安 全任選2驗證2系機房六操作系統(tǒng)功能模擬設計 實驗操作系統(tǒng)功能 模擬設計并實 現(xiàn)必修4設計3-4系機房四、每組人數(shù)與實驗學時數(shù)序號實驗內容實驗時數(shù)每組人數(shù)一進程控制描述與控制22一并發(fā)與調度22三存儲管理22四設備管理22五文件管理與系統(tǒng)安全22六操作系統(tǒng)功能模擬設計實驗43-4五、考核方式與評分辦法考核方式:在規(guī)定時間內,按要求設計相應的模擬系統(tǒng)并上機調試運行,寫出詳細的實 驗報告,在機上向教師演示自己設計

4、的模擬系統(tǒng)。評分辦法:視程序的質量、完成速度及實驗報告分別給予優(yōu)、良、中、及格、不及格等 成績。六、本實驗課配套教材或實驗指導書1周蘇,金海溶等編著,操作系統(tǒng)原理實驗,北京:科學出版社,2003七、實驗報告要求實驗題目、問題描述、算法說明、算法框圖、數(shù)據(jù)結構及符號說明、程序清單及運行結果。八、其它48教研室:計算機網(wǎng)絡執(zhí)筆人:鐘伯成系主任審核簽名:實驗考核方式與基本要求1)按要求設計相應的模擬系統(tǒng)并上機調試運行2)寫出詳細的實驗報告,實驗報告要求如下:(1)實驗題目。(2)程序中使用的數(shù)據(jù)結構及符號說明。(3)流程圖。(4)打印一份源程序并附上注釋。(5)打印程序運行時的初值和運行結果?;疽?/p>

5、求:3或4人為一小組,采取課內上機和業(yè)余上機相結合的方式進行,在規(guī)定時間內 每個小組以論文形式上交實驗(設計)結果并上機演示說明。實驗考核題目進程管理模擬PV操作同步機構,且用PV操作解決生產者一一消費者問題。銀行家算法模擬分頁式存儲管理中硬件的地址轉換和產生缺頁中斷。用先進先出(FIFO)頁面調度算法處理缺頁中斷。(六) 用最近最少用(LRU頁面調度算法處理缺頁中斷。(七)設計一個按優(yōu)先數(shù)調度算法實現(xiàn)處理器調度的進程。(八)設計一個按時間片輪轉法實現(xiàn)處理器調度的程序。(九)模擬實現(xiàn)一個簡單的固定(或可變)分區(qū)存儲管理系統(tǒng)(十)模擬實現(xiàn)單通路I/O系統(tǒng)中的設備分配程序。十一 模擬實現(xiàn)用位示圖法

6、管理文件存儲空間的分配與回收。實驗提示進程管理1 .實驗內容至少要有:創(chuàng)建新的進程;查看運行進程;換出某個進程;殺死運行進程以及進程之間 通信等功能。2 .實驗提小PCB結構通常包括以下信息:進程名,進程優(yōu)先數(shù),輪轉時間片,進程所占用的CPU時間,進程的狀態(tài),當前隊列指針等??筛鶕?jù)實驗的不同,PCB結構的內容可以作適當?shù)脑鰟h。例:實驗運行結果*進程演示系統(tǒng)*1 .創(chuàng)建新的進程2.查看運行進程3 .換出某個進程4.殺死運行進程5 .進程之間通信6.退出系統(tǒng)*請選擇(16)然后根據(jù)你選擇的不同,出現(xiàn)不同的結果。(二)第一題:模PV操作同步機卞藥,且用 PV操作解決生產者一一消費者問題。(三)第二題

7、:銀行家算法實驗提小第一題:在系統(tǒng)初始化時應把信號量 semaphore定義為某個類型,為簡單起見,在模 擬實驗中可把上述的 semaphore直接改成integer 。生產者一一消費者問題。假定有一個生產者和消費者,生產者每次生產一件產品,并把生產的產品存入共享緩沖器以 供消費者取走使用。消費者每次從緩沖器內取出一件產品去消費。禁止生產者將產品放入已 滿的緩沖器內,禁止消費者從空緩沖器內取產品。假定緩沖器內可同時存放10件產品。進程控制塊PCB在模擬實驗中,假設進程控制塊的結構如下圖。其中進程的狀態(tài)有:運行態(tài)、就緒態(tài)、等待態(tài)和完成態(tài)。當進程處于等待態(tài)時,在進程控制塊PCB中要說明進程等待原因

8、(在模擬實驗中進程等待原因為等待信號量si或S2);當進程處于等待態(tài)或就緒態(tài)時,PCB中保留了斷點信息,一旦進程再度占有處理器則就從斷點位置繼續(xù)運行;當進程處于完成狀態(tài),表示進 程執(zhí)行結束。處理器的模擬。計算機硬件提供了一組機器指令,處理器的主要職責是解釋執(zhí)行機器指令。為了模擬生產者和消費者進程的并發(fā)執(zhí)行,我們必須模擬一組指令和處理器職能。模擬的指令功能P執(zhí)行P操作原語V(s)執(zhí)行v操作原語putBIN:=product;IN:=(IN+1) mod 10GETX:=Bout;out:=(out+1) mod 10produce輸入一個字符放入C中consume打印或顯示x中的字符GOTO L

9、PC: LNOP空操作模擬的處理器指令模擬的一組指令見上圖,其中每條指令的功能由一個過程來實現(xiàn)。用變量PC來模擬“指令計數(shù)器”,假設模擬的指令長度為 1,每執(zhí)行一條模擬指令后,PC加1,指出下一條指令地址。使用模擬的指令,可把生產者和消費者進程的程序表示為下圖的形式。序號生產者程序消費者程序0produceP(S2)1P(Si)GET2PUTV(Si)3VS)consume4goto 0goto 0生產者和消費者程序定義兩個一維數(shù)組 PA0.4和SA0.4,每一個PAi存放生產者程序中的一條模擬指令執(zhí) 行的入口地址;每個 SAi存放消費者程序中的一條模擬指令執(zhí)行的入口地址。于是模擬處理器執(zhí)行一

10、條指令的過程為:取出PC之值,按PAPC或SAPC得模擬指令執(zhí)行的入口地址,將PC之值加1,轉向由入口地址確定的相應的過程執(zhí)行。第二題:編寫銀行家算法,要求對于書127頁給出的資源分配表,可以對輸入各種請求進行安全性判斷,最后給出安全序列或者不能分配的原因。(4) 第一題:模擬分頁式存儲管理中硬件的地址轉換和產生缺頁中斷。(5) 第二題:用先進先出(FIFO )頁面調度算法處理缺頁中斷。(6) 第三題:用最近最少用(LRU )頁面調度算法處理缺頁中斷。實驗提小第一題提示(1) 分頁式虛擬存儲系統(tǒng)是把作業(yè)信息的副本存放在磁盤上,當作業(yè)被選中時,可把作業(yè)的開始幾頁先裝入主存且啟動執(zhí)行。為此,在為作

11、業(yè)建立頁表時,應說明哪些頁已在 主存,哪些頁尚未裝入主存,頁表的格式為:頁號標志主存塊號在磁盤上的位置其中,標志 用來表不'對應頁是否已經裝入主存,標志位=1 ,則表不'該頁已經在主存,標志位=0,則表示該頁尚未裝入主存。主存塊號-用來表示已經裝入主存的頁所占的塊號。在磁盤上的位置-用來指出作業(yè)副本的每一頁被存放在磁盤上的位置。(2) 作業(yè)執(zhí)行時,指令中的邏輯地址指出了參加運算的操作存放的頁號和單元號,硬件的地址轉換機構按頁號查頁表,若該頁對應標志為“1”,則表示該頁已在主存,這時根據(jù)關系式:絕對地址=塊號X塊長+單元號計算出欲訪問的主存單元地址。如果塊長為2的哥次,則可把塊號

12、作為高地址部分,把單元號作為低地址部分,兩者拼接而成絕對地址。若訪問的頁對應標志為“0”,則表示該頁不在主存,這時硬件發(fā)“缺頁中斷”信號,由操作系統(tǒng)按該頁在磁盤上的位 置,把該頁信息從磁盤讀出裝入主存后再重新執(zhí)行這條指令。(3) 設計一個“地址轉換”程序來模擬硬件的地址轉換工作。當訪問的頁在主存時,則形 成絕對地址,但不去模擬指令的執(zhí)行, 而用輸出轉換后的地址來代替一條指令的執(zhí)行。 當訪問的頁不在主存時,則輸出“*該頁頁號”,表示產生了一次缺頁中斷。(4) 假定主存的每塊長度為 128個字節(jié);現(xiàn)有一個共七頁的作業(yè),其中第 0頁至第3頁已 經裝入主存,其余三頁尚未裝入主存;該作業(yè)的頁表為:015

13、011118012219013311021400225002360121如果作業(yè)依次執(zhí)行的指令序列為:操作頁號單元號操作頁號單元號+070移位4053+150+5023X215存1037存321取2078取056+4001一640存6084(5) 運行設計的地址轉換程序,顯示或打印運行結果。因僅模擬地址轉換,并不模擬指令的執(zhí)行,故可不考慮上述指令序列中的操作。第二題提示:(1) 在分頁式虛擬存儲系統(tǒng)中,當硬件發(fā)出“缺頁中斷”后,引出操作系統(tǒng)來處理這個中斷事件。如果主存中已經沒有空閑塊,則可用 FIFO頁面調度算法把該作業(yè)中最先進 入主存的一頁調出,存放到磁盤上,然后再把當前要訪問的頁裝入該塊。

14、調出和裝入 后都要修改頁表中對應頁的標志。(2) FIFO頁面調度算法總是淘汰該作業(yè)中最先進入主存的那一頁,因此可以用一個數(shù)組 來表示該作業(yè)已在主存的頁面。假定作業(yè)被選中時,把開始的m個頁面裝入主存,則數(shù)組的元素可定為 m個。例如:P0, P1, ., Pm-1其中每一個Pi (i=0, 1, ., m-1)表示一個在主存中的頁面號。它們的初值為:P0:=0 , P1:=1 , ., Pm-1:=m-1用一指針k指示當要裝入新頁時,應淘汰的頁在數(shù)組中的位置,k的初值為“ 0”。當產生缺頁中斷后,操作系統(tǒng)選擇Pk所指出的頁面調出,然后執(zhí)行:Pk:二要裝入頁的頁號k:=(k+1) mod m再由裝

15、入程序把要訪問的一頁信息裝入到主存中。重新啟動剛才那條指令執(zhí)行。(3) 編制一個FIFO頁面調度程序,為了提高系統(tǒng)效率,如果應淘汰的頁在執(zhí)行中沒有修改過,則可不必把該頁調出(因在磁盤上已有副本)而直接裝入一個新頁將其覆蓋。因此在頁表中增加是否修改過的標志,為“1”表示修改過,為“ 0”表示未修改過,格式為:頁號標志主存塊號修改標志在磁盤上的位置由于是模擬調度算法,所以,不實際啟動輸出一頁和裝入一頁的程序,而用輸出調出 的頁號和裝入的頁號來代替一次調出和裝入的過程。把第一題中程序稍作修改,與本題結合起來,F(xiàn)IFO頁面調度模擬算法如圖 2-2。(4) 磁盤上,在磁盤上的存放地址以及已裝入主存的頁和

16、作業(yè)依次執(zhí)行的指令序列都同第一題中(4)所示。于是增加了 “修改標志”后的初始頁表為:頁號標志主存塊號修改標志在磁盤上的位置0150011118001221900133110021400022500023600121按依次執(zhí)行的指令序列,運行你所設計的程序,顯示或打印每次調出和裝入的頁號, 以及執(zhí)行了最后一條指令后的數(shù)組P的值。(5) 為了檢查程序的正確性,可再任意確定一組指令序列,運行設計的程序,核對執(zhí)行的 結果。第三題:提不(1)在分頁式虛擬存儲系統(tǒng)中,當硬件發(fā)出“缺頁中斷”后,引出操作系統(tǒng)來處理這個中斷事件。如果主存中已經沒有空閑塊,則可用 LRU頁面調度算法把該作業(yè)中最先進入主存的 一

17、頁調出,存放到磁盤上,然后再把當前要訪問的頁裝入該塊。調出和裝入后都要修改頁表中對應頁的標志。(2) LRU頁面調度算法總是淘汰該作業(yè)中距現(xiàn)在最久沒有訪問過的那一頁,因此可以用一個 數(shù)組來表示該作業(yè)已在主存的頁面。數(shù)組中的第一個元素總是指出當前剛訪問的頁號,因此最久沒被訪問的頁總是由最后一個元素指出。如果主存中只有四塊空閑塊且執(zhí)行第一題提示(4)假設的指令序列,采用LRU頁面調度算法,那么在主存中的頁面變化情況如下:306451246230645134123064512012306451編制一個LRU頁面調度程序,為了提高系統(tǒng)效率,如果應淘汰的頁在執(zhí)行中沒有修改過, 則可不必把該頁調出。參看第

18、二題中提示 (3)。模擬調度算法不實際啟動輸出一頁和裝入 一頁的程序,而用輸出調出的頁號和裝入的頁號來代替。(3)按第一題中提示(4)的要求,建立一張初始頁表,表中為每一頁增加“修改標志”位(參考第二題中提示(4)o然后按依次執(zhí)行的指令序列,運行你所設計的程序,顯示或打印 每次調出和裝入的頁號,以及執(zhí)行了最后一條指令后的數(shù)組中的值。(4)為了檢查程序的正確性, 可再任意確定一組指令序列,運行設計的程序,核對執(zhí)行的結果。(七)第一題:設計一個按優(yōu)先數(shù)調度算法實現(xiàn)處理器調度的進程。(八)第二題:設計一個按時間片輪轉法實現(xiàn)處理器調度的程序。實驗提小第一題提示:(1) 假定系統(tǒng)有五個進程,每一個進程用

19、一個進程控制塊PCB來代表。進程控制塊的格式為:其中,進程名-作為進程的標識,假設五個進程的進程名分別是Pi, P2, P3, P4, P5。指針-按優(yōu)先數(shù)的大小把五個進程連成隊列,用指針指出下一個進程的進程控制塊 首地址,最后一個進程中的指針為“0”。要求運彳T時間-假設進程需要運行的單位時間數(shù)。優(yōu)先數(shù)-賦予進程的優(yōu)先數(shù),調度時總是選取優(yōu)先數(shù)大的進程先執(zhí)行。狀態(tài)-可假設有兩種狀態(tài),“就緒”狀態(tài)和“結束”狀態(tài),五個進程的初始狀態(tài)都為 “就緒”狀態(tài),用“ R”表示,當一個進程運行結束后,它的狀態(tài)變?yōu)椤敖Y束” 用 E 表不。(2) 在每次運行你所設計的處理器調度程序之前,為每個進程任意確定它的“優(yōu)

20、先數(shù)”和 “要求運行時間”。為了調度方便,把五個進程按給定的優(yōu)先數(shù)從大到小連成隊列,用一單元指出隊首進程,用 指針指出隊列的連接情況。(3) 處理器調度總是選隊首進程運行。采用動態(tài)改變優(yōu)先數(shù)的辦法,進程每運行一次優(yōu)先 數(shù)就減“1”。由于本實驗是模擬處理器調度,所以,對被選中的進程并不實際的啟動 運行,而是執(zhí)行:優(yōu)先數(shù)1要求運行時間1 來模擬進程的一次運行。提醒注意的是:在實際的系統(tǒng)中,當一個進程被選中運行時,必須恢復進程的現(xiàn)場, 它占有處理器運行,直到出現(xiàn)等待事件或運行結束。在這里省去了這些工作。(4) 進程運行一次后,若要求運行時間w0,則再將它加入隊列(按優(yōu)先數(shù)大小插入,且置隊首標志);若

21、要求運行時間=0,則把它的狀態(tài)修改為“結束”,且退出隊列。(5) 若“就緒”狀態(tài)的進程隊列不為空,則重復上面(4)和(5)的步驟,直到所有進程都成為“結束”狀態(tài)。(6) 在所設計的程序中應有顯示或打印語句,能顯示或打印每次被選中進程的進程名以及運行一次后進稱對列的變化。為五個進程任意確定一組“優(yōu)先數(shù)”和“要求運行時間”,啟動所設計的處理器調度程序,顯示或打印逐次被選中進程的進程名以及進程控制塊的動態(tài)變化過程。第二題提示(1) 假定系統(tǒng)有五個進程,每一個進程用一個進程控制塊PCB來代表。進程控制塊的格式為:其中,進程名-作為進程的標識,假設五個進程的進程名分別是Q1, Q2, Q3, Q4, Q

22、5。指針-進程按順序排成循環(huán)隊列,用指針指出下一個進程的進程控制塊首地址,最后一個進程中的指針指出第一個進程的進程控制塊首地址。要求運彳T時間-假設進程需要運行的單位時間數(shù)。已運行時間-假設進程已經運行的單位時間數(shù),初始值為“0”。狀態(tài)-有兩種狀態(tài),“就緒”狀態(tài)和“結束”狀態(tài),初始狀態(tài)都為“就緒” ,用“ R” 表示,當一個進程運行結束后,它的狀態(tài)變?yōu)椤敖Y束”,用“E”表示。(2) 每次運行你所設計的處理器調度程序之前,為每個進程任意確定它的“要求運行時間”。把五個進程按順序排成循環(huán)隊列,用指針指出隊列連接情況。另用一標志單元記錄輪到運行 的進程。(3) 處理器調度總是選擇標志單元指示的進程運

23、行。由于本實驗是模擬處理器調度的功能,所以,對被選中的進程并不實際啟動運行,而是執(zhí)行:已運行時間一1來模擬進程的一次運行,表示進程已經運行過一個單位的時間。必須置上該進程可以運行的時 直到出現(xiàn)等待事件或運行滿一 +1”來表示進程已經運行滿一請注意:在實際的系統(tǒng)中,當一個進程被選中運行時, 間片值,以及恢復進程的現(xiàn)場,讓它占有處理器運行, 個時間片。在這里省去了這些工作,僅用“已運行時間 個時間片。(4) 進程運行一次后,應把該進程的進程控制塊中的指針值送到標志單元,以指示下一個 輪到運行的進程。同時,應判斷該進程的要求運行時間與已運行時間,若該進程要求 運行時間w已運行時間,則表示它尚未執(zhí)行結

24、束,應待到下一輪時再運行。若該進程 的要求運行時間=已運行時間,則表示它已經執(zhí)行結束,應把它的狀態(tài)修改為“結束”(E)且退出隊列。此時,應把該進程的進程控制塊中的指針值送到前面一個進程的 指針位置。(5) 若“就緒”狀態(tài)的進程隊列不為空,則重復上面(4)和(5)的步驟,直到所有進程都成為“結束”狀態(tài)。(6) 在所設計的稱序中應有顯示或打印語句,能顯示或打印每次被選中進程的進程名以及運行一次后進稱對列的變化。(7) 為五個進程任意確定一組“要求運行時間”,啟動所設計的處理器調度程序,顯示或打印逐次被選中進程的進程名以及進程控制塊的動態(tài)變化過程。(九)模擬實現(xiàn)一個簡單的固定(或可變)分區(qū)存儲管理系

25、統(tǒng)實驗提小本實驗要求完成如下任務:(1)建立相關的數(shù)據(jù)結構,作業(yè)控制塊、已分配分區(qū)及未分配分區(qū)(2)實現(xiàn)一個分區(qū)分配算法,如最先適應分配算法、最優(yōu)或最壞適應分配算法(3)實現(xiàn)一個分區(qū)回收算法(4)給定一批作業(yè)/進程,選擇一個分配或回收算法,實現(xiàn)分區(qū)存儲的模擬管理。(十)編寫單通路I/O系統(tǒng)中的設備分配程序。實驗提小(1)設計:系統(tǒng)設備表SDT控制器表COCT設備控制表DCT通道表CHCT邏輯設備表LUT(2)給出各表目初態(tài)(3)回答信息:能夠分配時,給出設備號 、控制器號、通道號, 否則,給出無法分配的回答,插入相應的等待隊列。(十一)編寫用位示圖法管理文件存儲空間的分配與回收程序。實驗提小(

26、1)給出位示圖初態(tài)(2)程序人口參數(shù):分配時:參數(shù)為文件名及需要分配的塊數(shù),回收時:參數(shù)為文件名。(3)回答信息:分配時:能夠分配時,給出文件名和分配的具體塊號 否則,給出無法分配的信息。顯示位示圖?;厥諘r:給出回收的具體塊號。顯示位示圖。實驗一進程控制描述與控制1 Windows ”任務管理器”的進程管理背景知識Windows 2000的任務管理器提供了用戶計算機上正在運行的程序和進程的相關信息,也 顯示了最常用的度量進程性能的單位。使用任務管理器,可以打開監(jiān)視計算機性能的關鍵指 示器,快速查看正在運行的程序的狀態(tài),或者終止已停止響應的程序。也可以使用多個參數(shù) 評估正在運行的進程的活動,以及

27、查看CPU和內存使用情況的圖形和數(shù)據(jù)。其中:1) “應用程序”選項卡顯示正在運行程序的狀態(tài),用戶能夠結束、切換或者啟動程序。2) “進程”選項卡顯示正在運行的進程信息。例如,可以顯示關于 CPU和內存使用情 況、頁面錯誤、句柄計數(shù)以及許多其他參數(shù)的信息。3) “性能”選項卡顯示計算機動態(tài)性能,包括 CPU和內存使用情況的圖表,正在運行 的句柄、線程和進程的總數(shù),物理、核心和認可的內存總數(shù)(KB)等。實驗目的通過在Windows任務管理器中對程序進程進行響應的管理操作,熟悉操作系統(tǒng)進程管理的概念,學習觀察操作系統(tǒng)運行的動態(tài)性能。工具/準備工作在開始本實驗之前,請回顧教科書的相關內容。需要準備一臺

28、運行 Windows 2000 Professional操作系統(tǒng)的計算機。實驗內容與步驟1 .使用任務管理器終止進程2 .顯示其他進程計數(shù)器3 .更改正在運行的程序的優(yōu)先級啟動并進入 Windows環(huán)境,單擊Ctrl + Alt + Del鍵,或者右鍵單擊任務欄,在快捷菜單 中單擊“任務管理器”命令,打開“任務管理器”窗口。在本次實驗中,你使用的操作系統(tǒng)版本是:當前機器中由你打開,正在運行的應用程序有:1) 2) 3) 4) 5) Windows "任務管理器”的窗口由 個選項卡組成,分別是:1) 2) 3) 當前“進程”選項卡顯示的欄目分別是(可移動窗口下方的游標/箭頭,或使窗口最

29、大化進行觀察):1) 2) 3) 4) 5) 6) 7) 8) 1 .使用任務管理器終止進程步驟1:單擊“進程”選項卡,一共顯示了 個進程。請試著區(qū)分一下,其中:系統(tǒng)(SYSTEM)進程有 個,填入表3-1中。表3-1實驗記錄映像名稱用戶名CPU內存使用服務(SERVICE)進程有 個,填入表 3-2中。表3-2實驗記錄映像名稱用戶名CPU內存使用用戶進程有 個,填入表3-3中。表3-3 實驗記錄映像名稱用戶名CPU內存使用提示:在 Windows XP的“任務管理器”中,“進程”選項卡增加了一個“用戶名”欄目,其中區(qū)分了SYSTEM、NETWORK SERVICE、LOCAL SERVICE

30、和用戶的不同進程類別。步驟2:單擊要終止的進程,然后單擊“結束進程”按鈕。注意:終止進程時要小心。終止進程有可能導致不希望發(fā)生的結果,包括數(shù)據(jù)丟失和系統(tǒng) 不穩(wěn)定等。因為在被終止前,進程將沒有機會保存其狀態(tài)和數(shù)據(jù)。如果結束應用程序,您將丟 失未保存的數(shù)據(jù)。如果結束系統(tǒng)服務,系統(tǒng)的某些部分可能無法正常工作。終止進程,將結束它直接或間接創(chuàng)建的所有子進程。例如,如果終止了電子郵件程序(如Outlook 98)的進程樹,那么同時也終止了相關的進程, 如MAPI后臺處理程序 mapisp32.exe。請將終止某進程后的操作結果與原記錄數(shù)據(jù)對比,發(fā)生了什么:2 .顯示其他進程記數(shù)器在“進程”選項卡上單擊“查

31、看”菜單,然后單擊“選擇列”命令。單擊要增加顯示為 列標題的項目,然后單擊“確定”。為對進程列表進行排序,可在“進程”選項卡上單擊要根據(jù)其進行排序的列標題。而為 了要反轉排序順序,可再次單擊列標題。經過調整,“進程”選項卡現(xiàn)在顯示的項目分別是:通過對“查看”菜單的選擇操作,可以在“任務管理器”中更改顯示選項:在“應用程序”選項卡上,可以按詳細信息、大圖標或小圖標查看。在“性能”選項卡上,可以更改CPU記錄圖,并顯示內核時間。“顯示內核時間”選項在“CPU使用”和“ CPU使用記錄”圖表上添加紅線。紅線指示內核操作占用的 CPU資 源數(shù)量。3.更改正在運行的程序的優(yōu)先級要查看正在運行的程序的優(yōu)先

32、級,可單擊“進程”選項卡,單擊“查看”菜單,單擊“選擇列”-“基本優(yōu)先級”命令,然后單擊“確定”按鈕。為更改正在運行的程序的優(yōu)先級,可在“進程”選項卡上右鍵單擊您要更改的程序,指向“設置優(yōu)先級”,然后單擊所需的選項。更改進程的優(yōu)先級可以使其運行更快或更慢(取決于是提升還是降低了優(yōu)先級),但也可能對其他進程的性能有相反的影響。記錄操作后所體會的結果:在多處理器計算機上,用戶還可以給處理器指派進程,將程序或進程的執(zhí)行限制在選定 的處理器上,但這有可能導致總體性能的下降。2Windows 2000進程的"生”背景知識1 .創(chuàng)建進程2 .正在運行的進程3 .終止進程Windows所創(chuàng)建的每個

33、進程都從調用CreateProcess() API函數(shù)開始,該函數(shù)的任務是在對象管理器子系統(tǒng)內初始化進程對象。每一進程都以調用ExitProcess()或TerminateProcess() API函數(shù)終止。通常應用程序的框架負責調用ExitProcess()函數(shù)。對于 C+運行庫來說,這一調用發(fā)生在應用程序的main()函數(shù)返回之后。1 .創(chuàng)建進程CreateProcess()調用的核心參數(shù)是可執(zhí)行文件運行時的文件名及其命令行。表 3-4詳細 地列出了每個參數(shù)的類型和名稱。表3-4 CreateProcess() 函數(shù)的參數(shù)參數(shù)名稱使用目的LPCTSTR lpApplivationName全

34、部或部分地指明包括可執(zhí)行代碼的EXE文件的文件名LPCTSTR lpCommandLine向可執(zhí)行文件發(fā)送的參數(shù)LPSECURIITY_A TTRIBUTESlpProcessAttributes返回進程句柄的安全屬性。主要指明這一句柄是否應該由其他子進程所繼承LPSECURIITY_A TTRIBUTES lpThreadAttributes返回進程的主線程的句柄的安全屬性BOOL bInheritHandle一種標志,告訴系統(tǒng)允許新進程繼承創(chuàng)建者進程的句柄DWORD dwCreationFlage特殊的創(chuàng)建標志(如CREATE_SUSPENDED)的位標記LPVOID lpEnvironm

35、ent向新進程發(fā)送的一套環(huán)境變量;如為null值則發(fā)送調用者環(huán)境LPCTSTR lpCurrentDirectory新進程的啟動目錄STARTUPINFO lpStartupInfoSTARTUPINFO結構,包括新進程的輸入和輸出配置的詳情LPPROCESS_INFORMA TION lpProcessInformation調用的結果塊;發(fā)送新應用程序的進程和主線程的句柄和ID可以指定第一個參數(shù),即應用程序的名稱,其中包括相對于當前進程的當前目錄的全路徑或者利用搜索方法找到的路徑;IpCommandLine參數(shù)允許調用者向新應用程序發(fā)送數(shù)據(jù);接下來的三個參數(shù)與進程和它的主線程以及返回的指向該

36、對象的句柄的安全性有關。然后是標志參數(shù),用以在 dwCreationFlags參數(shù)中指明系統(tǒng)應該給予新進程什么行為。經常使用的標志是CREATE_SUSPNDED ,告訴主線程立刻暫停。當準備好時,應該使用ResumeThread() API來啟動進程。另一個常用的標志是 CREATE_NEW_CONSOLE,告訴新進 程啟動自己的控制臺窗口,而不是利用父窗口。這一參數(shù)還允許設置進林的優(yōu)先級,用以向 系統(tǒng)指明,相對于系統(tǒng)中所有其他的活動進程來說,給此進程多少CPU時間。接著是CreateProcess()函數(shù)調用所需要的三個通常使用缺省值的參數(shù)。第一個參數(shù)是©Environment參

37、數(shù),指明為新進程提供的環(huán)境;第二個參數(shù)是IpCurrentDirectory ,可用于向主創(chuàng)進程發(fā)送與缺省目錄不同的新進程使用的特殊的當前目錄;第三個參數(shù)是 STARTUPINFO數(shù)據(jù)結構所必需的,用于在必要時指明新應用程序的主窗口的外觀。CreateProcess()的最后一個參數(shù)是用于新進程對象及其主線程的句柄和ID的返回值緩沖區(qū)。以PROCESS_INFORMATION 結構中返回的句柄調用 CloseHandle() API函數(shù)是重要的, 因為如果不將這些前柄關閉的話,有可能危及主創(chuàng)進程終止之前的任何未釋放的資源。2 .正在運行的進程如果一個進程擁有至少一個執(zhí)行線程,則為正在系統(tǒng)中運行

38、的進程。通常,這種進程使用主線程來指示它的存在。當主線程結束時,調用ExitProcess() API函數(shù),通知系統(tǒng)終止它所 擁有的所有正在運行、準備運行或正在掛起的其他線程。當進程正在運行時,可以查看它的 許多特性,其中少數(shù)特性也允許加以修改。首先可查看的進程特性是系統(tǒng)進程標識符(PID),可利用GetCurrentProcessId() API函數(shù)來查看,與 GetCurrentProcess()相似,對該函數(shù)的調用不能失敗,但返回的PID在整個系統(tǒng)中都可使用。其 他的可顯示當 前進程信息的 API函 數(shù)還有 GetStartupInfo()和 GetProcessShutdownPara

39、meters(),可給出進程存活期內的配置詳情。通常,一個進程需要它的運行期環(huán)境的信息。例如 API函數(shù) GetModuleFileName()和 GetCommandLine(),可以給出用在CreateProcess()中的參數(shù)以啟動應用程序。在創(chuàng)建應用程 序時可使用的另一個 API函數(shù)是IsDebuggerPresent()。可利用API函數(shù)GetGuiResources()來查看進程的 GUI資源。此函數(shù)既可返回指定進程 中的打開的GUI對象的數(shù)目,也可返回指定進程中打開的USER對象的數(shù)目。進程的其他性能 信息 可通過 GetProcessIoCounters()、 GetProce

40、ssPriorityBoost() 、GetProcessTimes()和 GetProcessWorkingSetSize() API得到。以上這幾個 API函數(shù)都只需要具有 PROCESS_QUERY_INFORMA TION訪問權限的指向所感興趣進程的句柄。另一而T用于進程信息查詢的API函數(shù)是GetProcessVersion()。此函數(shù)只需感興趣進程的PID (進程標識號)。本實驗程序清單 3-6中列出了這一 API函數(shù)與GetVersionEx()的共同 作用,可確定運行進程的系統(tǒng)的版本號。3 .終止進程所有進程都是以調用ExitProcess()或者TerminateProces

41、s()函數(shù)結束的。但最好使用前者而不要使用后者,因為進程是在完成了它的所有的關閉“職責”之后以正常的終止方式來調 用前者的。而外部進程通常調用后者即突然終止進程的進行,由于關閉時的途徑不太正常, 有可能引起錯誤的行為。TerminateProcess() API函數(shù)只要打開帶有 PROCESS_TERMINA TE訪問權的進程對象, 就可以終止進程,并向系統(tǒng)返回指定的代碼。這是一種“野蠻”的終止進程的方式,但是有 時卻是需要的。如果開發(fā)人員確實有機會來設計“謀殺” (終止別的進程的進程)和“受害”進程 (被終 止的進程)時,應該創(chuàng)建一個進程間通訊的內核對象一一如一個互斥程序一一這樣一來,“受害

42、”進程只在等待或周期性地測試它是否應該終止。實驗目的1)通過創(chuàng)建進程、觀察正在運行的進程和終止進程的程序設計和調試操作,進一步熟悉 操作系統(tǒng)的進程概念,理解Windows 2000進程的“一生”。2)通過閱讀和分析實驗程序,學習創(chuàng)建進程、觀察進程和終止進程的程序設計方法。工具/準備工作在開始本實驗之前,請回顧教科書的相關內容。需要做以下準備:1 ) 一臺運行 Windows 2000 Professional操作系統(tǒng)的計算機。2)計算機中需安裝 Visual C+ 6.0專業(yè)版或企業(yè)版。實驗內容與步驟2 .創(chuàng)建進程3 .正在運行的進程4 .終止進程請回答:Windows所創(chuàng)建的每個進程都是以調

43、用 API函數(shù)開始 和以調用 或 API函數(shù)終止。1.創(chuàng)建進程本實驗顯示了創(chuàng)建子進程的基本框架。該程序只是再一次地啟動自身,顯示它的系統(tǒng)進 程ID和它在進程列表中的位置。步驟 1 :登錄進入 Windows 2000 Professional。步驟 2:在"開始”菜單中單擊"程序"- "Microsoft Visual Studio 6.0 " -"Microsoft Visual C+ 6.0” 命令,進入 Visual C+ 窗口。步驟3:在工具欄單擊“打開”按鈕,在“打開”對話框中找到并打開實驗源程序3-5.cpp。清單3-5

44、創(chuàng)建子進程/ proccreate 項目 # include <windows.h> # include <iostream> # include <stdio.h>/創(chuàng)建傳遞過來的進程的克隆過程并賦于其ID值void StartClone(int nCloneID)/提取用于當前可執(zhí)行文件的文件名 TCHAR szFilenameMAX_PATH;:GetModuleFileName(NULL, szFilename, MAX_PATH);/格式化用于子進程的命令行并通知其EXE文件名和克隆IDTCHAR szCmdLineMAX_PA TH;:sprin

45、tf(szCmdLine, " %s " %d" , szFilename, nClonelD);/用于子進程的 STARTUPINFO 結構STARTUPINFO si;:ZeroMemory(reinterpret_cast <void*> (&si) , sizeof(si);si.cb = sizeof(si) ;/必須是本結構的大小/返回的用于子進程的進程信息PROCESS_INFORMA TION pi;/利用同樣的可執(zhí)行文件和命令行創(chuàng)建進程,并賦于其子進程的性質BOOL bCreateOK = : CreateProcess(sz

46、Filename,/產生這個EXE的應用程序的名稱szCmdLine,/告訴其行為像一個子進程的標志NULL,/缺省的進程安全性NULL,/缺省的線程安全性FALSE,/不繼承句柄CREATE_NEW_CONSOLE,/使用新的控制臺NULL,/新的環(huán)境NULL,/當前目錄&si,/啟動信息&pi);返回的進程信息/對子進程釋放引用if (bCreateOK):CloseHandle(pi.hProcess);:CloseHandle(pi.hThread);int main(int argc, char* argv口)/確定進程在列表中的位置int nClone(0);if

47、(argc > 1)/從第二個參數(shù)中提取克隆ID二 sscanf(argv1 ,“ %d' , &nClone);/顯示進程位置std 二 cout <<" Process ID:" << 二 GetCurrentProcessId()<< ", Clone ID:" << nClone<< std : endl;/檢查是否有創(chuàng)建子進程的需要const int c_nCloneMax = 25;if (nClone < C_nCloneMax)一/發(fā)送新進程的命令行和

48、克隆號StartClone(+nClone);/在終止之前暫停一下(1/2秒):Sleep(500);return 0;步驟4:單擊“Build”菜單中的"Compile 3-5.cpp ”命令,系統(tǒng)顯示:This build command requires an active project workspace. Would you like to create a default project workspace ?(build命令需要一個活動的項目工作空間。你是否希望建立一個缺省的項目工作空間?)單擊“是”按鈕確認。系統(tǒng)對3-5.cpp進行編譯。步驟5:編譯完成后,單擊“

49、Build”菜單中的“ Build 3-5.exe”命令,建立3-5.exe可執(zhí) 行文件。操作能否正常進行?如果不行,則可能的原因是什么?步驟6:在工具欄單擊“ExecuteProgram”(執(zhí)行程序)按鈕,或者按 Ctrl + F5鍵,或者 單擊"Build "菜單中的"Execute 3-5.exe”命令,執(zhí)行 3-5.exe程序。步驟7:按Ctrl + S鍵可暫停程序白執(zhí)行,按 Ctrl + Pause (Break)鍵可終止程序的執(zhí)行。清單3-5展示的是一個簡單的使用CreateProcess() API函數(shù)的例子。首先形成簡單的命令行,提供當前的EXE文

50、件的指定文件名和代表生成克隆進程的號碼。大多數(shù)參數(shù)都可取缺省 值,但是創(chuàng)建標志參數(shù)使用了:標志,指示新進程分配它自己的控制臺,這使得運行示例程序時,在任務欄上產生許多活動 標記。然后該克隆進程的創(chuàng)建方法關閉傳遞過來的句柄并返回main()函數(shù)。在關閉程序之前,每一進程的執(zhí)行主線程暫停一下,以便讓用戶看到其中的至少一個窗口。CreateProcess()函數(shù)有 個核心參數(shù)?本實驗程序中設置的各個參數(shù)的值是:g.h.程序運行時屏幕顯示的信息是:提示:部分程序在 Visual C+環(huán)境完成編譯、鏈接之后,還可以在Windows 2000的“命令提示符”狀態(tài)下嘗試執(zhí)行該程序,看看與在可視化界面下運行的

51、結果有沒有不同?為什么?2.正在運行的進程本實驗的程序中列出了用于進程信息查詢的 API函數(shù) GetProcessVersion()與 GetVersionEx()的共同作用,可確定運行進程的操作系統(tǒng)的版本號。步驟8:在Visual C+窗口的工具欄中單擊“打開”按鈕,在“打開”對話框中找到并打開實驗源程序3-6.cpp。清單3-6使用進程和操作系統(tǒng)的版本信息/ version 項目# include <windows.h># include <iostream>/利用進程和操作系統(tǒng)的版本信息的簡單示例void main()/提取這個進程的ID號DWORD dwIdTh

52、is = : GetCurrentProcessId();/獲得這一進程和報告所需白版本,也可以發(fā)送。以便指明這一進程DWORD dwVerReq = : GetProcessVersion(dwIdThis);WORD wMajorReq = (WORD) dwVerReq > 16);WORD wMinorReq = (WORD) dwVerReq & 0xffff);std 二 cout <<"Process ID:" << dwIdThis# < ", requires OS:aj<FRwM<<

53、 wMinorReq << std 二 endl ;/設置版本信息的數(shù)據(jù)結構,以便保存操作系統(tǒng)的版本信息OSVERSIONINFOEX osvix;:ZeroMemory(&osvix, sizeof(osvix);osvix.dwOSVersionInfoSize = sizeof(osvix);/提取版本信息和報告:GetVersionEx(reinterpret_cast < LPOSVERSIONINFO > (&osvix);std : cout <<" Running on OS:" << osvix.dwMajorVersion <<”.'# < osvix.dwMinorVersion << std : endl;/如果是NTS (Windows 2000)系統(tǒng),則提高其優(yōu)先權if (osvix.dwP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論