優(yōu)選(VR虛擬現(xiàn)實)操作系統(tǒng)原理文件虛擬管理_第1頁
優(yōu)選(VR虛擬現(xiàn)實)操作系統(tǒng)原理文件虛擬管理_第2頁
優(yōu)選(VR虛擬現(xiàn)實)操作系統(tǒng)原理文件虛擬管理_第3頁
優(yōu)選(VR虛擬現(xiàn)實)操作系統(tǒng)原理文件虛擬管理_第4頁
優(yōu)選(VR虛擬現(xiàn)實)操作系統(tǒng)原理文件虛擬管理_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、LOGO 企業(yè)言酈YOUR COMPANY NAME IS HERE 專業(yè)丨專注丨精心1卓越 隨心編輯,值得下瞬有!優(yōu)選(VR虛擬現(xiàn)實)操作系統(tǒng)原理文件虛擬管理操作系統(tǒng)原理課程設(shè)計報告姓 名:班 級:學(xué) 號:指導(dǎo)老師:年 月曰目錄一、操作系統(tǒng)原理課程設(shè)計的目的與要求 11、目標(biāo): 12、要求: 1二、簡述課程設(shè)計內(nèi)容、主要功能和實現(xiàn)環(huán)境 31、主要功能: 32、主要設(shè)計內(nèi)容: 33、運行環(huán)境: 4三、任務(wù)的分析、設(shè)計、實現(xiàn)和討論 51、任務(wù)的分析 52、任務(wù)的設(shè)計與實現(xiàn)(分別給出系統(tǒng)總控和本人負(fù)責(zé)實現(xiàn)的算法流程圖與說明) 63、操作過程和結(jié)果分析 1.04、思考題的解答和討論 1.2四、操作系

2、統(tǒng)課程設(shè)計小結(jié)(收獲、不足與建議) 1. 4五、附錄 (主要源程序和運行結(jié)果的清單 ) 1.5操作系統(tǒng)原理課程設(shè)計的目的與要求1、目標(biāo):隨著社會信息量的極大增長, 要求計算機(jī)處理的信息與日俱增涉及到社會生活的各個方 面。因此, 文件管理是操作系統(tǒng)的一個極為重要的組成部分。 學(xué)生應(yīng)該運用獨立的高級語言 來編寫一個簡單和可操作的文件操作系統(tǒng), 模擬文件管理的工程運作。 從而對各種文件操作 指令的實質(zhì)內(nèi)容和過程原理有比較深刻的了解, 掌握他們的實施方法加深理解課堂上講授過 的知識。我小組需要實施的文件管理是任務(wù)六,包括文件系統(tǒng)的:建立,關(guān)閉以及寫的功能。2、要求:(1)設(shè)計一個多( n )用戶的文件

3、系統(tǒng),每個用戶戶最多保存m 個文件。(2)限制用戶在一次運行中只能打開一個文件。(3)系統(tǒng)應(yīng)能檢查打入命令的正確性,出錯是要能夠顯示出錯的原因。(4)對文件的權(quán)限必須有保護(hù)措施,如果只能運行,允許讀,允許寫等。在每次打開 文件時,根據(jù)本次打開的要求,設(shè)置保護(hù)級別,即可有二級保護(hù)。( 5)對文件的操作表述中必須有以下指令:建立: create()刪除:delete()打開:open()關(guān)閉close()讀:read()寫:write()、簡述課程設(shè)計內(nèi)容、主要功能和實現(xiàn)環(huán)境此次實驗的基本內(nèi)容就是完成一個可執(zhí)行的文件系統(tǒng)管理的操作系統(tǒng)。1、主要功能:一個由 10 個用戶的操作系統(tǒng),每個用戶最多保存

4、 10 個文件,一次運行中用戶可 打開 5 個文件。系統(tǒng)對相應(yīng)的操作判斷操作性的正確與否并進(jìn)入相應(yīng)的菜單運行。 為使用者提供了 操作的方便,不需要敲代碼來實現(xiàn)程序的功能。該程序設(shè)置了用戶登入,創(chuàng)建文件, 打開文件,關(guān)閉文件,寫文件以及對用戶文件總體概況的結(jié)果顯示。另外,為了更加 真實的反應(yīng)該系統(tǒng)的對文件可執(zhí)行程度的判斷,添加了保護(hù)碼控制文件的讀寫操作的 安全性。2、主要設(shè)計內(nèi)容:(1 )本實習(xí)設(shè)計一個 10 個用戶的文件系統(tǒng), 每個用戶最多可保存 10 個文件, 每 個文件名都為單個字符,一次運行中用戶可打開 5 個文件。(2 )程序采用二級文件目錄, 即設(shè)置了主文件目錄 (MFD )和用戶文

5、件目錄 (UFD )。 前者應(yīng)包含文件主 (即用戶) 及他們的目錄區(qū)指針; 后者應(yīng)給出每個主文件占有的 文件目錄, 即文件名,保護(hù)碼, 文件長度以及他們存放的位置等。 另外為打開文件 設(shè)置了運行文件目錄( AFD ),在文件打開時應(yīng)填入打開文件號,本次打開保護(hù)碼 和讀寫指針等。(3 )為了便于實現(xiàn),對文件的讀寫作了簡化,在執(zhí)行讀寫命令時,只修改讀寫指 針,并不進(jìn)行實際文件的讀寫操作。3、運行環(huán)境:課程設(shè)計的 實現(xiàn)環(huán)境是在 WINXP2000 下運行 Microsoft Visual C+ 和在 WINXP2000 下運行 WORD2003 。圖1-2打開文件目錄圖三、任務(wù)的分析、設(shè)計、實現(xiàn)和討

6、論1、任務(wù)的分析(1 )、整個源程序采用一維數(shù)組來定義。用戶登錄采用最簡單的選擇型,總共設(shè)置10位用戶,登陸即選擇相對應(yīng)的用戶名。文件目錄的檢索是使用了簡單的線性搜索,而沒有采用哈希等有效的算法。該設(shè)計的程序的保護(hù)碼形式采取簡單的單字符,分為3種,其中分別是0-只可讀,1-只可寫,2-可讀寫。另外對于文件打開與關(guān)閉的操作設(shè)置了單字節(jié)的標(biāo) 識符有,0-文件已關(guān)閉,1-文件未關(guān)閉。(2 )、整個程序的布局應(yīng)該是有7個函數(shù),分別為Incitialize()初始化函數(shù),create。建立文件函數(shù),open()對文件的打開函數(shù),close()對文件的關(guān)閉函數(shù), write()對文件的寫 函數(shù),Show(

7、)顯示概況信息的函數(shù)和 main()主函數(shù)。每個函數(shù)都是實現(xiàn)改程序的重要環(huán)節(jié)。 創(chuàng)建文件函數(shù)決定了整個程序的關(guān)鍵它需要準(zhǔn)確的定義與算法。在定義函數(shù)時定義結(jié)構(gòu)體, 把需要的變量定義完整,整個程序主要還是通過數(shù)組的運用來完成的。通過數(shù)組來銜接主目錄和用戶目錄來執(zhí)行之后的操作。(3) 、主文件目錄與用戶目錄的結(jié)構(gòu)圖如下圖1-1 :圖1-1 文件系統(tǒng)目錄結(jié)構(gòu)圖(4) 、打開文件目錄如下圖圖1-2所示:打開文件號打開保護(hù)碼讀寫指針2、任務(wù)的設(shè)計與實現(xiàn)(分別給出系統(tǒng)總控和本人負(fù)責(zé)實現(xiàn)的算法流 程圖與說明)(1)、在編譯程序?qū)崿F(xiàn)功能的任務(wù)中,我主要負(fù)責(zé)最初的結(jié)構(gòu)體定義,對關(guān)鍵變量的初 始化以及對全程序的修改

8、及完善。定義結(jié)構(gòu)體以及變量是程序的開頭,也是關(guān)鍵因素之一, 對程序編譯時所采用的算法進(jìn)行了決定性作用。(2)、定義的結(jié)構(gòu)體以一維數(shù)組的形式定義,便于組員之間相互理解與編譯。結(jié)構(gòu)體定義:a、Mfd用戶目錄對象名類型說明user name9Char型數(shù)組用戶名Cou ntInt對用戶數(shù)的計數(shù)器Ufd文件結(jié)構(gòu)體數(shù)組文件目錄數(shù)組UFDFile numMfd MFDUsernum數(shù)組 用戶數(shù)的數(shù)組b、Afd文件目錄文件打開目錄對象名類型說明OpenNoInt打開文件號ProInt保護(hù)碼Afd AFDOpe nnum數(shù)組 打開文件數(shù)c、Ufd 文件目錄對象名類型說明File nameChar文件名Proi

9、nt文件保護(hù)碼Len gthint文件長度FlagInt文件打開標(biāo)識號Afd數(shù)組打開文件數(shù)AFDOpe nnumUfd UFDFile num數(shù)組文件數(shù)量、初始化定義:int i,j=O;兩個變量分別代表 MFD和UFD中所指的當(dāng)前位置MFDi.UFDj.file name=NULL;文件名設(shè)為空MFDi.UFDj.flag=O;打開標(biāo)識符為關(guān)閉MFDi.UFDj.length=O; 長度為 0MFDi.UFD=3; 保護(hù)碼不存在MFDi.UFDj.AFD-Ope nN o=0;打開目錄號為 0(4)、操作模擬流程:(5) 、 詳細(xì)說明:在設(shè)計方面, 是按數(shù)組套數(shù)組的思想進(jìn)行定義。

10、即 Mfd 數(shù)組中套 Ufd 數(shù)組, 再 Ufd 數(shù) 組中套 Afd 數(shù)組。這樣不需要指針的定義,也能很有效的找到用戶所對的文件以及文件和 所對的文件打開號。 但是這樣也有缺陷, 需要定義很大的數(shù)組容量, 占用了很多空間, 另外, 因為定義的是字符型而沒有定義字符型數(shù)組, 導(dǎo)致對于文件名的定義執(zhí)行和輸出只能實現(xiàn)單 字節(jié)。(6) 、 總體設(shè)計概要:a、結(jié)構(gòu)體定義完成后,將定以后的變量以及數(shù)組等信息放入各個函數(shù)進(jìn)行編譯操 作,做為最主要的開頭核心函數(shù) Create ()創(chuàng)建文件函數(shù),編譯者按照定義的結(jié)構(gòu)體把要 求的 3 位安全碼改成了 1 位,由“ 0-2 ”三個數(shù)字實現(xiàn)對文件的讀寫操作的保護(hù),同

11、時用了 多 個 循 環(huán) 體 來 對 操 作 者 可 能 出 現(xiàn) 的 誤 操 作 做 了 相 應(yīng) 合 理的 處 理 , 另 外 , “MFDk.UFDi.AFDi.OpenNo=count+;”對打開函數(shù)中打開號的處理也提前完成。Create 的返回值為“ return count; ”的值要在打開函數(shù)中賦值給打開號。Open 和 Close 函數(shù)由另一位成員完成,其中 Open ()打開函數(shù)按照要求進(jìn)行,一個為標(biāo)識碼的設(shè)置,初始循環(huán)體“ while(iFilenum) ”打開文件“ MFDk.UFDi.flag=1;為0現(xiàn)在打開后改為1。Close ()關(guān)閉函數(shù)中“ if(MFDk.UFDi.

12、flag=1 ”判斷標(biāo)識碼, “MFDk.UFDi.flag=0 ;”文件關(guān)閉后將標(biāo)識碼的值改為” 0”。我和另一位成員一起完成 write() 寫文件函數(shù)的編譯, “MFDk.UFD=1|MFDk.UFD=2”和“if(MFDk.UFDi.flag=1) ”;兩句判斷語是否可寫入和是否文件已經(jīng)打開將保護(hù)碼和標(biāo)識 碼 的 作 用 發(fā) 揮 出 來 , 并 且 寫 函 數(shù) 添 加 了 將 文 件 長 度 增 加 的 功 能 “l(fā)ength=len+MFDk.UFDi.length;”Show ()顯示信息函數(shù)將之前保存的信息輸出,以簡明概要的輸出該文件管理系統(tǒng)對 文件操作后的信

13、息, Show ()函數(shù)主要需要之前函數(shù)的保存工作,之前函數(shù)編輯成員未能 將內(nèi)容保存在各自的函數(shù)中,在之后的修改中得以實現(xiàn),Write 函數(shù)中 對長度的保存: “MFDk.UFDi.length=length; ”Create 函數(shù)中 對文件名的保存: “ MFDk.UFDi.filename=name; ”對保護(hù)碼的保存: “MFDk.UFD=pro; ”對長度的保存: “ MFDk.UFDi.length=length; ”打開碼的保存: “ MFDk.UFDi.AFDi.OpenNo=count+;”主函數(shù) main 的編譯成員, 是將用戶函數(shù)與主函數(shù)合并, 整個程序中沒有用戶

14、函數(shù) user (),并導(dǎo)致 MDF 結(jié)構(gòu)體所定義的 username9 和 count 沒有利用。將主界面顯示格式設(shè) 為菜單操作,這對于思考題的要求打到了效果。此外,其定義了9 個用戶并通過 9 個 if 語句判斷用戶名的存在性運用 switch 語句施行對界面的選擇菜單操作。b 、程序的主要的流程結(jié)構(gòu)如下所示,圖1-5圖 1-5 文件系統(tǒng)的總流程圖3、操作過程和結(jié)果分析(1 )用戶登錄:在操作界面中選擇用戶登錄(0-9 )以及錯誤操作如圖 1-6 所示圖 1-6 選擇用戶圖 1-7 用戶輸入錯誤重新輸入(2)建立文件, 選擇 1 進(jìn)入建立文件的界面, 輸入文件的名字, 保護(hù)碼以及長度即可,

15、 可以建立多個文件,文件 b 長度 210 保護(hù)碼 2 ;文件 a 長度 341 保護(hù)碼 1 ;文件名 長度 93 保護(hù)碼 0 。以及錯誤操作創(chuàng)建同名文件圖 1-8 進(jìn)入用戶 6 并建立文件 b圖 1-9 在用戶 6 下建立文件 a圖 1-9 在用戶 6 下建立文件 m圖 1-10 文件存在( 3)打開文件,可以選擇 2 號鍵來打開已經(jīng)建立的文件;如果打開沒有建立的文件會 顯示。分別打開 b、 a、m 和未建立的文件 c。圖 1-11 成功打開文件 b圖 1-12 成功打開文件 a圖 1-13 成功打開文件 m圖 1-14 打開不存在的文件效果圖(4 )關(guān)閉文件,選擇菜單 3 號,即可關(guān)閉已經(jīng)

16、建立并且打開的文件。如果關(guān)閉不存在的文 件就會提示該文件不存在。分別關(guān)閉b、a、 m 以及未建立的文件 d。圖 1-15 關(guān)閉文件 b圖 1-16 關(guān)閉文件 a圖 1-17 關(guān)閉文件 m圖 1-18 打開沒有建立的文件(5 )寫文件,選擇 4 即可寫文件,在寫文件的時候需輸入文件名,所需寫入文件信息的長 度,對被關(guān)閉的文件寫入和被保護(hù)不能寫入的文件以及對不存在的文件寫入。分別對b文件寫入長度310,總長度520 ;對a文件寫入510,總長度810 ;文件m寫保 護(hù)不能寫入。再執(zhí)行菜單 3,關(guān)閉 b 文件,再對 b 文件寫入。圖 1-19 寫文件 b圖 1-20 寫文件 a圖 1-21 寫文件

17、m圖 1-22 寫未建立文件 q圖 1-23 寫已被關(guān)閉的文件 b(6)顯示文件,輸入 5,系統(tǒng)會打印出當(dāng)前用戶已經(jīng)輸入的文件信息。圖 1-24 顯示文件信息(7 )用戶更換,如果想更換用戶的話,輸入 6 即可。圖 1-25 用戶更換(8 )退出系統(tǒng),按 7 即可退出程序。4、思考題的解答和討論對于思考題 1 ,本次課程設(shè)計程序已經(jīng)使用了菜單方式操作,每幅屏幕要為用戶提 供足夠的選擇信息, 不需要打入冗長的命令。 該方式使整個操作界面簡潔明了, 還提 高了操作效率,同時也為使用者提供了方便。具體代碼如下:printf(%s, 請輸入對文件的命令 :n1: 建立 n2: 打開 n3: 關(guān)閉 n4

18、: 寫 n5: 顯示文件n6:用戶切換n7:退出n);scanf(%d,&order);while(order!=7)switch(order)case 1:count=create(use,count);break;case 2:ope n( use);break;case 3:close(use);break;case 4:Write(use);break;case 5:Show(use);break;case 6:mai n();printf(%s,n請輸入對文件的命令:n1:建立n2:打開n3:關(guān)閉n4:寫n5:顯示文件n6:用戶切換n7:退出n”);sca nf(%d,&order)

19、;對于思考題3,認(rèn)為應(yīng)該設(shè)置一個訪問權(quán)值,類似該課程設(shè)計中的保護(hù)碼,2是可以訪問上級菜單和下級菜單,1是只可以訪問下一級菜單,0是只可以訪問上級菜單。通過設(shè)置共享碼來實現(xiàn)同一級的共享化,類似這次課程設(shè)計的flag打開標(biāo)識碼。四、操作系統(tǒng)課程設(shè)計小結(jié)(收獲、不足與 建議)五、附錄 (主要源程序和運行結(jié)果的清單 )主要函數(shù)代碼:void Incitialize()/ 初始化int i,j=0;for(i=0;iOpenNo=0;int create(int k,int count)int i=0,length,pro;char name;scanf(%s,&name);/getchar();whi

20、le(iFilenum)if(MFDk.UFDi.filename!=NULL)if(MFDk.UFDi.filename=name)printf(%s, 該文件已經(jīng)存在 !);return count;i+;else break;if(i=Filenum)printf(%s, 用戶文件已滿 ,不可再創(chuàng)建 !);return count;printf(%s, 請輸入文件的長度 :);scanf(%d,&length);printf(%s, 請輸入文件的保護(hù)碼 (0-只可讀 1-只可寫 2-可讀寫 ):);scanf(%d,&pro);for(i=0;iFilenum;i+)if(MFDk.UF

21、Di.filename=NULL)MFDk.UFDi.filename=name;MFDk.UFDi.length=length;MFDk.UFD=pro;MFDk.UFDi.AFDi.OpenNo=count+;printf(%s, 創(chuàng)建成功 !);break;return count;void open(int k)int i=0;int pro,OpenNo;char name;printf(%s, 請輸入文件名 :);while(iFilenum)if(MFDk.UFDi.filename=name)printf( 輸入該文件保護(hù)碼 :);scanf(%s,&pro);pri

22、ntf( 該文件的打開碼為 :);printf(%dn,MFDk.UFDi.AFDi.OpenNo);printf( 文件已經(jīng)打開 !);MFDk.UFDi.flag=1;return;elsei+;if(i=Filenum)printf(%s, 不存在該文件 !n);void close(int k)int i=0;char name;printf( 請輸入文件名 :);scanf(%s,&name);while(iFilenum)if(MFDk.UFDi.filename=name) if(MFDk.UFDi.flag=1)!n);!n);printf(%s, 文件已經(jīng)成功關(guān)閉MFDk.UFDi.flag=0;return;elseprintf( 文件本已處于關(guān)閉狀態(tài)return;else i+;if(i=Filenum)printf(%s, 不存在該文件 !n);void Write(int k)int i=0;int len,length;char name;

溫馨提示

  • 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

提交評論