操作系統(tǒng)上機實驗報告_第1頁
操作系統(tǒng)上機實驗報告_第2頁
操作系統(tǒng)上機實驗報告_第3頁
操作系統(tǒng)上機實驗報告_第4頁
操作系統(tǒng)上機實驗報告_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、word可編輯 課程設(shè)計(上機實驗)報告課程名稱: 操作系統(tǒng)原理 學生姓名: 海洋 學 號: 所在學院: 計算機科學與技術(shù)學院 專 業(yè): 指導(dǎo)教師: 錢景輝 2022年 1 月 11 日課程設(shè)計上機實驗報告填寫說明1本報告作為指導(dǎo)教師對學生課程設(shè)計上機實驗評分的依據(jù)材料之一。此報告應(yīng)在指導(dǎo)教師指導(dǎo)下,由學生在課程設(shè)計上機實驗結(jié)束時完成,以班為單位收齊后按時交給指導(dǎo)教師批閱;2本報告容必須用黑墨水筆工整書寫或按信息學院統(tǒng)一設(shè)計的電子文檔標準格式可從信息學院網(wǎng)頁上下載打印小4號宋體,1.5倍行距,禁止打印在其它紙上后剪貼;3本報告中的“設(shè)計說明書應(yīng)按論文的格式成文,并直接書寫或打印在本報告“設(shè)計說

2、明書欄目。其容可以結(jié)合設(shè)計題目的容和要求,根據(jù)自己在本課程設(shè)計上機實驗階段所完成的工作,說明自己所采取的設(shè)計思想和方法硬件的設(shè)計及其電原理圖分析介紹,和/或軟件的算法和數(shù)據(jù)結(jié)構(gòu)及其主要模塊介紹、程序在測試用例下的測試運行結(jié)果等、完本錢課程設(shè)計的心得體會、設(shè)計中的缺乏及改良設(shè)計的設(shè)想或建議等。 說明書的篇幅應(yīng)不少于2000字。4對硬件類課程設(shè)計,應(yīng)繪制或打印硬件設(shè)計圖紙或?qū)嶒炘韴D,作為設(shè)計報告的附件。5軟件類課程設(shè)計上機實驗的軟件文檔含軟件清單和程序運行的有關(guān)結(jié)果可以單獨打印成冊或上傳到指導(dǎo)教師指定計算機,作為課程設(shè)計報告的附件。課程設(shè)計上機實驗報告的附件是指導(dǎo)教師對學生課程設(shè)計上機實驗評分的

3、另一個依據(jù)。 課 程 設(shè) 計上 機 實 習報 告課程設(shè)計上機實驗題目:文件系統(tǒng)的模擬設(shè)計目的與任務(wù): 理解操作系統(tǒng)文件系統(tǒng)的某些工作原理,學習文件操作命令和目錄操作命令的設(shè)計方法。通過實驗,使學生加深對操作系統(tǒng)文件系統(tǒng)某些問題的理解,歸納學習方法和思考方法,做到理論聯(lián)系實際。培養(yǎng)學生分析問題、解決問題的能力,提高學生軟件設(shè)計能力和邏輯思維能力。設(shè)計實現(xiàn)一個簡單的文件系統(tǒng),包括目錄文件、普通文件,以及一些文件操作命令和目錄操作命令(例如可以模仿DOS的有關(guān)命令)。1. 修改md命令;2. 修改Help命令;3. 修改命令行預(yù)處理程序;4. 新增fc命令,實現(xiàn)兩個文件的比擬;5. 新增batch命

4、令,實現(xiàn)批處理;6. 完善copy命令,改善某些缺陷。容和要求:1.修改md命令:增加“屬性參數(shù),用于創(chuàng)立指定屬性的子目錄。命令形式如下:md <目錄名> <屬性>。屬性包括R、H、S以及它們的組合(不區(qū)分大小寫,順序也不限)。例如:md usr rh其功能是在當前目錄中創(chuàng)立具有“只讀和“隱藏屬性的子目錄user.2. 修改Help命令:修改help命令的顯示方式和顯示容:修改HelpComd()函數(shù),使之提供菜單式的較詳細的幫助信息。例如可以先用菜單形式簡單列出各命令名稱,當用戶選擇某個命令的序號后,再比擬詳細地介紹該命令,包括命令的各種形式,每種形式的功能,以及某些

5、舉例說明等等。3. 修改命令行預(yù)處理程序:修改命令行預(yù)處理函數(shù)ParseCommand( ),使以下命令行(命令與參數(shù)間無空格符)可以正確執(zhí)行:cd/,cd.,dir/usr.copy/usr/boy mail 即命令名稱與后邊的“/或“.之間不需要空格也能正確執(zhí)行。4.新增fc命令,實現(xiàn)兩個文件的比擬:命令形式:fc <文件名1> <文件名2>5.新增batch命令,實現(xiàn)批處理:命令形式:batch batchfile 命令功能:從磁盤文件batchfile逐行讀入命令行執(zhí)行,直到batchfile中所有命令行都執(zhí)行完畢為止。6.完善copy命令,改善某些缺陷:正確的

6、功能應(yīng)該是:假設(shè)當前目錄中不存在文件boy,那么報錯;第2個命令假設(shè)當前目錄是根目錄,因根目錄沒有父目錄,故應(yīng)報錯;假設(shè)當前目錄的父目錄中已經(jīng)存在名為boy的文件,也報錯(或詢問用戶是否覆蓋)。其他情況上述命令都應(yīng)能正確執(zhí)行。 課 程 設(shè) 計上 機 實 習報 告設(shè) 計 說 明 書說明書的撰寫要求請參看封里的“報告填寫說明3。篇幅不夠可附頁1 修改md命令開始命令格式正確嗎指定路徑正確嗎新目錄有重名嗎在指定目錄中查找空目錄項(假設(shè)已無空目錄項,那么為其分配新的盤塊),找到后為新目錄登記目錄項。為新目錄分配1盤塊,用于登記該目錄的第一個目錄項,即“.目錄項。查詢文件的RHS屬性,并記錄、存儲。返回

7、顯示相關(guān)的錯誤信息否否是是是否 流程圖如下:課 程 設(shè) 計上 機 實 習報 告 設(shè)計思想:程序的指令格式為md user |rh,需改為md user rh格式,因此可在md user |rh中修改代碼實現(xiàn)修改功能。要實現(xiàn)此功能,只需要獲取目錄的屬性時刪除判斷操作符“|的過程即可。具體方法:在GetAttrib函數(shù)中刪除如下代碼:if (str0!='|')cout<<"n命令中屬性參數(shù)錯誤。n"return -1; 修改后的操作方法:輸入 md user rh 即可正確執(zhí)行 截圖如下: 2 修改Help命

8、令 流程圖如下:課 程 設(shè) 計上 機 實 習報 告顯示help命令可選內(nèi)容開始命令正確?是輸入126或0是顯示所需help信息返回否報錯否設(shè)計思想:利用switch(n) case語句實現(xiàn)選擇只查看需了解的操作命令。       具體方法:首先利用cout語句輸出改操作系統(tǒng)所擁有的命令.并用數(shù)字標明,供用戶選擇,再利用switch(n) case語句實現(xiàn)具體容的介紹。例如: cout<<" 1.create t" case 1:cout<<" create <文件名

9、> <文件屬性>n"<<" 創(chuàng)立新文件,文件屬性是r、h或s。n" break; 運行效果如下: 3 修改命令行預(yù)處理程序 流程圖如下:開始命令格式是否正確命令中是否有參數(shù)指定路徑是否正確是是是將獲得的全路徑名以及指定目錄的首塊號保存到當前目錄變量中返回顯示錯誤信息否否顯示當前目錄否 設(shè)計思想:在命令行預(yù)處理函數(shù)ParseCommand( )中進行修改,使以下命令行(命令與參數(shù)間無空格符)可以正確執(zhí)行:cd/,cd.,dir/usr,copy/usr/boy mail具體方法:在ParseCommand( )處理cd/,dir/usr

10、等情況的代碼中增加處理“.的代碼。for (i=0;comd0i!='0'i+)if(comd0i='/')/處理cd/,dir/usr等情況break;else if (comd0i='.' && comd0i+1='.') break;4 新增fc命令,實現(xiàn)兩個文件的比擬流程圖如下:開始命令格式是否正確調(diào)用ProcessPath( )查找兩文件的指定路徑 指定路徑是否正確調(diào)用FindFCB()查找兩文件的首塊號 文件是否存在將文件內(nèi)容進行比擬并輸出結(jié)果返回顯示錯誤信息否否否是是是

11、設(shè)計思想:首先利用ProcessPath()函數(shù)和FindFCB()函數(shù)查找文件的目錄所在首塊號和文件所在首塊號,判斷其存在性,并記錄其全路徑名。如果需要比擬的文件都存在的話那么進行比擬。 具體實現(xiàn):int FcComd(int k)if(k!=2)cout<<"出錯:輸入命令格式錯誤,請重新輸入"<<endl;return false;short int i,j=0,s1,s2,size1,size2,s,s3;char attrib='0',*FileName,*FileName1,Buffer1,Buffer2;FCB* fcb

12、p ,*fcbp1,*fcbp2 ;s=ProcessPath(comd1,FileName,k,0,'20');/取FileName所在目錄的首塊號if (s<1)/路徑錯誤return s;/失敗,返回s1=FindFCB(FileName,s,attrib,fcbp); /取FileName的首塊號(查其存在性)fcbp1=fcbp;if (s1<0)cout<<"n要比擬的文件不存在。n"return -1;s3=ProcessPath(comd2,FileName1,k,0,'20');/取FileName1

13、所在目錄的首塊號 if (s3<1)/路徑錯誤return s3;/失敗,返回 s2=FindFCB(FileName1,s3,'40',fcbp);/取FileName的首塊號(查其存在性)fcbp2=fcbp;if (s2<0)cout<<"n要比擬的文件不存在。n"return -2;size1=fcbp1->Fsize; /取文件一的長度size2=fcbp2->Fsize; /取文件二的長度if(size1=0&&size2|size2=0&&size1)cout<<&

14、quot;兩個文件的長度不同:"<<endl;cout<<"文件"<<fcbp1->FileName<<"的長度"<<size1<<endl; cout<<"文件"<<fcbp2->FileName<<"的長度"<<size2<<endl;cout<<"兩文件在第一個字節(jié)處不同"return false;while(s1>0&

15、amp;&s2>0)for(i=0;i<SIZE;i+,j+)if(j=size1&&j=size2) break;Buffer1=Disks1i; /讀第一個文件容 Buffer2=Disks2i; /讀第二個文件容if(Buffer1!=Buffer2) /比擬 cout<<"文件"<<fcbp1->FileName<<"長度為:"<<size1<<endl;cout<<"文件"<<fcbp2->Fi

16、leName<<"長度為:"<<size2<<endl;cout<<"第一個不同字節(jié)的位置為第"<<j+1<<"個字節(jié)"<<endl; cout<<"此時兩個文件的字符分別為"<<Buffer1<<"和"<<Buffer2<<endl; return false;if(i<SIZE) break; /結(jié)束while循環(huán),防止進入死循環(huán) if(j=s

17、ize1&&j=size2)cout<<"兩文件容相同"<<endl; cout<<"文件長度為:"<<size1; return true;return 1;效果圖如下:5 新增batch命令,實現(xiàn)批處理流程圖如下:開始命令格式是否正確指定路徑是否正確調(diào)用FindFCB()查找文件的首塊號 文件是否存在讀取文件內(nèi)容并輸出文件要求執(zhí)行的指令調(diào)用ProcessPath( )查找文件的指定路徑 返回顯示錯誤信息否否否是是是 設(shè)計思想:batch命令從磁盤文件batc

18、hfile逐行讀入命令行執(zhí)行,直到batchfile中所有命令行都執(zhí)行完畢為止。 具體方法:int BatchComd(int k) short i,s,size,jj=0,x=0, y=0; char attrib='0',*FileName; char gFileNamePATH_LEN; /存放文件全路徑名FCB* fcbp; if(k!=1) cout<<"n命令參數(shù)中應(yīng)該只有一個文件名。n" return -1; else s=ProcessPath(comd1,FileName,k,0,'020');/取FileNam

19、e所在目錄的首塊號if (s<1) /路徑錯誤return s; /失敗,返回 s=FindFCB(FileName,s,attrib,fcbp); /取FileName的首塊號(查其存在性) strcpy(gFileName,temppath); i=strlen(temppath); if (temppathi-1!='/') strcat(gFileName,"/"); strcat(gFileName,FileName); /構(gòu)造文件的全路徑名if (s<0) cout<<"n文件"<<gFil

20、eName<<"不存在。n" return -3; if (s=0) cout<<"n文件"<<gFileName<<"是空文件n" else size=fcbp->Fsize; char Buffer10050; /分配動態(tài)存空間 while (s>0)for (i=0;i<SIZE;i+,jj+)if (jj=size)break;if(Disksi='n')Bufferxy='0'cout<<Bufferx<<

21、;endl;x+; y=0; elseBufferxy=Disksi;y+;if (i<SIZE)Bufferxy='0'break;s=FATs;for(i=0;i<=x;i+)cout<<"nC:" /顯示提示符(本系統(tǒng)總假定是C盤) if (dspath)cout<<curpath.cpath;cout<<">" cout<<Bufferi<<endl;k=ParseCommand(Bufferi); /分解命令及其參數(shù)/comd0中是命令,comd1,comd2.是參數(shù) ExecComd(k); /執(zhí)行命令return 1; 運行結(jié)果如下:6 完善copy命令,改善某些缺陷 流程圖如下:否命令格式正確源文件存在開始源文件已翻開命令只有1個參數(shù)目標路徑正確目標文件名正確目標文件名沖突目標文件與子目錄同名源文件同名復(fù)制到該子目錄中子目錄有源文件同名文件為目標文件建立目錄項,分配磁盤空間,復(fù)制源文件內(nèi)容到新分配的磁

溫馨提示

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

評論

0/150

提交評論