操作系統(tǒng)課程設(shè)計實驗報告_第1頁
操作系統(tǒng)課程設(shè)計實驗報告_第2頁
操作系統(tǒng)課程設(shè)計實驗報告_第3頁
操作系統(tǒng)課程設(shè)計實驗報告_第4頁
操作系統(tǒng)課程設(shè)計實驗報告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

操作系統(tǒng)課程設(shè)計報告學院: 班級: 學生姓名: 學號: 指導老師: 提交日期: 一、實驗目的本設(shè)計的目的是實現(xiàn)操作系統(tǒng)和相關(guān)系統(tǒng)軟件的設(shè)計,其中涉及進程編程、I/O操作、存儲管理、文件系統(tǒng)等操作系統(tǒng)概念。二、 實驗要求在任一OS下,建立一個大文件,把它假象成一張盤,在其中實現(xiàn)一個簡單的模擬Linux文件系統(tǒng)。具體見附表三、 實驗環(huán)境Windows、VC三、實驗思想1、整體思路實驗可分為三個大模塊:文件組織結(jié)構(gòu)、目錄結(jié)構(gòu)、磁盤空間管理。編寫時,先定義重要的數(shù)據(jù)結(jié)構(gòu),整理好各個模塊的思路,列出程序清單。接著編寫一些對系統(tǒng)進行基本操作的函數(shù),然后利用這些函數(shù)實現(xiàn)各種功能。2、盤塊大概分布(分了128塊,每塊64字節(jié))盤塊0123456.....127用途 FAT表FAT表根目錄目錄數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)......數(shù)據(jù)盤塊與盤塊之間的鏈接,是利用FAT表項,(使用數(shù)組結(jié)構(gòu)),并用它記錄了所有盤塊的使用信息。優(yōu)點:可以利用FAT信息,迅速查找、打開各個目錄,進行創(chuàng)建、修改文件。3、目錄組成為了簡單,構(gòu)思目錄時,每個目錄只有8字節(jié),每盤存放最多8個目錄。其中,目錄名、文件名最多只能為3字節(jié),如果是文件的話,類型名也最多為2字節(jié)。區(qū)分目錄名和文件名的方法是:設(shè)計一個屬性項(1個字節(jié)),為8時表示純目錄,為4時表示文件目錄。具體分布如下圖:用途目錄名或文件名文件類型屬性文件起始盤塊文件長度大小3(字節(jié)) 2 11 1優(yōu)點:屬性可以區(qū)分純目錄、文件目錄;文件起始盤塊可以記錄文件的存放位置;文件長度,,在讀文件時控制指針,是否到了文件末尾。缺點:為了簡單,對文件名、目錄名、類型名都作了限制。最大分別為:3,3,2字節(jié)。說明:調(diào)試時,目錄名、文件名、類型名一定不能超過限制,否則出現(xiàn)非預期的結(jié)果4、FAT、磁盤管理實驗中,將磁盤分為128塊,每塊大小64字節(jié)。為了方便對空間管理,利用教材提到的方法,把每塊的塊號(指針)提取出來,形成FAT表:盤塊01234567。。。下一盤塊-1-149078-1若某文件的一個盤塊號為i,則這個文件的下一個盤塊為表中的第i項,其中0表示此盤塊空閑,-1表示結(jié)束。另一個重要的表是已打開文件表,用來記錄打開或建立的內(nèi)容,表如下:文件路徑名文件屬性起始盤文件長度讀指針寫指針塊號塊內(nèi)地址塊號塊內(nèi)地址5、重要數(shù)據(jù)結(jié)構(gòu)用戶結(jié)構(gòu):typedefstruct//用戶定義{Intuid;charname[20];charpassword[20];}user;目錄結(jié)構(gòu):typedefstruct//定義目錄結(jié)構(gòu){charname[3];//文件或目錄名為了簡單只是取3字節(jié)chartype[2];//文件類型名charattribute;//屬性charaddress;//文件或目錄的起始盤塊號charlength;//文件長度,為了簡單實驗是用盤塊為單位}content; //定義為目錄結(jié)構(gòu)打開文件的數(shù)據(jù)結(jié)構(gòu):typedefstructintdnum;//磁盤塊的塊號intbnum;//塊內(nèi)的第幾個字節(jié)}pointer;//讀寫指針結(jié)構(gòu)#definen5 〃定義打開文件的最大個數(shù);打開文件表項結(jié)構(gòu):typedefstruct{charname[20];//模擬絕對路徑charattribute;//文件屬性1個字節(jié)intnumber;//文件的起始盤的塊號intlength;//文件長度,字節(jié)為單位intflag;//操作類型 “0”以讀方式打開 “1”以寫方式打開pointerread,write;//讀寫指針}OFILE;//已經(jīng)打開文件表項的定義struct{OFILEfile[n];//已經(jīng)打開文件表intlength;//表中文件的數(shù)量;}openfile;//表的定義這里定義了一個本次實驗中最為重要的結(jié)構(gòu):打開文件項結(jié)構(gòu),它記錄了所有打開文件的信息,各種操作,如newfile、read_file、wirte_file等都是通過該文件項表來記錄讀寫指針的,同時它還可以實現(xiàn)設(shè)計三中的對用戶權(quán)限進行管理功能。6、 編寫基本函數(shù)時按照上面的思想,會變得比較簡單。7、 主要算法為了簡單,實驗時主要的算法,都是建立在數(shù)組的基礎(chǔ)上,所以比較簡單。例如:search(),查找目錄時,使用到了樹的結(jié)構(gòu),利用遞歸,遍歷目錄樹。其他基本是使用鏈表的方法。8、 由于初始設(shè)計時沒有考慮到界面,有些功能參數(shù),沒有模仿LINUX:copy、md、dir說明如下:dir,不帶參數(shù)時表示顯示當前目錄,帶時顯示給出目錄;copy,要按提示選擇內(nèi)部或外部復制;md,按提示選擇時在當前目錄創(chuàng)建或絕對路徑創(chuàng)建,選擇當前目錄時,不能帶‘/‘

四、重要函數(shù)流程圖和思路(包括優(yōu)缺點)1、allocate。2、search(char*name,intflag,int*dnum,int*bnum)查找路徑名為name的文件或目錄,返回該目錄的起始盤的塊號,該函數(shù)是各種操作時用于檢查路徑是否存在,是否重復,還可以通過dnum,bnum返回查找路徑的盤塊和盤塊內(nèi)的地址,從而可以打開其所在的目錄,進行讀寫操作。流程圖如下:查找絕對路徑名name

3、建立文件首先,根據(jù)文件路徑名查找,如果父目錄不存在,建立文件失??;如果存在,查看是否重名,如果有,給出提示,建立失??;否則,為文件建立文件目錄,分配盤塊,填寫目錄和表項。流程圖:44、main()流程圖:登陸 T 信息正確?Y5、同理,其他的函數(shù)只要理清思路,畫出流程圖,寫起來就比較簡單了。結(jié)束初始化5、同理,其他的函數(shù)只要理清思路,畫出流程圖,寫起來就比較簡單了。結(jié)束五、各功能調(diào)試說明和運行結(jié)果說明:注意測試時文件名、目錄名最大為3字節(jié),類型名最多2字節(jié)(設(shè)計時規(guī)定),否則出錯;同時,剛登陸時文件目錄為空。1、登陸默認帳號:2006pwd:123456或者2007123456界面如下:gfilesysucleone-succeed.loginaidpiM=123456eimd-isk<liost>■帳號信息錯誤時重新登陸2、info功能:顯示整個系統(tǒng)信息,只顯示FAT表和目錄內(nèi)容結(jié)果FfiT:冒堪: Q1 234567下一埃號:-1-1-109e09目錄:名禰擴展名花始思義長度/21<none>siridislc^Chmst■■ 3、md在指定路徑或當前路徑下創(chuàng)建指定目錄。重名時給出錯信息。輸入路徑時,系統(tǒng)會提示是當前目錄下還是在絕對路徑下建立目錄兩種情況分別運行如下:

simdisk<host>Zjia《1一currentcontent.2-griuepath〉?2simdisk<host>:ndjia(1—currentcontent.2—giuepath〉?i經(jīng)存在Isimdisk<liost>=.說明:當在當前目錄建立目錄時,不用加‘/’。第二次建立“jia”時提示“目錄已經(jīng)存在”是因為第一次md/jia時已經(jīng)建立了該目錄。<host>:dii*起始璽塊長度1<host>:dii*起始璽塊長度10minidiskM稱/Ljiapimdisk說明剛才創(chuàng)建成功!4、rd刪除指定目錄測試時刪除剛才創(chuàng)建的目錄eindis^Sliest>:rd/*jiaeindis^Sliest>:dir臨稱擴展名起始盤堤長度/ 《無》 2 1knone>bindish<host>:再運行dir時目錄為空。5、 dir帶參數(shù)時為顯示給出的絕對路徑不帶參數(shù)顯示為當前路徑。測試如上6、 newfile建立新文件,同時可以寫文件運行:imdi?kOiost>:neuf±LeZjiaappttribute<9-jusCread,3-peadfofsystem,4-readand^rlte>=?4pits:ianastudentimdisk<host>:cat/jia.wamastudent:TOC\o"1-5"\h\zimclisk :dii*勺稱擴展名色始煮塊勺裳/ 2 1i_a pp 4 1測試時,寫入Iamastudent檢查時運行cat/jia.pp 顯示剛創(chuàng)建的文件內(nèi)容還可以運行dir來檢查目錄

7、del刪除指定路徑的文件刪除剛才建立的文件simdisk<host>:del/jia.ppsimdisk<host>:cat/jia.pp忤件不存在!!simdisl;《host〉再運行cat/jia.pp時,文件已經(jīng)不存在,說明刪除成功!8、 Copy拷貝文件,除支持模擬Linux文件系統(tǒng)內(nèi)部的文件拷貝外,還支持host文件系統(tǒng)與模擬Linux文件系統(tǒng)間的文件拷貝先運行insidecopyeimdisk<host>:new£ileZjiaBkk<0—JustI'ccid,3~rcadfor^^rst^rri.4-rertdand s?4write:iloveyousimdisk<host>:copy<1-insidecopy,2-outsidecopy?>1<ccpyfpnm?/Jia-kl<copytoFiiB^path.ereatnewfile.…易制成功?!Eimdisk<host>:cat/liu.kkilove9(mhimdisk>=首先建立新文件/jia.kk然后復制到/liu.kk再運行cat/liu.kk檢查是否復制成功feindis^<hast>:cop^feindis^<hast>:cop^<1-insidecopy,2—outsidecopy?>2copyfrom?test.txtcopyto?/uei.kk復制成珈Icindisk<hast>:catZijei.kKiloueyoupindisk<hQst>d其中測試外部文件已經(jīng)放在當前路徑test.txt中說明:實驗時為了簡單,只考慮目標文件為新文件的情況,其他情況并未考慮。9、cd改變當前目錄gindisk<host>:checl^checkinc(...finish.gindisk<host>:.11、退出simdisk<host>:exit(joodbise?..See(Jeunexttime.pleaseturnofftheswitchPressankeytocontinueH設(shè)計二1、 基本思路設(shè)計二是在設(shè)計一的基礎(chǔ)上,設(shè)計shell主進程,接到命令時,創(chuàng)建后臺進程,處理命令。為了看到測試結(jié)果,創(chuàng)建后臺進程時會出現(xiàn)其窗口,這時,shell進程可以繼續(xù)接受命令,然后再創(chuàng)建新的進程。2、 設(shè)計時沒有考慮子進程向shell進程回傳數(shù)據(jù),只是一個簡單的shell。3、 流程圖| ?主進程N 是否有新命令4、本設(shè)計時主要時利用了內(nèi)存映射文件來實現(xiàn)shell進程與后臺模擬文件系統(tǒng)進程之間的通信,其中映射由shell進程來建立。主要函數(shù):CreateFileMapping()、建立映射OpenFileMapping()打開映射,把共享內(nèi)存映射到自己進程地址中來MapViewOfFile()映射對象的一個視圖UnmapViewOfFile()解除映射5、運行結(jié)果:此時shell還可以繼續(xù)接受新的命令c<C:documentsand5ettings\Administrator\^面、設(shè)計此時shell還可以繼續(xù)接受新的命令c<C:documentsand5ettings\Administrator\^面、設(shè)計1設(shè)計ZL\[jebug\system.exeTiixsisthebdickprocess.waitinjtheconmand...receivedconma.ndTiixsisthebdickprocess.waitinjtheconmand...receivedconma.nd:info<=T展無-擴<號T坦二靈稱Fft<=T展無-擴<號T坦二靈稱Fft盤下日名/-1-i起始盤快23 4 5 6?9 Q 0 & @長度1Fimsh.6、缺點:未考慮數(shù)據(jù)的回傳。設(shè)計三1、2、3、1、2、3、4、按鍵結(jié)束第一個進程,第二個進程開始運行函Design3hisisthebackprocess.waitingthecomriEincl...receiuedcommand:dir昏弟擴展名 起始盤塊長度z <X> 2 1kncne>思路在模擬文件系統(tǒng)中建立一個臨界區(qū),然后對其操作即可。為了體現(xiàn)“共享讀,互斥寫”要求,主進程連續(xù)創(chuàng)建了三個子進程對模擬文件系統(tǒng)進行訪問,當一個進程對共享區(qū)訪問時,其他進程等待,按提示結(jié)束該進程后,另外一個進程進入共享區(qū)。所有到的主要函數(shù)CRITICAL_SECTIONg;//建立臨界區(qū)對象InitializeCriticalSection(&g);//初始化對象EnterCriticalSection(&g)//進入臨界區(qū)LeaveCriticalSection(&g)//退出臨界區(qū)DeleteCriticalSection(&g)//刪除臨界區(qū)測試結(jié)果數(shù)據(jù)主要在主進程的界面顯示。運行結(jié)果:第一個進程運行kinish.fenteranychaptDexit.主進程信息如下:實驗小結(jié)附表:具體實驗要求操作系統(tǒng)課程設(shè)計課程設(shè)計目的本設(shè)計的目的是實現(xiàn)操作系統(tǒng)和相關(guān)系統(tǒng)軟件的設(shè)計,其中涉及進程編程、I/O操作、存儲管理、文件系統(tǒng)等操作系統(tǒng)概念。課程設(shè)計要求(1) 對進行認真分析,列出實驗具體步驟,寫出符合題目要求的程序清單,準備出調(diào)試程序使用的數(shù)據(jù)。(2) 以完整的作業(yè)包的形式提交原始代碼、設(shè)計文檔和可運行程序。提交的光盤應(yīng)當包括:設(shè)計題目,程序清單,運行結(jié)果分析,所選取的算法及其優(yōu)缺點,以及通過上機取得了哪些經(jīng)驗。程序清單要求格式規(guī)范,注意加注釋(包含關(guān)鍵字、方法、變量等,)在每個模塊前加注釋,注釋不得少于20%。課程設(shè)計要求同時上交打印文檔,設(shè)計報告包括設(shè)計題目,算法分析,關(guān)鍵代碼及其數(shù)據(jù)結(jié)構(gòu)說明,運行結(jié)果分析以及上機實踐的經(jīng)驗總結(jié)。設(shè)計一:設(shè)計任務(wù):模擬Linux文件系統(tǒng)在任一OS下,建立一個大文件,把它假象成一張盤,在其中實現(xiàn)一個簡單的模擬Linux文件系統(tǒng)。在現(xiàn)有機器硬盤上開辟100M的硬盤空間,作為設(shè)定的硬盤空間。編寫一管理程序simdisk對此空間進行管理,以模擬Linux文件系統(tǒng),要求:盤塊大小1k空閑盤塊的管理:Linux位圖法結(jié)構(gòu):超級塊,i結(jié)點區(qū),根目錄區(qū)該simdisk管理程序的功能要求如下:⑴info:顯示整個系統(tǒng)信息(參考Linux文件系統(tǒng)的系統(tǒng)信息),文件可以根據(jù)用戶進行讀寫保護。目錄名和文件名支持全路徑名和相對路徑名,路徑名各分量間用“/”隔開。cd…:改變目錄:改變當前工作目錄,目錄不存在時給出出錯信息。dir…:顯示目錄:顯示指定目錄下或當前目錄下的信息,包括文件名、物理地址、保護碼、文件長度、子目錄等(帶/s參數(shù)的dir命令,顯示所有子目錄)。md…:創(chuàng)建目錄:在指定路徑或當前路徑下創(chuàng)建指定目錄。重名時給出錯信息。rd..?:刪除目錄:刪除指定目錄下所有文件和子目錄。要刪目錄不空時,要給出提示是否要刪除。newfile...:建立文件。(content)cat...:打開文件。(content)copy..?:拷貝文件,除支持模擬Linux文件系統(tǒng)內(nèi)部的文件拷貝外,還支持host文件系統(tǒng)與模擬Linux文件系統(tǒng)間的文件拷貝,host文件系統(tǒng)的文件命名

溫馨提示

  • 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

提交評論