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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

最新文檔

評(píng)論

0/150

提交評(píng)論