2023年操作系統(tǒng)上機(jī)實(shí)驗(yàn)報告_第1頁
2023年操作系統(tǒng)上機(jī)實(shí)驗(yàn)報告_第2頁
2023年操作系統(tǒng)上機(jī)實(shí)驗(yàn)報告_第3頁
2023年操作系統(tǒng)上機(jī)實(shí)驗(yàn)報告_第4頁
2023年操作系統(tǒng)上機(jī)實(shí)驗(yàn)報告_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課程設(shè)計(上機(jī)實(shí)驗(yàn))報告

課程名稱:_________操作系統(tǒng)原理

學(xué)生姓名:沈海洋—學(xué)號:

所在學(xué)院:計算機(jī)科學(xué)與技術(shù)學(xué)院

專業(yè):

指導(dǎo)教師:_____________錢量旌

2023年1月11日

課程設(shè)計(上機(jī)實(shí)驗(yàn))報告填寫說明

1.本報告作為指導(dǎo)教師對學(xué)生課程設(shè)計(上機(jī)實(shí)驗(yàn))評分的

依據(jù)材料之一。此報告應(yīng)在指導(dǎo)教師指導(dǎo)下,由學(xué)生在課程設(shè)計(上

機(jī)實(shí)驗(yàn))結(jié)束時完畢,以班為單位收齊后準(zhǔn)時交給指導(dǎo)教師批閱;

2.本報告內(nèi)容必須用黑墨水筆工整書寫或按信息學(xué)院統(tǒng)一設(shè)

計的電子文檔標(biāo)準(zhǔn)格式(可從信息學(xué)院網(wǎng)頁上下載)打印(小4號宋

體,1.5倍行距),嚴(yán)禁打印在其它紙上后剪貼;

3.本報告中的“設(shè)計說明書”應(yīng)按論文的格式成文,并直接書

寫(或打印)在本報告”設(shè)計說明書”欄目內(nèi)。其內(nèi)容可以結(jié)合設(shè)計題

目的內(nèi)容和規(guī)定,根據(jù)自己在本課程設(shè)計(上機(jī)實(shí)驗(yàn))階段所完畢的

工作,闡明自己所采用的設(shè)計思想和方法(硬件的設(shè)計及其電原理圖

分析介紹,和/或軟件的算法和數(shù)據(jù)結(jié)構(gòu)及其重要模塊介紹、程序在測

試用例下的測試運(yùn)營結(jié)果等)、完畢本課程設(shè)計的心得體會、設(shè)計中

的局限性及改善設(shè)計的設(shè)想或建議等。說明書的篇幅應(yīng)不少于2023

字。

4.對硬件類課程設(shè)計,應(yīng)繪制或打印硬件設(shè)計圖紙或?qū)嶒?yàn)原理

圖,作為設(shè)計報告的附件。

5.軟件類課程設(shè)計(上機(jī)實(shí)驗(yàn))的軟件文檔(含軟件清單和程序

運(yùn)營的有關(guān)結(jié)果)可以單獨(dú)打印成冊或上傳到指導(dǎo)教師指定計算

機(jī),作為課程設(shè)計報告的附件。

課程設(shè)計(上機(jī)實(shí)驗(yàn))報告的附件是指導(dǎo)教師對學(xué)生課程設(shè)計

(上機(jī)實(shí)驗(yàn))評分的另一個依據(jù)。

?課程設(shè)計(上機(jī)實(shí)習(xí))報告

課程設(shè)計(上機(jī)實(shí)驗(yàn))題目:

文獻(xiàn)系統(tǒng)的模擬設(shè)計

目的與任務(wù):

理解操作系統(tǒng)文獻(xiàn)系統(tǒng)的某些工作原理,學(xué)習(xí)文獻(xiàn)操作命令和目錄操作命令的設(shè)

計方法。通過實(shí)驗(yàn),使學(xué)生加深對操作系統(tǒng)文獻(xiàn)系統(tǒng)某些問題的理解,歸納學(xué)習(xí)方法和

思考方法,做到理論聯(lián)系實(shí)際。培養(yǎng)學(xué)生分析問題、解決問題的能力,提高學(xué)生軟件設(shè)

計能力和邏輯思維能力。

設(shè)計實(shí)現(xiàn)一個簡樸的文獻(xiàn)系統(tǒng),涉及目錄文獻(xiàn)、普通文獻(xiàn),以及一些文獻(xiàn)操作命令和

目錄操作命令(例如可以模仿DOS的有關(guān)命令)。

1.修改md命令;

2.修改HeIp命令;

3.修改命令行預(yù)解決程序;

4.新增fc命令,實(shí)現(xiàn)兩個文獻(xiàn)的比較;

5.新增batch命令,實(shí)現(xiàn)批解決;

6.完善copy命令,改善某些缺陷。

內(nèi)容和規(guī)定:

1.修改md命令:增長“屬性”參數(shù),用于創(chuàng)建指定屬性的子目錄。命令形式如下:

md〈目錄名>[<屬性>]。屬性涉及R、H、S以及它們的組合(不區(qū)分大小寫,順序也

不限)。例如:mdusrrh

其功能是在當(dāng)前目錄中創(chuàng)建具有“只讀”和“隱藏”屬性的子目錄user.

2.修改HeIp命令:修改he1p命令的顯示方式和顯示內(nèi)容:修改He1pComd()

函數(shù),使之提供菜單式的較具體的幫助信息。例如可以先用菜單形式簡樸列出各命令名

稱,當(dāng)用戶選擇某個命令的序號后,再比較具體地介紹該命令,涉及命令的各種形式,

每種形式的功能,以及某些舉例說明等等。

3.修改命令行預(yù)解決程序:修改命令行預(yù)解決函數(shù)ParseCommand(),使以下命

令行(命令與參數(shù)間無空格符)可以對的執(zhí)行:cd/,cd..,dir/usr.copy/usr/boy

mail即命令名稱與后邊的“/”或”之間不需要空格也能對的執(zhí)行。

4.新增fc命令,實(shí)現(xiàn)兩個文獻(xiàn)的比較:命令形式:fc〈文獻(xiàn)名1>〈文獻(xiàn)名2〉

5.新增batch命令,實(shí)現(xiàn)批解決:命令形式:batchbatchfile

命令功能:從磁盤文獻(xiàn)batchfile逐行讀入命令行執(zhí)行,直到batchfiIe

中所有命令行都執(zhí)行完畢為止。

6.完善c。py命令,改善某些缺陷:對的的功能應(yīng)當(dāng)是:若當(dāng)前目錄中不存在文獻(xiàn)

boy,則報錯;第2個命令若當(dāng)前目錄是根目錄,因根目錄沒有父目錄,故應(yīng)報錯;

若當(dāng)前目錄的父目錄中已經(jīng)存在名為boy的文獻(xiàn),也報錯(或詢問用戶是否覆蓋)。其

他情況上述命令都應(yīng)能對的執(zhí)行。

課程設(shè)計(上機(jī)實(shí)習(xí))報告

設(shè)計說明書

(說明書的撰寫規(guī)定請參看封里的“報告填寫說明3”。篇幅不夠可附頁)

一.修改md命令

流程圖如下:

摞程設(shè)計(上機(jī)實(shí)習(xí))報告

設(shè)計思想:程序的指令格式為mduser|rh,需改為mduserrh格式,因此可在

mduserIrh中修改代碼實(shí)現(xiàn)修改功能。

要實(shí)現(xiàn)此功能,只需要獲取目錄的屬性時刪除判斷操作符“I”的過程即可。

具體方法:在GetAttrib函數(shù)中刪除如下代碼:

if(str[O]!='|')

{

。cout<〈”\n命令中屬性參數(shù)錯誤。\n”;

?return—1;

修改后的操作方法:輸入mduserrh即可對的執(zhí)行

截圖如下:

■"C:\Users\use\Desktop\excise_1\Debug\exci

現(xiàn)在你可以知A食種埃隹命令?

Jxit退出本程序.

D:/>nduserrh

3:/>

二.修改He1p命令

流程圖如下:

課程設(shè)計(上機(jī)實(shí)習(xí))報告

開始

設(shè)計思想:運(yùn)用switch(n)case…語句實(shí)現(xiàn)選擇只查看需了解的操作命

令。

具體方法:一方面運(yùn)用cout語句輸出改操作系統(tǒng)所擁有的命令.并用數(shù)字標(biāo)明,

供用戶選擇,再運(yùn)用switch(n)case…語句實(shí)現(xiàn)具體內(nèi)容的介紹。例如:

cout<<?/1.create\t”;

case1:cout<</zcreate〈文獻(xiàn)名》[〈文獻(xiàn)屬性>]\n”

<<"——創(chuàng)建新文獻(xiàn),文獻(xiàn)屬性是r、h或s。\n”;

break;

運(yùn)營效果如下:

■"C:\Users\use\Desktop\exdse_1\Debug\excise_1.exe"

xit------退出本程序.

I********本系統(tǒng)主要的文件操作命令簡述如下*********

1.create2.open3.write

4.read5.close6.del

7.dir8.cd9.nd

10.rd11.ren12.attrib

13.copy14.type15.reviind

16.fseek17.block18.closeall

19.uof20.unde121.exit

22.prompt23.fat24.check

25.fc26.batch

1~24—了解對應(yīng)命令功能和使用方法

。一退出幫助系統(tǒng)

請選擇:1

r玲蠡舞亥濯耦廿h或s°

三.修改命令行預(yù)解決程序

流程圖如下:

設(shè)計思想:在命令行預(yù)解決函數(shù)ParseCommand()中進(jìn)行修改,使以下命令行(命

令與參數(shù)間無空格符)可以對的執(zhí)行:cd/,cd..,dir/usr,copy/usr/boymail

具體方法:在ParseCommand()解決cd/,dir/usr等情況的代碼中增長

解決”的代碼。

or(i=0;comd[0][i]!='\0';i++){

if(comd[0][i]=='/')"/解決cd/,dir/usr等情況

次break;

?elseif(comd[0][i]=='.'&&comd[0][i+1])

break;

)

命令

見mT9

O

e-

-”

Ip程

Xit--

:/>cd/usr

:/usi*>cd..

:/>

四.新增fc命令,實(shí)現(xiàn)兩個文獻(xiàn)的比較

流程圖如下:

設(shè)計思想:一方面運(yùn)用ProcessPath()函數(shù)和FindFCB()函數(shù)查找文獻(xiàn)

的目錄所在首塊號和文獻(xiàn)所在首塊號,判斷其存在性,并記錄其全途徑名。假如需要比較

的文獻(xiàn)都存在的話則進(jìn)行比較。

具體實(shí)現(xiàn):

intFcComd(intk)

?if(k!=2)

。c。ut〈V”犯錯:輸入命令格式錯誤,請重新輸入“《endl;

returnfalse:

。shortinti,j=0,sl,s2,size1,size2,s,s3;

charattrib='\0',*FileName,*Fi1eName1,Bufferl,Buff

er2;

oFCB*fcbp,*fcbpl,*fcbp2;

s=ProcessPath(comd[1],FileName,k,0,'\2O');//取Fi

1eName所在目錄的首塊號

。if(s<l)"/途徑錯誤

?returns;?//失敗,返回

s1=FindFCB(Fi1eName,s,attrib,fcbp);//取FileName

的首塊號(查其存在性)

?fcbpl=fcbp;

if(sl<0)

(

。cout<<"\n要比較的文獻(xiàn)不存在。\n”;

?return-1;

?)

s3=ProcessPath(comd[2],Fi1eName1,k,0,'\2O');〃取File

Name1所在目錄的首塊號

if(s3<l)?//途徑錯誤

returns3;。//失敗,返回

s2=FindFCB(FileNamel,s3,'\40',fcbp);“/取Fi1eName的

首塊號(查其存在性)

fcbp2=fcbp;

>if(s2<0)

(

ocout?"\n要比較的文獻(xiàn)不存在。\n";

return-2;

sizel=fcbpl->Fsize;〃取文獻(xiàn)

一的長度

size2=fcbp2—>Fsize;//取文

獻(xiàn)二的長度

if(sizel==0&&size2|]size2==0&&size1)

。{

8coutv〈”兩個文獻(xiàn)的長度不同:"<<endl;

0cout<V"文獻(xiàn)"久fcbpl->Fi1eName<<"的長度”<<sizel<Vendl;

coutV文獻(xiàn)“<Xfcbp2—>Fi1eNameV的長度”<<size2<

<endl;

。cout?”兩文獻(xiàn)在第一個字節(jié)處不同”;

returnfalse;

)

whiIe(si>0&&s2>0)

(

。for(i=0;i<SIZE;i++,j++)

8{

?if(j==sizel&&j==size2)break;

?!稡ufferl=Disk[sl][i];〃讀第一個文獻(xiàn)內(nèi)容

Buffer2=Disk[s2][i];〃讀第二個文獻(xiàn)內(nèi)容

。if(Bufferl!=Buffer2)〃比較

{cout<<“文獻(xiàn)”<<fcbp1->FileName<V"長度為:"<<

size1<<endl;

bocout<<”文獻(xiàn)〃《fcbp2->FileName?n長度為:〃〈Vsize2<<

end1;

8cout?"第一個不同字節(jié)的位置為第"<Vj+l<個字節(jié)”<〈endl;

cout?*此時兩個文獻(xiàn)的字符分別為"<<Bufferl?/,和"

<<Buffer2?endl;

000

returnfaIse;

°}

b}

-if(i<SIZE)break;〃結(jié)束whi1e循環(huán),避免進(jìn)入死循環(huán)

。}

if(j==size1&&j==size2)

(

。cout<〈”兩文獻(xiàn)內(nèi)容相同〃<Xendl;

?>cout<<〃文獻(xiàn)長度為:〃V〈sizel;

oreturntrue;

d

return1;

}

效果圖如下:

■"C:\Users\use\Desktop\excise_1\Debug\excise_1.exe"

命令

姆^

上€

1一

p程5

Ie.t

,x1--

_

fc震

_/>於

^bo1

_te

=個

?.70

霹77

stM*就個

-兩

W-和

--分

五.新增batch命令,實(shí)現(xiàn)批解決

流程圖如下:

設(shè)計思想:batch命令從磁盤文獻(xiàn)batchfi1e逐行讀入命令行執(zhí)行,直到

batchfile中所有命令行都執(zhí)行完畢為止。

具體方法:

intBatchComd(intk)

{

shorti,s,size,jj=0,x=0,y=0;

?charattrib=/\0',*FileName;

?chargFileName[PATH_LEN];//存放文獻(xiàn)全途徑名

FCB*fcbp;

if(k!=l)

?{

6cout<X"\n命令參數(shù)中應(yīng)當(dāng)只有一個文獻(xiàn)名。\n”;

。eturn-1;

)

else

{

os=ProcessPath(comd[l],Fi1eName,k,0,'\020');//取FileName所在目錄

的首塊號

°if(s<l)//途徑錯誤

?returns;〃失敗,返回

)

?s=FindFCB(FileName,s,attrib,fcbp);〃取FileName的首塊號(查

其存在性)

?strcpy(gFi1eName,temppath);

i=strlen(temppath);

if(temppath[i-1]!=//')

?strcat(gFi1eName,"/");

strcat(gFi1eName,FileName);//構(gòu)造文獻(xiàn)的全途徑名

bif(s<0){

,cout<<,z\n文獻(xiàn)”《gFileName?"不存在。\nH;

return-3;

d

8

eif(s==0)

cout<<"\n文獻(xiàn)〃V〈gFileName?n是空文獻(xiàn)\n

6else{

osize二fcbp->Fsize;

ocharBuffer[100][50];〃分派動態(tài)內(nèi)存空間

whi1e(s>0){

bfor(i=0;i<SIZE;i++,jj++){

b3if(jj==size)

。obreak;

。if(Disk[s][i]==,\nf){

z>Buffer[x][y]='\0’;

a>cout<<Buffer[x]?end1;

88X++J

。。尸0;

8}

?>e1se{

必BufferLx][y]=Disk[s][i];

gy++;

0}

OOOI

8if(i<SIZE)

(

⑼Buffer[x][y]='\0';

break;

8s=FAT[s];

°for(i=0;i<=x;i++){

ocout。"\nC:〃;//顯示提醒符(本系統(tǒng)總假定是C盤)

。if(dspath)

cout?curpath.cpath;

gcout<<〃>〃;

gcout?Buffer[i]<<end1;

o業(yè)二ParseCommand(Buffer[i]);〃分解命令及其參數(shù)

//comd[0]中是命令,comd[1],comd[2]...是參數(shù)

ExecComd(k);〃執(zhí)行命令

b}

}

?return1;

運(yùn)營結(jié)果如下:

設(shè)計思想:實(shí)現(xiàn)將當(dāng)前目錄/usr中的文獻(xiàn)復(fù)制到其父目錄(根目錄)中,文獻(xiàn)名

仍為原名,在CopyComd()函數(shù)中修改代碼。

具體方法:修改部分代碼如下

else"/k=2(命令中提供目的文獻(xiàn))的情況

(

8//用來判斷第二個參數(shù)是否為"

if(1stremp(comd[2],"..")){

。ints=FindPath(comd[2],(char)16,1,fcbp);〃找指定目錄(的

首塊號)

8if(S<1){

ecout<<〃\n途徑名錯誤!〃<<end1;

return-1;

O0)

3ostrcpy(comd[2],temppath);

}

〃用來判斷第二個參數(shù)是否為

if(!strcmp(comd[2],"/〃)){

strcat(comd[2],FileNamel);

。}

?s02=ProcessPath(comd[2],Fi1eName2,k,0,'\20');〃取FileName2所在目

錄的首塊號

。if(s02<l)〃目的途徑錯誤

oreturns02;

效果圖如下所示:

■"C:\Users\use\Desktop\excise_1\Debug\excise_1.exe"

C:/>cd/usr

C:/usi*>copyboyboy_l

C:/usr>dir

TheDirectoryofC:/usr

一.<DIR>

user<DIR>

lib

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論