計算機操作系統(tǒng)實驗講義(共34頁)_第1頁
計算機操作系統(tǒng)實驗講義(共34頁)_第2頁
計算機操作系統(tǒng)實驗講義(共34頁)_第3頁
計算機操作系統(tǒng)實驗講義(共34頁)_第4頁
計算機操作系統(tǒng)實驗講義(共34頁)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上計算機操作系統(tǒng)實驗指導書曲阜師范大學計算機學院內(nèi)容簡介    操作系統(tǒng)是計算機教學中最重要的環(huán)節(jié)之一,也是計算機專業(yè)學生的一門重要的專業(yè)課程。操作系統(tǒng)質(zhì)量的好壞,直接影響整個計算機系統(tǒng)的性能和用戶對計算機的使用。一個精心設(shè)計的操作系統(tǒng)能極大地擴充計算機系統(tǒng)的功能,充分發(fā)揮系統(tǒng)中各種設(shè)備的使用效率,提高系統(tǒng)工作的可靠性。由于操作系統(tǒng)涉及計算機系統(tǒng)中各種軟硬件資源的管理,內(nèi)容比較繁瑣,具有很強的實踐性。要學好這門課程,必須把理論與實踐緊密結(jié)合,才能取得較好的學習效果。培養(yǎng)計算機專業(yè)的學生的系統(tǒng)程序設(shè)計能力,是操作系統(tǒng)課程的一個非常重

2、要的環(huán)節(jié)。通過操作系統(tǒng)上機實驗,可以培養(yǎng)學生程序設(shè)計的方法和技巧,提高學生編制清晰、合理、可讀性好的系統(tǒng)程序的能力,加深對操作系統(tǒng)課程的理解。使學生更好地掌握操作系統(tǒng)的基本概念、基本原理、及基本功能,具有分析實際操作系統(tǒng)、設(shè)計、構(gòu)造和開發(fā)現(xiàn)代操作系統(tǒng)的基本能力。 本書通過操作系統(tǒng)編程接口,提供一些編程指導,以此加深學生對操作系統(tǒng)工作原理的領(lǐng)會和對操作系統(tǒng)實現(xiàn)方法的理解,并且使學生在操作系統(tǒng)層面的程序設(shè)計得到基本的訓練。    本書提供了操作系統(tǒng)的安裝與使用、生產(chǎn)者和消費者的問題、銀行家調(diào)度算法、操作系統(tǒng)內(nèi)存結(jié)構(gòu)、簡單文件系統(tǒng)的實現(xiàn)以及操作系統(tǒng)構(gòu)成實驗等6

3、個實驗。    本書的使用對象是曲阜師范大學計算機科學與技術(shù)專業(yè)(本科)的學生,也可作為普通高等院校操作系統(tǒng)實驗教學的指導書。實驗一 操作系統(tǒng)的安裝與使用1實驗目的(1)鞏固課程中講授的WINDOWS 2000的使用知識,提高學生的WINDOWS 2000、WINDOWS XP或WINDOWS SEVER 2003等操作系統(tǒng)的實戰(zhàn)演練水平。(2)熟悉Windows 2000等操作系統(tǒng)系統(tǒng)的定制安裝過程,明確各安裝部件的作用。要求學生掌握圖形用戶接口元素和圖形用戶接口元素的基本操作;熟悉控制面板中各組件的作用及設(shè)置;能夠了解Windows系統(tǒng)對各種軟件資源

4、和硬件資源管理的策略。(3)結(jié)合教材緒論,讓學生對WINDOWS系統(tǒng)進程管理、處理機的調(diào)度與死鎖、存儲器管理、設(shè)備管理、文件管理以及系統(tǒng)接口有一個感性的認識并熟悉相關(guān)操作。2實驗預備知識(1)閱讀教材第一章(操作系統(tǒng)引論),熟悉操作系統(tǒng)的目標、作用和層次;了解操作系統(tǒng)的發(fā)展過程;熟悉操作系統(tǒng)實現(xiàn)的功能(存儲器管理功能、處理機管理功能、設(shè)備管理功能、文件管理功能以及用戶接口);了解操作系統(tǒng)的發(fā)展的歷史和未來的發(fā)展趨勢。(2)完成一本W(wǎng)INDOWS操作系統(tǒng)技術(shù)書籍的閱讀(根據(jù)個人情況任選)。(3)學習微軟認證(MCSE)中有關(guān)WINDOWS 2000 操作系統(tǒng)的知識(通過課堂補充教授、閱讀有關(guān)書籍

5、或網(wǎng)上資料)。3實驗環(huán)境(1)PC計算機;(2)WINDOWS 2000、WINDOWS XP或WINDOWS SEVER 2003等操作系統(tǒng)的安裝盤。4實驗時間:2個機時。5實驗內(nèi)容 (1)了解安裝WINDOWS 2000(或WINDOWS XP、 WINDOWS SEVER 2003)的硬件需求;熟悉安裝過程。熟悉安裝過程中各種組件的選擇;設(shè)置操作系統(tǒng)雙重啟動;熟悉各種物理設(shè)備驅(qū)動程序的安裝。(2)熟悉WINDOWS 2000的用戶界面。重點掌握各類操作系統(tǒng)的各類用戶接口;掌握資源管理器的使用。(3)掌握對操作系統(tǒng)的配置和維護,掌握控制面板的使用。掌握安裝和刪除硬件設(shè)備的方法,熟練對打印機

6、、鼠標、鍵盤、網(wǎng)卡、顯示卡、聲卡等硬件設(shè)備進行配置。(4)了解網(wǎng)絡的配置和網(wǎng)絡協(xié)議的原理和設(shè)置,熟練對計算機進行網(wǎng)絡設(shè)置。(5)熟練掌握WINDOWS 2000的管理工具。利用“計算機管理”選項對計算機進行設(shè)置?!坝嬎銠C管理工具”為用戶提供六種系統(tǒng)工具:“事件查看器”,“系統(tǒng)信息”、“性能日志和警報”,“共享文件夾”、設(shè)備管理器“和”本地用戶和組。(6)了解WINDOWS 2000活動目錄。目錄是一個存儲對象信息的分層結(jié)構(gòu),要求學生掌握配置活動目錄的方法。(7)掌握WINDOWS 2000的存儲管理。要求學生掌握以下內(nèi)容:WINDOWS 2000的基本存儲和動態(tài)存儲;智能鏡像、存儲工具、視圖的

7、設(shè)置和硬盤轉(zhuǎn)換、動態(tài)磁盤中的卷以及相關(guān)卷的操作、磁盤碎片整理程序。(8)熟悉用WINDOWS任務管理器來觀察計算機的應用程序列表、進程列表以及系統(tǒng)的處理機使用情況、內(nèi)存分配和使用情況、句柄數(shù)、線程數(shù)等等。6思考WINDOWS操作系統(tǒng)中如何實現(xiàn)了處理機管理、內(nèi)存管理、設(shè)備管理、文件管理和磁盤管理?如何操作?有條件的同學可參閱有關(guān)LINUX書籍和上機實踐,思考和了解在LINUX操作系統(tǒng)中是如何實現(xiàn)了處理機管理、內(nèi)存管理、設(shè)備管理、文件管理和磁盤管理? 實驗二 生產(chǎn)者和消費者的問題1 實驗目的(1)加深對進程概念的理解,明確進程和程序的區(qū)別。(2)進一步認識并發(fā)執(zhí)行的實質(zhì)。(3)驗證用信號量機制實現(xiàn)

8、進程互斥的方法。(4)驗證用信號機制實現(xiàn)進程同步的方法。2實驗預備內(nèi)容(1)閱讀課本有關(guān)進程管理以及進程同步的有關(guān)章節(jié),對臨界區(qū)和臨界資源概念要清晰,充分理解信號信號量機制。(2)閱讀幾種經(jīng)典進程同步問題的算法并理解。熟練掌握生產(chǎn)者消費者的算法思想。3實驗環(huán)境(1)一臺運行Windows 2000 professional操作系統(tǒng)的計算機。(2)選用turbo c、visual c+、Delphi、c+ builder或visual basic等任何一種語言。4實驗時間:4個機時。5實驗內(nèi)容問題描述:考慮有一些生產(chǎn)者和消費者進程,生產(chǎn)者進程生產(chǎn)信息并把它們放入緩沖池中,消費者從緩沖池中取走信息

9、。生產(chǎn)者消費者問題是相互合作的進程關(guān)系的一種抽象,如在輸入時,輸入進程是生產(chǎn)者,計算進程是消費者;而在輸出時,則計算進程是生產(chǎn)者,打印進程是消費者。請使用信號量機制來解決生產(chǎn)者消費者問題。緩沖區(qū)互斥關(guān)系:(I)設(shè)緩沖池有n個單元。(II)當n個單元裝滿時,生產(chǎn)者必須等待。(III)當緩沖池空時,消費者必須等待。6參考算法 Var mutex,empty,full:semaphore:=1,n,0; buffer:array0,n-1 of item; in,out:integer:=0,0;生產(chǎn)者進程:repeatproduce an item in nextp wait(empty); wa

10、it(mutex); buffer(in):=nextp; in:=(in+1) mod n; signal(mutex); signal(full);until false;消費者進程:repeatwait(full); wait(mutex); nextc:=buffer(out); out:=(out+1) mod n; signal(mutex); signal(empty); consume the item in nextcwait(S)操作:S=S-1;若S>=0,則進程繼續(xù)運行。若S<0,則該進程被阻塞,并將它插入該信號量的等待隊列中。Signal(S)操作:S=S

11、+1;若S>0,則進程繼續(xù)執(zhí)行;若S<=0,則從信號量等待隊列中移處第一個進程,使其變?yōu)榫途w狀態(tài),然后再返回原進程繼續(xù)執(zhí)行。7實驗要求在程序編制中,應有數(shù)據(jù)顯示,最好采用圖形界面顯示。生產(chǎn)者和消費者的進程采用程序模擬的方法運行。實驗三 銀行家調(diào)度算法1實驗目的(1)使學生加深對死鎖的理解,理解預防死鎖的思想和方法,使學生明確系統(tǒng)安全狀態(tài)的概念。(2)使學生能利用銀行家調(diào)度算法實現(xiàn)避免死鎖。2實驗預備內(nèi)容 閱讀死鎖的基本概念,產(chǎn)生死鎖的原因、產(chǎn)生死鎖的必要條件以及處理死鎖的基本方法,重點閱讀關(guān)于死鎖避免的章節(jié)。3實驗環(huán)境(1)一臺運行Windows 2000 professional

12、操作系統(tǒng)的計算機。(2)選用turbo c、visual c+、delphi、c+ builder或visual basic等任何一種語言,建議用c+。4實驗時間:4個機時。5實驗內(nèi)容(1)設(shè)置銀行家算法中的數(shù)據(jù)結(jié)構(gòu)(a)可利用資源向量Available 它是一個含有m個元素的數(shù)組,其中的每一個元素代表一類可利用資源的數(shù)目,其初始值是系統(tǒng)中所配置該類全部可用資源數(shù)目。其數(shù)值隨該類資源的分配和回收而動態(tài)地改變。如果Availablej=k表示系統(tǒng)中現(xiàn)有類資源k個。 (b)最大需求矩陣Max 這是一個的矩陣,它定義了系統(tǒng)中n個進程中的每一個進程對m類資源的最大需求。如果Max(i,j)=k,表示進

13、程i需要類資源的最大數(shù)目為k。 (c)分配矩陣Allocation 這是一個的矩陣,它定義了系統(tǒng)中每一類資源當前已分配該每一進程的資源數(shù)。如果Allocation(i,j)=k,表示進程i當前已分得類資源的數(shù)目為k。 (d)分配矩陣Need 這是一個的矩陣,用以表示每一個進程尚需的各類資源數(shù)。如果Need(i,j)=k表示進程i還需要類資源k個,方能完成其任務。上述三個矩陣存在如下關(guān)系:Need(i,j)=Max(i,j)-Allocation(i,j)(2)銀行家算法 設(shè)是進程的請求向量。如果 j=k,表示進程需要k個類的資源。當發(fā)出資源請求后,系統(tǒng)按下述步驟進行檢查: 如果,則轉(zhuǎn)向步驟;否

14、則,認為出錯,因為它所需要的資源數(shù)已超過它所宣布的最大值。 如果,則轉(zhuǎn)向步驟;否則,表示系統(tǒng)中尚無足夠的的資源,必須等待。系統(tǒng)試探把要求的資源分配給進程,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:AvailableAvailable- ;系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。若安全,才正式將資源分配給進程,以完成本次分配;否則,將試探分配作廢,恢復原來的資源分配狀態(tài),讓進程等待。(3)安全性算法系統(tǒng)所執(zhí)行的安全性算法描述如下:設(shè)置兩個向量(a)工作向量Work。它表示系統(tǒng)可提供給進程繼續(xù)運行所需要的各類資源數(shù)目,它含有m個元素,執(zhí)行安全算法開始時,Work:=Available。(b

15、)Finish。它表示系統(tǒng)是否有足夠的資源分配給進程,使之運行完成,開始時先做Finishi :=false;當有足夠資源分配給進程時,令 Finishi :=true。從進程集合中找到一個能滿足下列條件的進程: (a) Finishi:=false (b) 如找到,執(zhí)行步驟;否則執(zhí)行步驟。當進程獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應執(zhí)行: Work:=Work+Allocationi; Finishi:=true; go to step (2) 如果所有進程的Finishi:=true,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)。6參考算法#include<

16、;iostream.h>#include<fstream.h>#include<stdlib.h>#include "windows.h"#define MAX_PROCESS 32              /最大進程數(shù)#define MAX_COURCE 64             

17、 /最大資源類別int MAX_FACT_PROCESS;              /實際總進程數(shù)int MAX_FACT_COURCE;               /實際資源類別數(shù)int AvailableMAX_COURCE;        

18、         /可利用資源向量int MaxMAX_PROCESSMAX_COURCE;          /最大需求矩陣int AllocationMAX_PROCESSMAX_COURCE;   /分配矩陣int NeedMAX_PROCESSMAX_COURCE;         /需求矩陣int Request_PR

19、OCESS;                       /發(fā)出請求的進程int Request_COURCE;                      &#

20、160; /被請求資源類別int Request_COURCE_NEMBER;                 /請求資源數(shù)struct COMPint value;int num;int next;int flag=0;void Read_Initiate(void)              &

21、#160;              /讀入初始化文檔ifstream infile("Initiate.txt");   if(!infile)cout<<"不能打開輸入文件:"<<"Initiate.txt"<<'n'exit(1);cout<<"開始讀入初始化文檔"<<'n

22、9;int ch;int ArrayMAX_PROCESS*MAX_COURCE*2;int num=0;while(infile>>ch)    Arraynum+=ch;num=0;   MAX_FACT_COURCE=Arraynum+;   for(int j=0;j<MAX_FACT_COURCE;j+)Availablej=Arraynum+;   MAX_FACT_PROCESS=Arraynum+;for(int i=0;i<MAX_FACT_PROCESS;i+)

23、for(int j=0;j<MAX_FACT_COURCE;j+)Maxij=Arraynum+;infile.close();void Write_Initiate(void)                                  /寫入初始化文檔(

24、分配資源ofstream outfile("Initiate.txt");if(!outfile)cout<<"不能打開初始化文檔:"<<'n'exit(1);int ArrayMAX_PROCESS*MAX_COURCE*2;int num=0;Arraynum+=MAX_FACT_COURCE;   for(int i=0;i<MAX_FACT_COURCE;i+)Arraynum+=Availablei;Arraynum+=MAX_FACT_PROCESS;for(i=0;i<

25、MAX_FACT_PROCESS;i+)for(int j=0;j<MAX_FACT_COURCE;j+)Arraynum+=Maxij;num=0;outfile<<Arraynum+<<" "for(i=0;i<MAX_FACT_COURCE;i+)outfile<<Arraynum+<<" "outfile<<'n'<<Arraynum+<<endl;for(i=0;i<MAX_FACT_PROCESS;i+)for(int j=0

26、;j<MAX_FACT_COURCE;j+)outfile<<Arraynum+<<" "outfile<<endl;DWORD m_delay=3000;Sleep(m_delay);outfile.close();cout<<"修改初始化文檔成功!"<<endl;void Allocated_list(void)              

27、0;          /讀入已分配資源列表ifstream infile("Allocated_list.txt");   if(!infile)cout<<"不能打開輸入文件:"<<"Allocated_list.txt"<<'n'exit(1);cout<<"開始讀入已分配資源列表"<<'n'int ch,nu

28、m=0;int ArrayMAX_PROCESS*MAX_COURCE;while(infile>>ch)Arraynum+=ch;num=0;for(int i=0;i<MAX_FACT_PROCESS;i+)for(int j=0;j<MAX_FACT_COURCE;j+)Allocationij=Arraynum+;infile.close();void Set_Need(void)               &#

29、160;        /設(shè)置需求矩陣cout<<"設(shè)置需求矩陣"<<'n'for(int i=0;i<MAX_FACT_PROCESS;i+)for(int j=0;j<MAX_FACT_COURCE;j+)Needij=Maxij-Allocationij;void Read_Request(void)            

30、60;              /讀入請求向量ifstream infile("Request_list.txt");   if(!infile)cout<<"不能打開輸入文件:"<<"Request_list.txt"<<'n'exit(1);   cout<<"開始讀入請求向量"

31、<<'n'int Array3;int num=0,ch;while(infile>>ch)    Arraynum+=ch;   Request_PROCESS=Array0;   Request_COURCE=Array1;   Request_COURCE_NEMBER=Array2;infile.close();void Write_Allocation(void)        

32、;                 /修改資源分配列表(資源分配)ofstream outfile("Allocated_list.txt");if(!outfile)cout<<"不能打開資源分配列表:"<<'n'exit(1);for(int i=0;i<MAX_FACT_PROCESS;i+)for(int j=0;j<MAX_FACT_C

33、OURCE;j+)outfile<<Allocationij<<" "outfile<<endl;   DWORD m_delay=3000;Sleep(m_delay);cout<<"修改資源分配列表成功!"<<endl;outfile.close();void Allocate_Source(void)              &#

34、160;        /開始分配(已通過掃描和安全性檢測)cout<<'n'<<"開始給第"<<Request_PROCESS<<"個進程分配第"<<Request_COURCE<<"類資源"<<Request_COURCE_NEMBER<<"個"<<endl;Write_Initiate();Write_Allocati

35、on();DWORD m_delay=3000;Sleep(m_delay);cout<<'n'<<"祝賀您,資源分配已成功!"<<endl;void Test_Safty()                         /安全性檢測cout<<'n'&l

36、t;<"進入安全性檢測!"<<endl;   int WorkMAX_COURCE;for(int i=0;i<MAX_FACT_COURCE;i+)Worki=Availablei;   bool FinishMAX_PROCESSMAX_COURCE;for(i=0;i<MAX_FACT_PROCESS;i+)for(int j=0;j<MAX_FACT_COURCE;j+)Finishij=false;COMP Array32;for(i=0;i<MAX_FACT_PROCESS;i+)

37、Arrayi.value=NeediRequest_COURCE-1;       Arrayi.num=i;for(i=0;i<MAX_FACT_PROCESS;i+)for(int j=i+1;j<MAX_FACT_PROCESS;j+)if(Arrayi.value>=Arrayj.value)int t;t=Arrayj.value;               Arra

38、yj.value=Arrayi.value;Arrayi.value=t;t=Arrayj.num;               Arrayj.num=Arrayi.num;               Arrayi.num=t;else continue;DWORD m_delay=3000;Sleep(m_dela

39、y);/*for(i=0;i<MAX_FACT_PROCESS;i+)for(int j=0;j<MAX_FACT_COURCE;j+)cout<<Needij<<'t'cout<<endl;*/if(FinishRequest_PROCESS-1Request_COURCE-1=false&&NeedRequest_PROCESS-1Request_COURCE-1<=WorkRequest_COURCE-1)WorkRequest_COURCE-1=WorkRequest_COURCE-1+Allocat

40、ionRequest_PROCESS-1Request_COURCE-1;       FinishRequest_PROCESS-1Request_COURCE-1=true;elsecout<<"未通過安全性測試,不與以分配"<<endl;exit(0);   for(i=0;i<MAX_FACT_PROCESS;i+)if(Arrayi.num=Request_PROCESS-1)continue;if(Arrayi.num!=Request_PROCESS-

41、1&&FinishArrayi.numRequest_COURCE-1=false&&NeedArrayi.numRequest_COURCE-1<=WorkRequest_COURCE-1)WorkRequest_COURCE-1=WorkRequest_COURCE-1+AllocationArrayi.numRequest_COURCE-1;               FinishArrayi.numReque

42、st_COURCE-1=true;   for(i=0;i<MAX_FACT_PROCESS;i+)if(FinishiRequest_COURCE-1=true)continue;elsecout<<"未通過安全性測試,不與以分配"<<endl;   exit(0);cout<<'n'<<"找到一個安全序列:"<<"P"<<Request_PROCESS<<"->"

43、;   for(i=0;i<MAX_FACT_PROCESS;i+)if(Arrayi.num=Request_PROCESS)continue;elsecout<<"P"<<Arrayi.num<<"->"cout<<'n'<<"已通過安全性測試!"<<endl;Allocate_Source();void RUN(void)       

44、60;                                /執(zhí)行銀行家算法   cout<<"*"<<'n'<<"點擊1執(zhí)行!"<<'n'

45、<<"點擊2退出!"<<'n'<<"*"<<endl;cin>>flag;if(flag=2)exit(0);if(flag=1)cout<<"開始掃描請求信息!"<<endl;DWORD m_delay=3000;Sleep(m_delay);if(Request_COURCE_NEMBER>NeedRequest_PROCESS-1Request_COURCE-1)cout<<'n'<<

46、"第"<<Request_PROCESS<<"個進程請求第"<<Request_COURCE<<"類資源"<<Request_COURCE_NEMBER<<"個"<<endl;       cout<<"可是已超出該進程尚需的該類資源的最大數(shù)量,所以不予以分配!"<<endl;exit(0);if(Request_COURCE_N

47、EMBER>AvailableRequest_COURCE-1)cout<<'n'<<"第"<<Request_PROCESS<<"個進程請求第"<<Request_COURCE<<"類資源"<<Request_COURCE_NEMBER<<"個"<<endl;       cout<<"可是系統(tǒng)中尚無足夠

48、的資源,所以進入等待隊列!"<<endl;exit(0);   elseAvailableRequest_COURCE-1=AvailableRequest_COURCE-1-Request_COURCE_NEMBER;       AllocationRequest_PROCESS-1Request_COURCE-1=AllocationRequest_PROCESS-1Request_COURCE-1+Request_COURCE_NEMBER;   

49、0;   NeedRequest_PROCESS-1Request_COURCE-1=NeedRequest_PROCESS-1Request_COURCE-1-Request_COURCE_NEMBER;cout<<"掃描通過"<<endl;Sleep(m_delay);Test_Safty();else cout<<"輸入錯誤,請重新輸入!"<<'n'RUN(); void main(void)   Read_Initiate();cou

50、t<<MAX_FACT_COURCE<<'t'for(int i=0;i<MAX_FACT_COURCE;i+)cout<<Availablei<<'t'cout<<endl<<MAX_FACT_PROCESS<<endl;for(i=0;i<MAX_FACT_PROCESS;i+)for(int j=0;j<MAX_FACT_COURCE;j+)cout<<Maxij<<'t'cout<<endl;DWORD

51、 m_delay=3000;Sleep(m_delay);cout<<"讀入成功"<<'n'Allocated_list();for(i=0;i<MAX_FACT_PROCESS;i+)for(int j=0;j<MAX_FACT_COURCE;j+)cout<<Allocationij<<'t'cout<<endl;Sleep(m_delay);cout<<"讀入成功"<<'n'Set_Need(); 

52、;  for(i=0;i<MAX_FACT_PROCESS;i+)for(int j=0;j<MAX_FACT_COURCE;j+)cout<<Needij<<'t'cout<<endl;   Sleep(m_delay);cout<<"設(shè)置成功"<<'n'   Read_Request();cout<<'n'<<"第"<<Request_PROCES

53、S<<"個進程請求第"<<Request_COURCE<<"類資源"<<Request_COURCE_NEMBER<<"個"<<endl;cout<<'n'<<"讀入成功"<<'n'RUN();注:數(shù)組ArrayI表示第I+1個實際意義量需要創(chuàng)建三個txt文本。1.Initiate.txt文本3 3 3 2      /共有3類

54、資源,Available0=3; Available1=3; Available2=25             /當前系統(tǒng)中有個進程7 5 3         / Max00=73 2 2          /Max11=39 0 22 2 2 4 3 32.Allocated_list.txt文本0 1

55、0         /Allocation01=12 0 03 0 22 1 10 0 23.Request_list.txt文本2 1 1       /第2個進程請求第1類資源1個Request10=1本程序假設(shè)當前時刻只有一個進程請求某一類資源n個.若要滿足某個進程當前時刻同時請求不止一類資源,則需要為最大需求矩陣Max,分配矩陣Allocation和需求矩陣Need增加維數(shù),當然代碼量也將大大增加,但是算法邏輯本身并無變化.實驗四 操作系統(tǒng)內(nèi)存結(jié)構(gòu)

56、1實驗目的(1)通過實驗了解操作系統(tǒng)內(nèi)存的使用,學習如何在應用程序中管理內(nèi)存,體會Windows應用程序內(nèi)存的簡單性和自我保護能力。(2)了解Windows 2000的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)存的管理,進而了解進程堆和Windows為使用內(nèi)存而提供的一些擴展功能。2實驗預備知識(1)閱讀教材關(guān)于存儲器管理和虛擬存儲器管理的內(nèi)容。(2)熟悉Visual C+的簡單使用。(3) Windows 2000是32位的操作系統(tǒng),它使計算機CPU可以用32位地址對32位內(nèi)存塊進行操作。內(nèi)存中的每一個字節(jié)都可以用一個32位的指針來尋址,這樣,最大的存儲空間就是字節(jié)4000兆字節(jié)(4GB),在Windows下運行的每

57、一個應用程序都認為能獨占4GB 內(nèi)存了。顯然,Windows在幕后將虛擬內(nèi)存(virtual memory,VM)地址映射到了各進程的物理內(nèi)存上。而所謂物理內(nèi)存是指計算機的RAM和由Windows分配到用戶驅(qū)動器根目錄上的換頁文件。物理內(nèi)存完全由系統(tǒng)管理。(4) Windows提供了一個API,即GetSystemInfo(),以便用戶能檢查系統(tǒng)中虛擬內(nèi)存的一些特性。(5)MSDN的使用。3實驗環(huán)境(1)一臺運行Windows 2000 professional操作系統(tǒng)的計算機。(2)選用turbo c、visual c+、Delphi、c+ builder或visual basic等任何一種

58、語言,建議用visual c+。4實驗時間:2個機時。5實驗內(nèi)容實驗步驟如下:(1) 登陸操作系統(tǒng)(Windows 2000、Windows XP或Windows Sever 2003)(2) 運行Visual C+6.0(或Visual C+.NET)(3) 在工具欄擊“Filenewprojects”,選擇”Win32 Console Application”,并添上“Project name”,選擇“OK”,然后選擇“A simple application”,選擇“Finish”。(4) 編寫程序,然后程序進行編譯,并運行。(5) 試記錄以下結(jié)果:虛擬內(nèi)存每頁容量是多少?最小應用地址是

59、多少?最大應用地址是多少?當前可供應用程序使用的內(nèi)存空間是多少?當前計算機的實際內(nèi)存是多大?提示:可供應用程序使用的內(nèi)存空間實際上已經(jīng)減去了開頭與結(jié)尾兩個64KB的保護區(qū)。虛擬內(nèi)存空間的64KB保護區(qū)是防止編程錯誤的一種Windows方式。任何對內(nèi)存中這一區(qū)域的訪問(讀、寫、執(zhí)行)都將引發(fā)一個錯誤陷阱,從而導致錯誤并終止程序的執(zhí)行。也就是說,假如用戶有一個NULL指針(地址為0),但仍試圖在此之前很近的地址處使用另一個指針,這將因為試圖從更低的保留區(qū)域讀寫數(shù)據(jù),從而產(chǎn)生意外錯誤并終止程序的執(zhí)行。6參考算法#include "stdafx.h"#include<wind

60、ows.h>#include<iostream>#include<shlwapi.h>#include<iomanip>#pragma comment(lib,"shlwapi.lib")int main()/首先獲得系統(tǒng)信息SYSTEM_INFO si;:ZeroMemory(&si,sizeof(si);:GetSystemInfo(&si);/使用外殼輔助程序?qū)σ恍┏叽邕M行格式化TCHAR szPageSizeMAX_PATH;:StrFormatByteSize(si.dwPageSize,szPageSiz

61、e,MAX_PATH);DWORD dwMemSize=(DWORD)si.lpMaximumApplicationAddress-(DWORD)si.lpMinimumApplicationAddress;TCHAR szMemSizeMAX_PATH;:StrFormatByteSize(dwMemSize,szMemSize,MAX_PATH);/將內(nèi)存信息顯示出來std:cout<<"Virtual memory page size:"<<szPageSize<<std:endl;std:cout.fill('0'

62、);std:cout<<"Minimum application address:0X"<<std:hex<<std:setw(8) <<(DWORD)si.lpMinimumApplicationAddress<<std:endl;std:cout<<"Maximum application address:0X"<<std:hex<<std:setw(8) <<(DWORD)si.lpMaximumApplicationAddress<&

63、lt;std:endl;std:cout<<"Total available virtual memory"<<szMemSize<<std:endl; 參考結(jié)果如下:Virtual memory page size:4.00 KBMinimum application address:0XMaximum application address:0X7ffeffffTotal available virtual memory1.99 GB實驗五 簡單文件系統(tǒng)的實現(xiàn)1實驗目的通過一個簡單的文件系統(tǒng)的設(shè)計,加深對文件系統(tǒng)存儲空間的管理、文件的

64、結(jié)構(gòu)、目錄結(jié)構(gòu)和文件操作等內(nèi)部功能和實現(xiàn)過程的理解。2實驗預備內(nèi)容(1)操作系統(tǒng)教材中有關(guān)文件管理的章節(jié)。(2)了解DOS操作系統(tǒng)有關(guān)文件的操作。(3)數(shù)據(jù)結(jié)構(gòu)中有關(guān)隊列的內(nèi)容。3實驗環(huán)境(1)一臺運行Windows 2000 professional操作系統(tǒng)的計算機。(2)選用turbo c、visual c+、Delphi、c+ builder或visual basic等任何一種語言,建議用visual c+。4實驗時間:2個機時。5實驗內(nèi)容(1)模仿DOS操作系統(tǒng)設(shè)計一個文件系統(tǒng),能實現(xiàn)一些功能:cd 進入文件目錄,并置為當前目錄create 創(chuàng)建文件del 刪除文件dir 文件和目錄列

65、表lsall 顯示從根目錄開始的所有目錄和文件及其層次結(jié)點md 創(chuàng)建目錄rd 刪除目錄ren 文件更名exit 退出文件系統(tǒng)(2)列目錄時要列出目錄名和文件名,文件名要列出文件名和文件占用字節(jié)數(shù)。(3)要求格式參考DOS操作系統(tǒng)文件顯示格式,對這些內(nèi)容感興趣的同學,可在系統(tǒng)要求的基礎(chǔ)上進行擴充。6參考算法 filesys.h#include<stdio.h>#include"string.h"#include"stdlib.h"#define MaxSize 100/目錄和文件的結(jié)構(gòu)定義struct DirectoryNodechar nam

66、e50;/目錄或文件名字int type;/0代表目錄,1代表普通文件struct DirectoryNode *next;/指向下一個兄弟結(jié)點的指針struct DirectoryNode *preDirFile;/指向父結(jié)點的指針struct DirectoryNode *subFile;/指向第一個子結(jié)點的指針int size;/在lsall函數(shù)中要用到的相應的隊列的數(shù)據(jù)結(jié)構(gòu)struct DataTypeDirectoryNode *DirFile;char name50;/包含一個指向目錄的指針和名字/*隊列定義*/struct Tp/隊列結(jié)構(gòu)的實現(xiàn)DataType dataMaxSi

67、ze;int front,rear;/分別表示隊列的頭結(jié)點和尾結(jié)點;void InitCycQueue(Tp *sq)/隊列初始化sq->front=0;sq->rear=0;int EncycQueue(Tp *sq,DataType data)/在隊列中增加元素if(sq->rear+1)%MaxSize=sq->front)printf("%sQueue is full!");return 0;elsesq->rear=(sq->rear+1)%MaxSize;sq->datasq->rear=data;return 1

68、;DataType OutCycQueue(Tp *sq)/從隊列中刪除一個元素if(sq->front=sq->rear)printf("%sQueue is empty!");elsesq->front=(sq->front+1)%MaxSize;return(sq->datasq->front+1);int Empty(Tp *sq)/判斷隊列是否為空,返回if(sq->front=sq->rear)return 0;else return 1;/*隊列定義結(jié)束*/DirectoryNode *workDirFile;/當前工作目錄DirectoryNode root;/根目錄char path50="pkutest"/path info/filesys.cpp#include "stdafx.h"#include"filesys.h"#include

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論