版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 課程設(shè)計(上機實驗)報告課程名稱: 操作系統(tǒng)原理上機實習(xí) 學(xué)生姓名: 應(yīng)成龍 學(xué) 號: 1403140126 所在學(xué)院: 計算機科學(xué)與技術(shù) 專 業(yè): 計算機科學(xué)與技術(shù) 指導(dǎo)教師: 錢 景 輝 2016 年 1 月 5 日課程設(shè)計(上機實驗)報告填寫說明1本報告作為指導(dǎo)教師對學(xué)生課程設(shè)計(上機實驗)評分的依據(jù)材料之一。此報告應(yīng)在指導(dǎo)教師指導(dǎo)下,由學(xué)生在課程設(shè)計(上機實驗)結(jié)束時完成,以班為單位收齊后按時交給指導(dǎo)教師批閱;2本報告內(nèi)容必須用黑墨水筆工整書寫或按信息學(xué)院統(tǒng)一設(shè)計的電子文檔標準格式(可從信息學(xué)院網(wǎng)頁上下載)打?。ㄐ?號宋體,1.5倍行距),禁止打印在其它紙上后剪貼;3本報告中的“設(shè)計
2、說明書”應(yīng)按論文的格式成文,并直接書寫(或打印)在本報告“設(shè)計說明書”欄目內(nèi)。其內(nèi)容可以結(jié)合設(shè)計題目的內(nèi)容和要求,根據(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)教師指定計算機,
3、作為課程設(shè)計報告的附件。課程設(shè)計(上機實驗)報告的附件是指導(dǎo)教師對學(xué)生課程設(shè)計(上機實驗)評分的另一個依據(jù)。 課 程 設(shè) 計(上 機 實 習(xí))報 告課程設(shè)計(上機實驗)題目:文件系統(tǒng)的模擬設(shè)計與實現(xiàn)目的與任務(wù):實驗?zāi)康模豪斫獠僮飨到y(tǒng)文件系統(tǒng)的某些工作原理,學(xué)習(xí)文件操作命令和目錄操作命令的設(shè)計方法。通過實驗,使學(xué)生加深對操作系統(tǒng)文件系統(tǒng)某些問題的理解,歸納學(xué)習(xí)方法和思考方法,做到理論聯(lián)系實際。培養(yǎng)學(xué)生分析問題、解決問題的能力,提高學(xué)生軟件設(shè)計能力和邏輯思維能力。實驗任務(wù):模仿MS-DOS系統(tǒng)設(shè)計并實現(xiàn)一個簡單的文件系統(tǒng),包括目錄文件、普通文件,以及一些文件操作命令和目錄操作命令。內(nèi)容和要求:實驗
4、內(nèi)容與具體要求見“操作系統(tǒng)原理上機實習(xí)實驗指導(dǎo)書(2016修訂版)”。課 程 設(shè) 計(上 機 實 習(xí))報 告設(shè) 計 說 明 書(說明書的撰寫要求請參看封里的“報告填寫說明3”。篇幅不夠可附頁)一、概述本次實驗中共完成了7個任務(wù),分別是:4.1 修改md命令4.2 修改help命令4.3 修改命令行預(yù)處理程序4.4 新增fc命令,實現(xiàn)兩個文件的比較4.5新增move命令,實現(xiàn)文件搬家及子目錄改名4.7 新增batch命令,實現(xiàn)批處理4.9實現(xiàn)copy的完善4.16 修改read命令,允許不帶文件名參數(shù)(選做內(nèi)容)4.17 修改write命令,允許不帶“文件名”參數(shù)(選做內(nèi)容)二、具體實驗過程描述
5、4.1 修改md命令修改md命令,增加“屬性”參數(shù),用于創(chuàng)建指定屬性的子目錄。命令形式如下:md 屬性包括R、H、S以及它們的組合(不區(qū)分大小寫,順序也不限)。例如:md user rh其功能是在當(dāng)前目錄中創(chuàng)建具有“只讀”和“隱藏”屬性的子目錄user。主要修改思想:在調(diào)用ProcessPath()函數(shù)之前,對屬性參數(shù)進行分析比較,并修改attrib的值,以使在調(diào)用ProcessPath()函數(shù)時將具有某種或多種屬性值的attrib值傳入ProcessPath()函數(shù)。當(dāng)k=2時,調(diào)用GetAttrib()函數(shù),GetAttrib()函數(shù)將課 程 設(shè) 計(上 機 實 習(xí))報 告根據(jù) comd2
6、中的內(nèi)容修改attrib的值,若comd2中含有r則加1,若comd2中開始含有h則加2,若comd2中含有s則加4。流程圖:命令格式正確是調(diào)用GetAttrib()函數(shù)修改attribd的值參數(shù)個數(shù)為2是否指定路徑正確是是新目錄重名否在指定目錄中查找空目錄項(若已無空目錄項,則為其分配新的盤塊),找到后為新目錄登記目錄項。為新目錄分配1盤塊,用于登記該目錄的第一個目錄項,即“.”目錄項。顯示相關(guān)的錯誤信息返回The Directory of C:/bin usr dev boy 170abc_map 203map 76test 77qil_nanj 225 5 file(s) 751 byt
7、es 3 dir(s) 313536 freeC:/md sjsx rwC:/dirThe Directory of C:/bin usr sjsx dev boy 170abc_map 203map 76test 77qil_nanj 225 5 file(s) 751 bytes 4 dir(s) 313472 free4.2 修改help命令修改help命令的顯示方式和顯示內(nèi)容:修改HelpComd()函數(shù),使之提供菜單式的較詳細的幫助信息。例如可以先用菜單形式簡單列出各命令名稱,當(dāng)用戶選擇某個命令的序號后,再比較詳細地介紹該命令,包括命令的各種形式,每種形式的功能,以及某些舉例說明等等
8、。具體方法:首先利用cout語句輸出改操作系統(tǒng)所擁有的命令,并用數(shù)字標明,供用戶選擇,再利用switch(n) case語句實現(xiàn)具體內(nèi)容的介紹。程序的大體表達如下:int n; cinn;switch(n)case /具體顯示命令的內(nèi)容命令正確?開始顯示help命令可選菜單內(nèi)容輸入135或-1顯示所需help信息返回是否報錯否是Help命令函數(shù)流程圖流程圖:設(shè)計思想:利用switch(n) case 語句實現(xiàn)選擇只查看需了解的操作命令。 具體方法:首先利用cout語句輸出改操作系統(tǒng)所擁有的命令,并用數(shù)字標明,供用戶選擇,提示用戶可以輸入相應(yīng)命令對應(yīng)的序號,用一個char型數(shù)組讀取,然后轉(zhuǎn)換為i
9、nt型,若該int對應(yīng)于相應(yīng)的命令序號,則顯示該命令的具體信息。關(guān)鍵代碼如下:while(true)cout輸入1-28任一數(shù)字了解更詳細的功能及用法1&k29)HelpExp(k);/對k進行switch選擇,輸出命令的相關(guān)詳細信息else cout序號錯誤!help命令運行結(jié)果:C:/helpcoutn* * * * * * * * * 本系統(tǒng)主要的文件操作命令簡述如下 * * * * * * * * * *nn; cout(0)create 創(chuàng)建新文件,文件屬性是r、h或s。n; cout(1)open 打開文件,操作類型可為r、h或(與)sn;cout(2)write 在指定位置寫文件
10、(有插入功能)。n; cout(3)read 讀文件,從第m字節(jié)處讀n個字節(jié)。n; cout(4)close 關(guān)閉文件。n; cout(5)del 撤消(刪除)文件。n; cout(6)dir 顯示當(dāng)前目錄。n;cout(7)cd 改變當(dāng)前目錄。n;cout(8)md 創(chuàng)建指定目錄。n;cout(9)rd 刪除指定目錄。n;cout(10)ren 文件更名。n;cout(11)attrib 修改文件屬性(r、h、s)。n;cout(12)copy 復(fù)制文件。n;cout(13)type 顯示文件內(nèi)容。n;cout(14)rewind 將讀、寫指針移到文件第一個字符處n;cout(15)fsee
11、k 將讀、寫指針都移到指定位置。n;cout(16)block 顯示文件占用的盤塊號。n;cout(17)closeall 關(guān)閉當(dāng)前打開的所有文件。n;cout(18)uof 顯示UOF(用戶打開文件表)。n;cout(19)undel 恢復(fù)指定目錄中被刪除的文件。n;cout(20)exit 退出本程序。n;cout(21)prompt 提示符是否顯示當(dāng)前目錄(切換)。n;cout(22)fat 顯示FAT表中空閑盤塊數(shù)(0的個數(shù))。n;cout(23)check 核對后顯示FAT表中空閑盤塊數(shù)。n;cout(24)back 返回主界面。n;cout(25)fc 比較文件 n;cout(26
12、)move 移動文件 n;cout(27)replace 替代文件 n;while(true)cout0)for (j=k;j0;j-)strcpy(comdj+1,comdj);/后移strcpy(&comd10,&comd0i);strcpy(&comd11,&comd0i+1);comd0i=0;k+;/多出一個參數(shù)命令運行結(jié)果:C:/cd usrC:/usrcd /C:/cd binC:/bincd.4.4 新增fc命令,實現(xiàn)兩個文件的比較命令形式:fc 命令功能:逐個字節(jié)比較指定的兩個文件,若相同,顯示“文件內(nèi)容相同”字樣;若不同,顯示第一個不同字節(jié)的位置和各自的內(nèi)容。若文件不存在則
13、報錯。設(shè)計思想:分別查找文件名1和文件名2 的指定路徑,若路徑正確,則進行文件的首塊號查找,如果兩個文件都能找到,則按字節(jié)進行比較,找到第一個字節(jié)不同的位置,如果兩個文件大小相等且查詢到最后一個字節(jié),則兩文件內(nèi)容相同。流程圖:開始否命令格式正確嗎?是調(diào)用ProcessPath( )查找兩文件的指定路徑指定路徑正確嗎?否是調(diào)用FindFCB()查找兩文件的首塊號顯示錯誤信息否文件存在嗎是 fc命令函數(shù)流程圖返回將文件內(nèi)容進行比較并輸出結(jié)果命令執(zhí)行結(jié)果:C:/fc boy usr/boy文件/boy與文件/usr/boy內(nèi)容不一樣!文件/boy的第一個不同的字節(jié)為文件/usr/boy的第一個不同的
14、字節(jié)為C:/fc boy test文件/boy與文件/test內(nèi)容不一樣!文件/boy的第一個不同的字節(jié)為H文件/test的第一個不同的字節(jié)為dC:/fc boy boy文件/boy與文件/boy內(nèi)容一樣!4.5 新增move命令設(shè)計思想:先判斷要移動的文件是否存在且非空,然后判斷目標文件是否存在且非空,若都是,則將要移動的文件的盤塊逐個移入目標文件。具體方法:利用processpath和FindFCB分別取要移動的文件的所在目錄的首塊號和其文件的首塊號,若取不到,說明不存在或者為空,報錯。然后用Check_UOF函數(shù)判斷要移動的文件是否已經(jīng)在UOF,若是,說明文件已經(jīng)打開,此時不能移動,報錯
15、。然后判斷是否已經(jīng)輸入目標文件名,若否,則輸入目標文件名,然后用getblock()得到盤塊號,移動。運行結(jié)果如圖:將C目錄下的boy移動至新建的user目錄下?,F(xiàn)在你可以輸入各種操作命令.Help 簡易幫助信息.exit 退出本程序.C:/dirThe Directory of C:/bin usr dev boy 170abc_map 203map 76test 77qil_nanj 225 5 file(s) 751 bytes 3 dir(s) 313536 freeC:/md userC:/move boy userC:/boy=C:/bin/boyokC:/dir userThe
16、Directory of C:/user. boy 170 1 file(s) 170 bytes 1 dir(s) 313280 freeC:/4.7 新增batch命令,實現(xiàn)批處理命令形式:batch batchfile開始命令功能:從磁盤文件batchfile逐行讀入命令行執(zhí)行,直到batchfile中所有命令行都執(zhí)行完畢為止。否命令格式正確嗎?是調(diào)用ProcessPath( )查找文件的指定路徑指定路徑正確嗎?否是調(diào)用FindFCB()查找文件的首塊號顯示錯誤信息否文件存在嗎是按行取出文件中命令依次執(zhí)行返回 batch命令函數(shù)流程圖設(shè)計思想:該命令是實現(xiàn)批處理,參數(shù)為一個存放了多條命令
17、的文件,執(zhí)行該命令時 ,相當(dāng)于依次執(zhí)行了多條命令,所以要多文件進行讀取,每一行為一條命令,所以每讀一行執(zhí)行一次命令。命令執(zhí)行結(jié)果:C:/batch testdirtype mapcd usrdiropen /boycd user/matype qil_nanjcd /uof省略一些命令執(zhí)行結(jié)果文件名 文件屬性 首塊號 文件長度 狀態(tài) 讀指針 寫指針/boy 普通 40 170 打開 1 171C:/close boy關(guān)閉文件/boy成功。C:/4.9 完善copy命令1. 改正某些缺陷目前參考程序中的copy命令不能處理如下情況:假設(shè)當(dāng)前目錄是/usr,執(zhí)行如下命令之一copy boy /co
18、py boy .上述2條命令應(yīng)該是將當(dāng)前目錄/usr中的文件boy復(fù)制到其父目錄(根目錄)中,文件名仍為boy。但系統(tǒng)不能正確執(zhí)行,而顯示“目標文件名錯誤”的信息。正確的功能應(yīng)該是:l 若當(dāng)前目錄中不存在文件boy,則報錯;l 第2個命令若當(dāng)前目錄是根目錄,因根目錄沒有父目錄,故應(yīng)報錯;l 若當(dāng)前目錄的父目錄中已經(jīng)存在名為boy的文件,也報錯(或詢問用戶是否覆蓋)。l 其他情況上述命令都應(yīng)能正確執(zhí)行。請按此要求修改copy命令處理程序,使之在上述命令形式也能正確執(zhí)行。設(shè)計思想:添加函數(shù) copy()和函數(shù)FindBlankFCB()分別用于文件的復(fù)制和尋找首塊號為s的目錄中的空目錄項,其中Fi
19、ndBlankFCB()用于實現(xiàn) copy()功能。然后在CopyComd()函數(shù)中判斷copy boy /和copy boy .形式的命令,如果是上述的命令,則將當(dāng)前目錄/usr中的文件boy復(fù)制到其父目錄(根目錄)中,文件名仍為boy。若不是則直接調(diào)用copy()函數(shù)。命令執(zhí)行結(jié)果:C:/copy usr/boy / 存在文件與目標文件同名。4.11 修改del,copy等命令,使其可以使用通配符*修改某些命令,使其可以使用統(tǒng)配符“*”。例如:del *刪除當(dāng)前目錄中的所有文件attrib * 顯示當(dāng)前目錄中所有文件和子目錄的屬性copy * 將當(dāng)前目錄中的所有文件復(fù)制到目標目錄中(同名復(fù)
20、制)設(shè)計思想:使用通配符*操作就是對當(dāng)前目錄下所有符合條件的文件執(zhí)行相應(yīng)的操作,獲取當(dāng)前目錄下所有文件名借鑒了已給函數(shù)DirComd()中遍歷當(dāng)前目錄下所有文件或目錄的方法,但是最終沒能實現(xiàn)這項命令的功能。4.16 修改read命令,允許不帶文件名參數(shù)(選做內(nèi)容)修改read命令處理函數(shù)ReadComd(),使其可以使用如下命令形式:(1) read讀當(dāng)前操作文件,從讀指針位置開始讀到文件尾部(新增形式)(2) read 讀指定文件,從讀指針位置開始讀到文件尾部(3) read |pm讀指定文件,從指定位置m開始讀到文件尾部(4) read |ln讀指定文件,從讀指針位置開始讀n個字節(jié)(5)
21、read |pm |ln讀指定文件,從指定位置m開始讀n個字節(jié)(6) read |pm |ln讀當(dāng)前操作文件,從指定位置m開始讀n個字節(jié)(新增形式)(7) read |pm讀當(dāng)前操作文件,從指定位置m開始讀到文件尾部(新增形式)(8) read |ln讀當(dāng)前操作文件,從讀指針位置開始讀n個字節(jié)(新增形式)上述命令中,“|p”表示“位置”,“m”表示某個整數(shù)。“|L”表示“長度”,“n”也代表某個整數(shù)。(下同)設(shè)計思想:如果k3時,參數(shù)的個數(shù)太多或太少報錯,根據(jù)參數(shù)個數(shù)來判斷有無文件名參數(shù),然后進行相應(yīng)的文件讀操作流程圖:開始Y參數(shù)太多或太少,報錯k3N在uof中找到當(dāng)前正在訪問的文件,將其文件
22、名賦給FileName,并置haveFileName為false表示無文件參數(shù)Comd10=|或k=1YN將comd1的值賦給FileName根據(jù)命令要求讀信息返回命令執(zhí)行結(jié)果:運行結(jié)果如圖:打開boy文件,進行read無參數(shù)操作?,F(xiàn)在你可以輸入各種操作命令.Help 簡易幫助信息.exit 退出本程序.C:/open boy文件/boy打開成功。C:/readHello boy.Welcome to Nanjing University of Technology.Welcome to School of Infomation Science and Engineering.Welcome to Department of Computer Science and Technology.C:/C:/readsdfgdgsehew4.17 修改write命令,允許不帶“文件名”參數(shù)(選做內(nèi)容)修改write命令處理函數(shù)WriteComd(),允許其命令中不帶“文件名”參數(shù)。這樣,除了參考程序中提供的以下5種命令形式:
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職(動物科學(xué))動物遺傳育種期末測試試題及答案
- 高一語文期末復(fù)習(xí)之作文審題訓(xùn)練答案【選擇題與標題結(jié)合】
- 2026年康復(fù)工程(康復(fù)輔助器具)試題及答案
- 2026年環(huán)境監(jiān)測(大氣污染物檢測)試題及答案
- 2025年中職建筑裝飾(建筑裝飾應(yīng)用)試題及答案
- 2026年竹木百葉簾項目可行性研究報告
- 2025年高職車站值班(應(yīng)急處置)試題及答案
- 多焦人工晶體與屈光手術(shù)的選擇策略
- 2025年大學(xué)動物科學(xué)(動物科學(xué)技巧)試題及答案
- 2025年大學(xué)理學(xué)(物理學(xué))試題及答案
- 發(fā)電專業(yè)的畢業(yè)論文
- 2025秋季學(xué)期國開電大法律事務(wù)??啤缎淌略V訟法學(xué)》期末紙質(zhì)考試案例分析題庫珍藏版
- 患者身份識別管理標準WST840-2025學(xué)習(xí)解讀課件
- 2025年N1叉車司機考試試題(1000題)(含答案)
- 醫(yī)院醫(yī)療質(zhì)量分析會
- 鐵路甲供料管理辦法
- 酒吧廚房小吃承包協(xié)議書
- 項目系統(tǒng)測試報告模板
- 2025國開電大知識產(chǎn)權(quán)法形考作業(yè)1234答案
- 網(wǎng)約車分公司管理制度
- 社區(qū)文藝團隊管理制度
評論
0/150
提交評論