操作系統(tǒng)原理-文件虛擬管理_第1頁
操作系統(tǒng)原理-文件虛擬管理_第2頁
操作系統(tǒng)原理-文件虛擬管理_第3頁
操作系統(tǒng)原理-文件虛擬管理_第4頁
操作系統(tǒng)原理-文件虛擬管理_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.PAGE :.;PAGE 17課程設(shè)計報告姓 名: 班 級: 學 號: 指點教師: 年 月 日目錄 TOC o 1-2 u 一、課程設(shè)計的目的與要求 PAGEREF _Toc264157599 h 11、目的: PAGEREF _Toc264157600 h 12、要求: PAGEREF _Toc264157601 h 1二、簡述課程設(shè)計內(nèi)容、主要功能和實現(xiàn)環(huán)境 PAGEREF _Toc264157602 h 21、主要功能: PAGEREF _Toc264157603 h 22、主要設(shè)計內(nèi)容: PAGEREF _Toc264157604 h 23、運轉(zhuǎn)環(huán)境: PAGEREF _Toc264

2、157605 h 2三、義務的分析、設(shè)計、實現(xiàn)和討論 PAGEREF _Toc264157606 h 31、義務的分析 PAGEREF _Toc264157607 h 32、義務的設(shè)計與實現(xiàn)分別給出系統(tǒng)總控和本人擔任實現(xiàn)的算法流程圖與闡明 PAGEREF _Toc264157608 h 43、操作過程和結(jié)果分析 PAGEREF _Toc264157609 h 74、思索題的解答和討論 PAGEREF _Toc264157610 h 11四、課程設(shè)計小結(jié)收獲、缺乏與建議 PAGEREF _Toc264157611 h 12五、附錄(主要源程序和運轉(zhuǎn)結(jié)果的清單) PAGEREF _Toc26415

3、7612 h 13一、課程設(shè)計的目的與要求1、目的:隨著社會信息量的極大增長,要求計算機處置的信息與日俱增涉及到社會生活的各個方面。因此,文件管理是操作系統(tǒng)的一個極為重要的組成部分。學生應該運用獨立的高級言語來編寫一個簡單和可操作的文件操作系統(tǒng),模擬文件管理的工程運作。從而對各種文件操作指令的本質(zhì)內(nèi)容和過程原理有比較深化的了解,掌握他們的實施方法加深了解課堂上講授過的知識。我小組需求實施的文件管理是義務六,包括文件系統(tǒng)的:建立,封鎖以及寫的功能。2、要求:1設(shè)計一個多n用戶的文件系統(tǒng),每個用戶戶最多保管m個文件。2限制用戶在一次運轉(zhuǎn)中只能翻開一個文件。3系統(tǒng)應能檢查打入命令的正確性,出錯是要可

4、以顯示出錯的緣由。4對文件的權(quán)限必需有維護措施,假設(shè)只能運轉(zhuǎn),允許讀,允許寫等。在每次翻開文件時,根據(jù)本次翻開的要求,設(shè)置維護級別,即可有二級維護。5對文件的操作表述中必需有以下指令: 建立: create() 刪除: delete() 翻開: open() 封鎖 close() 讀: read() 寫: write()二、簡述課程設(shè)計內(nèi)容、主要功能和實現(xiàn)環(huán)境此次實驗的根本內(nèi)容就是完成一個可執(zhí)行的文件系統(tǒng)管理的操作系統(tǒng)。1、主要功能:一個由10個用戶的操作系統(tǒng),每個用戶最多保管10個文件,一次運轉(zhuǎn)中用戶可翻開5個文件。系統(tǒng)對相應的操作判別操作性的正確與否并進入相應的菜單運轉(zhuǎn)。為運用者提供了操作

5、的方便,不需求敲代碼來實現(xiàn)程序的功能。該程序設(shè)置了用戶登入,創(chuàng)建文件,翻開文件,封鎖文件,寫文件以及對用戶文件總體概略的結(jié)果顯示。另外,為了更加真實的反響該系統(tǒng)的對文件可執(zhí)行程度的判別,添加了維護碼控制文件的讀寫操作的平安性。2、主要設(shè)計內(nèi)容:1本實習設(shè)計一個10個用戶的文件系統(tǒng),每個用戶最多可保管10個文件,每個文件名都為單個字符,一次運轉(zhuǎn)中用戶可翻開5個文件。2程序采用二級文件目錄,即設(shè)置了主文件目錄MFD和用戶文件目錄UFD。前者應包含文件主即用戶及他們的目錄區(qū)指針;后者應給出每個主文件占有的文件目錄,即文件名,維護碼,文件長度以及他們存放的位置等。另外為翻開文件設(shè)置了運轉(zhuǎn)文件目錄AFD

6、,在文件翻開時應填入翻開文件號,本次翻開維護碼和讀寫指針等。3為了便于實現(xiàn),對文件的讀寫作了簡化,在執(zhí)行讀寫命令時,只修正讀寫指針,并不進展實踐文件的讀寫操作。3、運轉(zhuǎn)環(huán)境: 課程設(shè)計的實現(xiàn)環(huán)境是在WINXP2000下運轉(zhuǎn)Microsoft Visual C+和在WINXP2000下運轉(zhuǎn)WORD2003。三、義務的分析、設(shè)計、實現(xiàn)和討論1、義務的分析1、整個源程序采用一維數(shù)組來定義。用戶登錄采用最簡單的選擇型,總共設(shè)置10位用戶,登陸即選擇相對應的用戶名。文件目錄的檢索是運用了簡單的線性搜索,而沒有采用哈希等有效的算法。該設(shè)計的程序的維護碼方式采取簡單的單字符,分為3種,其中分別是0-只可讀,

7、1-只可寫,2-可讀寫。另外對于文件翻開與封鎖的操作設(shè)置了單字節(jié)的標識符有,0-文件已封鎖,1-文件未封鎖。2、整個程序的規(guī)劃應該是有7個函數(shù),分別為Incitialize()初始化函數(shù),create()建立文件函數(shù),open()對文件的翻開函數(shù),close()對文件的封鎖函數(shù),write()對文件的寫函數(shù),Show()顯示概略信息的函數(shù)和main()主函數(shù)。每個函數(shù)都是實現(xiàn)改程序的重要環(huán)節(jié)。創(chuàng)建文件函數(shù)決議了整個程序的關(guān)鍵它需求準確的定義與算法。在定義函數(shù)時定義構(gòu)造體,把需求的變量定義完好,整個程序主要還是經(jīng)過數(shù)組的運用來完成的。經(jīng)過數(shù)組來銜接主目錄和用戶目錄來執(zhí)行之后的操作。3、主文件目錄

8、與用戶目錄的構(gòu)造圖如以下圖1-1:UFDMFD用戶名文件目錄指針用戶名文件目錄指針用戶名文件目錄指針文件名維護碼文件長度文件名文件名維護碼文件長度文件名圖1-1 文件系統(tǒng)目錄構(gòu)造圖4、翻開文件目錄如以下圖圖1-2所示:翻開文件號翻開維護碼讀寫指針圖1-2 翻開文件目錄圖2、義務的設(shè)計與實現(xiàn)分別給出系統(tǒng)總控和本人擔任實現(xiàn)的算法流程圖與闡明(1)、在編譯程序?qū)崿F(xiàn)功能的義務中,我主要擔任最初的構(gòu)造體定義,對關(guān)鍵變量的初始化以及對全程序的修正及完善。定義構(gòu)造體以及變量是程序的開頭,也是關(guān)鍵要素之一,對程序編譯時所采用的算法進展了決議性作用。(2)、定義的構(gòu)造體以一維數(shù)組的方式定義,便于組員之間相互了解

9、與編譯。構(gòu)造體定義:a、Mfd用戶目錄對象名類型闡明username9Char型數(shù)組用戶名CountInt對用戶數(shù)的計數(shù)器Ufd UFDFilenum文件構(gòu)造體數(shù)組文件目錄數(shù)組Mfd MFDUsernum 數(shù)組用戶數(shù)的數(shù)組b、Afd 文件目錄文件翻開目錄對象名類型闡明OpenNoInt翻開文件號ProInt維護碼Afd AFDOpennum數(shù)組翻開文件數(shù)c、Ufd文件目錄對象名類型闡明FilenameChar文件名Proint文件維護碼Lengthint文件長度FlagInt文件翻開標識號Afd AFDOpennum數(shù)組翻開文件數(shù)Ufd UFDFilenum數(shù)組文件數(shù)量(3)、初始化定義:in

10、t i,j=0;兩個變量分別代表MFD和UFD中所指的當前位置MFDi.UFDj.filename=NULL;文件名設(shè)為空MFDi.UFDj.flag=0;翻開標識符為封鎖MFDi.UFDj.length=0;長度為0MFDi.UFD=3;維護碼不存在MFDi.UFDj.AFD-OpenNo=0;翻開目錄號為0(4)、操作模擬流程:翻開文件號j翻開維護碼AFDUFDMFD用戶名用戶k用戶名文件i維護碼文件長度文件名(5)、詳細闡明:在設(shè)計方面,是按數(shù)組套數(shù)組的思想進展定義。即Mfd數(shù)組中套Ufd數(shù)組,再Ufd數(shù)組中套Afd數(shù)組。這樣不需求指針的定義,也能很有效的找到用戶所對的文件以及

11、文件和所對的文件翻開號。但是這樣也有缺陷,需求定義很大的數(shù)組容量,占用了很多空間,另外,由于定義的是字符型而沒有定義字符型數(shù)組,導致對于文件名的定義執(zhí)行和輸出只能實現(xiàn)單字節(jié)。(6)、總體設(shè)計概要:a、構(gòu)造體定義完成后,將定以后的變量以及數(shù)組等信息放入各個函數(shù)進展編譯操作,做為最主要的開頭中心函數(shù)Create創(chuàng)建文件函數(shù),編譯者按照定義的構(gòu)造體把要求的3位平安碼改成了1位,由“0-2三個數(shù)字實現(xiàn)對文件的讀寫操作的維護,同時用了多個循環(huán)體來對操作者能夠出現(xiàn)的誤操作做了相應合理的處置,另外,“MFDk.UFDi.AFDi.OpenNo=count+;對翻開函數(shù)中翻開號的處置也提早完成。Create的

12、前往值為“return count;的值要在翻開函數(shù)中賦值給翻開號。Open和Close函數(shù)由另一位成員完成,其中Open翻開函數(shù)按照要求進展,一個循環(huán)體“while(iFilenum)翻開文件“MFDk.UFDi.flag=1;為標識碼的設(shè)置,初始為0如今翻開后改為1。Close封鎖函數(shù)中“if(MFDk.UFDi.flag=1判別標識碼,“MFDk.UFDi.flag=0;文件封鎖后將標識碼的值改為0。我和另一位成員一同完成write()寫文件函數(shù)的編譯,“MFDk.UFD=1|MFDk.UFD=2和“if(MFDk.UFDi.flag=1);兩句判別語能否可寫入和能否

13、文件曾經(jīng)翻開將維護碼和標識碼的作用發(fā)揚出來,并且寫函數(shù)添加了將文件長度添加的功能“l(fā)ength=len+MFDk.UFDi.length;Show顯示信息函數(shù)將之前保管的信息輸出,以簡明概要的輸出該文件管理系統(tǒng)對文件操作后的信息,Show函數(shù)主要需求之前函數(shù)的保管任務,之前函數(shù)編輯成員未能將內(nèi)容保管在各自的函數(shù)中,在之后的修正中得以實現(xiàn),Write函數(shù)中 對長度的保管:“MFDk.UFDi.length=length;Create函數(shù)中 對文件名的保管:“MFDk.UFDi.filename=name;對維護碼的保管:“MFDk.UFD=pro;對長度的保管:“MFDk.UFDi.l

14、ength=length;翻開碼的保管:“MFDk.UFDi.AFDi.OpenNo=count+;主函數(shù)main的編譯成員,是將用戶函數(shù)與主函數(shù)合并,整個程序中沒有用戶函數(shù)user,并導致MDF構(gòu)造體所定義的username9和count沒有利用。將主界面顯示格式設(shè)為菜單操作,這對于思索題的要求打到了效果。此外,其定義了9 個用戶并經(jīng)過9個if語句判別用戶名的存在性運用switch語句施行對界面的選擇菜單操作。b、程序的主要的流程構(gòu)造如下所示,圖1-5Close()Write()Create()否選擇用戶名能否存在該用戶報告無此用戶重新選擇初始化運轉(zhuǎn)文件表AFD輸入菜單號是什么命令封鎖程序o

15、pen()退出Show()建立文件寫程序顯示當前目錄保管當前文件目錄翻開文件開場圖1-5 文件系統(tǒng)的總流程圖3、操作過程和結(jié)果分析1用戶登錄:在操作界面中選擇用戶登錄0-9以及錯誤操作如圖1-6所示圖1-6 選擇用戶圖1-7用戶輸入錯誤重新輸入2建立文件,選擇1進入建立文件的界面,輸入文件的名字,維護碼以及長度即可,可以建立多個文件,文件b長度210維護碼2;文件a長度341維護碼1;文件名m長度93維護碼0。以及錯誤操作創(chuàng)建同名文件圖1-8 進入用戶6并建立文件b圖1-9 在用戶6下建立文件a圖1-9 在用戶6下建立文件m圖1-10 文件存在3翻開文件,可以選擇2號鍵來翻開曾經(jīng)建立的文件;假

16、設(shè)翻開沒有建立的文件會顯示。分別翻開b、a、m和未建立的文件c。圖1-11 勝利翻開文件b圖1-12 勝利翻開文件a圖1-13 勝利翻開文件m圖1-14 翻開不存在的文件效果圖4封鎖文件,選擇菜單3號,即可封鎖曾經(jīng)建立并且翻開的文件。假設(shè)封鎖不存在的文件就會提示該文件不存在。分別封鎖b、a、m以及未建立的文件d。圖1-15 封鎖文件b圖1-16 封鎖文件a圖1-17 封鎖文件m圖1-18 翻開沒有建立的文件5寫文件,選擇4即可寫文件,在寫文件的時候需輸入文件名,所需寫入文件信息的長度,對被封鎖的文件寫入和被維護不能寫入的文件以及對不存在的文件寫入。分別對b文件寫入長度310,總長度520;對a

17、文件寫入510,總長度810;文件m寫維護不能寫入。再執(zhí)行菜單3,封鎖b文件,再對b文件寫入。圖1-19 寫文件b圖1-20 寫文件a圖1-21 寫文件m圖1-22 寫未建立文件q圖1-23 寫已被封鎖的文件b (6)顯示文件,輸入5,系統(tǒng)會打印出當前用戶曾經(jīng)輸入的文件信息。 圖1-24 顯示文件信息7用戶改換,假設(shè)想改換用戶的話,輸入6即可。圖1-25 用戶改換8退出系統(tǒng),按7即可退出程序。4、思索題的解答和討論對于思索題1,本次課程設(shè)計程序曾經(jīng)運用了菜一方式操作,每幅屏幕要為用戶提供足夠的選擇信息,不需求打入冗長的命令。該方式使整個操作界面簡約明了,還提高了操作效率,同時也為運用者提供了方

18、便。詳細代碼如下:printf(%s,請輸入對文件的命令:n1:建立n2:翻開n3:封鎖n4:寫n5:顯示文件n6:用戶切換n7:退出n);scanf(%d,&order);while(order!=7)switch(order)case 1:count=create(use,count);break;case 2:open(use);break;case 3:close(use);break;case 4:Write(use);break;case 5:Show(use);break;case 6:main();printf(%s,n請輸入對文件的命令:n1:建立n2:翻開n3:封鎖n4:寫

19、n5:顯示文件n6:用戶切換n7:退出n);scanf(%d,&order);對于思索題3,以為應該設(shè)置一個訪問權(quán)值,類似該課程設(shè)計中的維護碼,2是可以訪問上級菜單和下級菜單,1是只可以訪問下一級菜單,0是只可以訪問上級菜單。經(jīng)過設(shè)置共享碼來實現(xiàn)同一級的共享化,類似這次課程設(shè)計的flag翻開標識碼。校長教務處科研處校務處一 系十系教學行政科教學研討所研討生科科研科情報資料室技術(shù)效力部財務科基建科房管科總務科一一一實驗室一二教研室一三研討室一一教研室一一三實驗室一二教研室一三研討室一一教研室四、課程設(shè)計小結(jié)收獲、缺乏與建議五、附錄(主要源程序和運轉(zhuǎn)結(jié)果的清單)主要函數(shù)代碼:void Inciti

20、alize()/初始化int i,j=0;for(i=0;iOpenNo=0;int create(int k,int count)int i=0,length,pro;char name;printf(%s,請輸入文件名(單字符):);scanf(%s,&name);/getchar();while(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)建!)

21、;return count;printf(%s,請輸入文件的長度:);scanf(%d,&length);printf(%s,請輸入文件的維護碼(0-只可讀 1-只可寫 2-可讀寫):);scanf(%d,&pro);for(i=0;iFilenum;i+)if(MFDk.UFDi.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

22、 k)int i=0;int pro,OpenNo;char name;printf(%s,請輸入文件名:);scanf(%s,&name);while(iFilenum)if(MFDk.UFDi.filename=name)printf(輸入該文件維護碼:);scanf(%s,&pro);printf(該文件的翻開碼為:);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)printf(%s,文件曾經(jīng)勝利封鎖!n);MFDk.UFDi.flag=0;return;else printf(文件本已處于封鎖形狀!n);return;else i+;if(i=Filenum)printf(%s,

溫馨提示

  • 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

提交評論