![微機原理課程設(shè)計多級文件管理系統(tǒng)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/6/7aeb5d76-d4fb-4d01-b2ad-97c1585cc927/7aeb5d76-d4fb-4d01-b2ad-97c1585cc9271.gif)
![微機原理課程設(shè)計多級文件管理系統(tǒng)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/6/7aeb5d76-d4fb-4d01-b2ad-97c1585cc927/7aeb5d76-d4fb-4d01-b2ad-97c1585cc9272.gif)
![微機原理課程設(shè)計多級文件管理系統(tǒng)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/6/7aeb5d76-d4fb-4d01-b2ad-97c1585cc927/7aeb5d76-d4fb-4d01-b2ad-97c1585cc9273.gif)
![微機原理課程設(shè)計多級文件管理系統(tǒng)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/6/7aeb5d76-d4fb-4d01-b2ad-97c1585cc927/7aeb5d76-d4fb-4d01-b2ad-97c1585cc9274.gif)
![微機原理課程設(shè)計多級文件管理系統(tǒng)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/6/7aeb5d76-d4fb-4d01-b2ad-97c1585cc927/7aeb5d76-d4fb-4d01-b2ad-97c1585cc9275.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、山東理工大學計算機學院課 程 設(shè) 計(操作系統(tǒng))班 級計科0805姓 名學 號指導教師二一一 年 六 月二十四日課程設(shè)計任務(wù)書及成績評定課題名稱多級目錄文件管理系統(tǒng)、題目的目的和要求: 鞏固和加深對操作系統(tǒng)(os)原理的理解,初步掌握操作系統(tǒng)組成模塊和應(yīng)用接口的使用方法,提高進行工程設(shè)計和系統(tǒng)分析的能力;通過選做上面的課題,實現(xiàn)os最基本模塊的管理功能,重點放在數(shù)據(jù)結(jié)構(gòu)設(shè)計、文檔規(guī)范化和程序設(shè)計風格。、設(shè)計進度及完成情況日 期內(nèi) 容6.13-6.15選取參考書,查閱有關(guān)文獻資料,完成課程設(shè)計說明書內(nèi)容1部分。 完成課程設(shè)計說明書內(nèi)容2-4部分6.166.20創(chuàng)建相關(guān)數(shù)據(jù)結(jié)構(gòu),錄入源程序6.21
2、6.22調(diào)試程序并記錄調(diào)試中的問題,完成課程設(shè)計說明書第5部分。6.23系統(tǒng)測試,演示設(shè)計成果,考核成績。6.24整理課程設(shè)計說明書,上午11時,由學習委員交課程設(shè)計說明書(計算機科學系9#213或直接交給指導教師)、主要參考文獻及資料1 湯子贏等.計算機操作系統(tǒng)(第二版).西安電子科技大學出版社,2006.82 馮耀霖等.操作系統(tǒng),西安電子科技大學出版社.19923 張堯?qū)W等.計算機操作系統(tǒng)教程(第2版).清華大學出版社,2001.44 譚耀銘.操作系統(tǒng).中國人民大學出版社,2003.45 abraham silberschatz,peter galvin & greg gagne,appl
3、ied operating system concepts,higher education press,2002、成績評定:設(shè)計成績: (教師填寫)指導老師: (簽字)二一一 年 六 月二十四日目 錄第一章 概述1第二章 系統(tǒng)分析2第三章 系統(tǒng)設(shè)計3第四章 程序設(shè)計流程圖或n-s圖5第五章 調(diào)試過程中的問題及系統(tǒng)測試情況18第六章 結(jié)束語21第一章 概述本課程設(shè)計意義 課程設(shè)計是實踐性教學中的一個重要環(huán)節(jié),它以某一課程為基礎(chǔ),可以涉及和課程相關(guān)的各個方面,是一門獨立于課程之外的特殊課程。課程設(shè)計是讓同學們對所學的課程更全面的學習和應(yīng)用,理解和掌握課程的相關(guān)知識。計算機操作系統(tǒng)一門重要的專業(yè)課
4、,是開發(fā)操作系統(tǒng)和軟件系統(tǒng)的理論和應(yīng)用基礎(chǔ)。操作系統(tǒng)的課程設(shè)計非常又必要,可以使學生通過編程實驗,更加深入得理解和掌握操作系統(tǒng)的基本理論和功能技術(shù),將相對抽象的理論應(yīng)用于實踐,提高分析問題和解決問題的能力,提高編寫和開發(fā)系統(tǒng)程序的能力。第二章 系統(tǒng)分析1 在內(nèi)存中開辟一個虛擬磁盤空間作為文件存儲器,在其上實現(xiàn)一個多用戶多目錄的文件系統(tǒng)。2 文件物理結(jié)構(gòu)可采用顯式鏈接或其他方法。3 磁盤空閑空間的管理可選擇位示圖或其他方法。如果采用位示圖來管理文件存儲空間,并采用顯式鏈接分配方式,則可以將位示圖合并到fat中。4 文件目錄結(jié)構(gòu)采用多用戶多級目錄結(jié)構(gòu),每個目錄項包含文件名、物理地址、長度等信息,還
5、可以通過目錄項實現(xiàn)對文件的讀和寫的保護。目錄組織方式可以不使用索引結(jié)點的方式,但使用索引結(jié)點,則難度系數(shù)為1.2。5 設(shè)計一個較實用的用戶界面,方便用戶使用。要求提供以下相關(guān)文件操作:(1)具有l(wèi)ogin (用戶登錄)(2)系統(tǒng)初始化(建文件卷、提供登錄模塊)(3)文件的創(chuàng)建: create(4)文件的打開:open(5)文件的讀:read(6)文件的寫:write(7)文件關(guān)閉:close(8)刪除文件:delete (9)創(chuàng)建目錄(建立子目錄):mkdir(10)改變當前目錄:cd(11)列出文件目錄:dir(12)退出:logout第三章 系統(tǒng)設(shè)計數(shù)據(jù)結(jié)構(gòu)1數(shù)據(jù)塊在內(nèi)存中的物理結(jié)構(gòu) ty
6、pedef struct fbunsigned fileblockid;/文件塊編號unsigned block_size; /文件塊的容量char *fileblockaddr; /文件塊地址struct fb *next; /下一個文件塊的地址 fileblock;2文件索引結(jié)構(gòu) typedef struct unsigned index;/文件元素索引編號char filenamename_len; /文件元素名char parentnamename_len; /父節(jié)點名unsigned fileblockid;/文件元素所在物理塊編號unsigned filelevel; /文件元素所
7、在層次,層文件元素名為一個文件元素邏輯位置unsigned effect; /是否有效,0-無效,1-有效 fileindexelement;3文件系統(tǒng)中文件元素的結(jié)構(gòu)(含文件夾和文件) typedef struct fsestruct fse *parent; /指向自己的父親節(jié)點unsigned filelevel; /文件元素所在層次,層文件元素名為一個文件元素的邏輯位置char filenamename_len; /文件元素名unsigned fileblockid;/文件元素所在物理塊編號unsigned fileelemlen;/文件元素的長度filetype type;/文件元素
8、類型fileaccess access;/文件元素可供操作的權(quán)限user creator;/文件創(chuàng)建者char createtime18;/創(chuàng)建時間,日期格式:mm/dd/yy hh:mi:sschar lastmodtime18;/最后一次修改時間char *filedata;/一個文件的數(shù)據(jù)開始地址,文件夾時該值為nullfilestatus filestu;/如果是一個文件表示文件當前的狀態(tài) fselement;4文件系統(tǒng)結(jié)構(gòu) typedef struct char *fsstart;/文件系統(tǒng)的起始地址unsigned superblocksize; /文件系統(tǒng)的容量bitmap bm
9、;/文件系統(tǒng)中的位示圖unsigned block_count;/文件系統(tǒng)中文件塊的數(shù)量fileblock *head;/文件系統(tǒng)中文件塊首地址fileindex fi;/文件系統(tǒng)中的文件索引 superblock;5文件系統(tǒng)的當前運行狀態(tài) typedef structuser currentuser;/當前用戶unsigned filelevel;/用戶所在文件系統(tǒng)層fselement *currparent;/當前層的父節(jié)點char *currentpath;/當前路徑 currentstatus;6用戶結(jié)構(gòu) typedef struct char *username;/用戶名稱usert
10、ype ut;/用戶類型 user;第四章 程序設(shè)計流程圖4.1整體思路概述首先系統(tǒng)要完成初始化的任務(wù),建立一個系統(tǒng),并等待用戶登錄使用文件系統(tǒng),用戶登錄系統(tǒng)時,系統(tǒng)對用戶的用戶名和密碼進行驗證(允許用戶用限次的嘗試,多最多嘗試五次),如果用戶登錄成功,則系統(tǒng)進入命令提示符狀態(tài),等用戶輸入指令后,系統(tǒng)得用一個解釋程序按照指定方式處理用戶請求,用戶退出后,系統(tǒng)轉(zhuǎn)入登錄模塊,等待下一位用戶的登錄。4.1.1login (用戶登錄)內(nèi)置9個用戶名和密碼,用來驗證登錄用戶的身份,用戶登錄成功后會初始化當前用戶等一系列的系統(tǒng)當前信息,默認用戶的類型為普通用戶,如果用戶未能通過身份驗證,提示用戶登錄失敗,
11、退出整個系統(tǒng)。用戶登錄流程圖4.1.2系統(tǒng)初始化系統(tǒng)的初始化要完成文件系統(tǒng)的建立,包括以下幾部分:請求內(nèi)存、設(shè)置位示圖、初始化文件索引、初始化文本塊鏈表、初始化系統(tǒng)的當前狀態(tài)、創(chuàng)建一個根目錄做為系統(tǒng)的根。4.1.3文件的創(chuàng)建: create只支持在當前目錄創(chuàng)建文件,根據(jù)位示圖找到一個未使用的文件塊用來存放用戶的文件信息,根據(jù)系統(tǒng)當前狀態(tài)來構(gòu)建一個文件系統(tǒng)元素放入到找到的文件塊中,新創(chuàng)建的文件狀態(tài)為關(guān)閉,同時更新位示圖和文件索引。文件創(chuàng)建流程圖void create(char *filename)if (strcmp(filename, ) = 0)printf(對不起,文件名不能為空。n);e
12、lsecreatefileelement(protect, filename, file, null, cs.currparent);printf(%slocalhost %s$, cs.currentuser.username, cs.currentpath);4.1.4文件的打開:open只支持在當前目錄進行操作,通過用戶給定的文件名在文件索引中搜索到文件的物理文件塊id,找到該文件元素后,將文件當前狀態(tài)置為打開。打開文件流程圖void open(char *path)char display100;for (unsigned i = 0; i filename) & fs.fi.fist
13、arti.filelevel = cs.filelevel & fs.fi.fistarti.effect = 1 & strcmp(fs.fi.fistarti.filename, path) = 0)fselement *fselem = (fselement *)findblankfileblock(fs.fi.fistarti.fileblockid);fselem-filestu = opened;strcpy(display, 文件已打開完畢。n);break;if (strcmp(display, ) = 0)strcpy(display, 當前目錄下沒有您要打開的文件。n);p
14、rintf(%sn, display);printf(%slocalhost %s$, cs.currentuser.username, cs.currentpath);4.1.5文件的讀:read只支持在當前目錄進行操作,前提是用戶已執(zhí)行文件打開的命令,否則會提示用戶先打開文件。通過類似的查找方式,找到文件的數(shù)據(jù)部分,將數(shù)據(jù)顯示到界面。讀文件流程圖void read(char *path)char displayblock_size;for (unsigned i = 0; i filename) & fs.fi.fistarti.filelevel = cs.filelevel & fs.
15、fi.fistarti.effect = 1 &strcmp(fs.fi.fistarti.filename, path) = 0)fselement *fselem = (fselement *)findblankfileblock(fs.fi.fistarti.fileblockid);if (fselem-filestu = closed)strcpy(display, 文件尚未打開,請先打開文件。n);elseif (!fselem-filedata | !strcmp(fselem-filedata, )strcpy(display, 文件無內(nèi)容。n);elsestrcpy(disp
16、lay, fselem-filedata);fselem-filestu = reading;break;if (strcmp(display, ) = 0)strcpy(display, 當前目錄下沒有您要打開的文件。n);printf(%sn, display);printf(%slocalhost %s$, cs.currentuser.username, cs.currentpath);4.1.6文件的寫:write只支持在當前目錄進行操作,前提是用戶已執(zhí)行文件打開的命令,否則會提示用戶先打開文件。命令成功后,會等待用戶的輸入,用戶輸入完畢,使用ctrl+d,結(jié)束輸入,系統(tǒng)會讀入用戶的
17、輸入內(nèi)容,保存到相應(yīng)的文件塊(注意,如果用戶的輸入太多,會出現(xiàn)越界或截取用戶輸入一部分的現(xiàn)象)。void write(char *path)char displayblock_size;memset(display, 0, block_size);for (unsigned i = 0; i filename) & fs.fi.fistarti.filelevel = cs.filelevel & fs.fi.fistarti.effect = 1 & strcmp(fs.fi.fistarti.filename, path) = 0)fselement *fselem = (fselemen
18、t *)findblankfileblock(fs.fi.fistarti.fileblockid);if (fselem-filestu = closed)strcpy(display, 文件尚未打開,請先打開文件。n);elseprintf(n注意:文件最大不可以超過 %d 字節(jié)!按ctrl+d結(jié)束編輯。n, block_size - sizeof(fselement);char c;int i = 0;while (c = getchar() != 0x04)displayi+ = c;getchar();/處理回車displayi = 0;strcpy(fselem-filedata,
19、 display);unsigned len=strlen(display)filedata, display, len);fselem-filestu = writing;strcpy(display, 文件寫入成功。n);break;printf(%sn, display);printf(%slocalhost %s$, cs.currentuser.username, cs.currentpath);4.1.7文件關(guān)閉:close只支持在當前目錄進行操作,通過用戶給定的文件名在文件索引中搜索到文件的物理文件塊id,找到該文件元素后,將文件當前狀態(tài)置為關(guān)閉。void close(char
20、*path)char display100;for (unsigned i = 0; i filename) & fs.fi.fistarti.filelevel = cs.filelevel & fs.fi.fistarti.effect = 1 & strcmp(fs.fi.fistarti.filename, path) = 0)fselement *fselem = (fselement *)findblankfileblock(fs.fi.fistarti.fileblockid);fselem-filestu = opened;strcpy(display, 文件已關(guān)閉。n);br
21、eak;if (strcmp(display, ) = 0)strcpy(display, 當前目錄下沒有您要關(guān)閉的文件。n);printf(%sn, display);printf(%slocalhost %s$, cs.currentuser.username, cs.currentpath);4.1.8刪除文件:delete刪除文件并不真正清理文件的物理存儲內(nèi)容,只是將文件的有效狀態(tài)更改為無效。刪除文件流程圖void delete(char *path)char display100 = ;for (unsigned i = 0; i filename) & fs.fi.fistarti
22、.filelevel = cs.filelevel & fs.fi.fistarti.effect = 1 &strcmp(fs.fi.fistarti.filename, path) = 0)fs.fi.fistarti.effect = 0;/刪除標記strcpy(display, 文件已刪除。n);break;if (strcmp(display, ) = 0)strcpy(display, 當前目錄下沒有您要刪除的文件。n);printf(%sn, display);printf(%slocalhost %s$, cs.currentuser.username, cs.currentp
23、ath);4.1.9創(chuàng)建目錄(建立子目錄):mkdir只支持在當前目錄創(chuàng)建文件,與創(chuàng)建文件有點類似,只是文件夾在文件元素結(jié)構(gòu)中的數(shù)據(jù)部分為空。同樣會更新位示圖和文件索引。創(chuàng)建目錄流程圖void mkdir(char *filename)if (strcmp(filename, ) = 0)printf(對不起,文件夾名不能為空。n);elsecreatefileelement(protect, filename, dir, null, cs.currparent);printf(%slocalhost %s$, cs.currentuser.username, cs.currentpath);
24、4.1.10改變當前目錄:cd只支持進入下一層的一個文件夾和回到父目錄,實現(xiàn)方式為通過系統(tǒng)的當前狀態(tài),獲取一個指向目標文件夾的指針做為當前的父節(jié)點,改變當前的路徑為目標路徑,改變用戶當前所在層。改變當前目錄流程圖void cd(char *path)int splitdisplaycou = 0;/分割符出現(xiàn)的次數(shù)if(strcmp(path, .) = 0) /返回上一級目錄,即父目錄if (cs.filelevel 0)cs.filelevel-;cs.currparent = cs.currparent-parent;for (unsigned i = strlen(cs.current
25、path) - 1; i 0; i-)if (cs.currentpathi = /)splitdisplaycou+;if (splitdisplaycou = 2)/已過濾掉最后一個目錄名break;char temppath1000 ;strcpy(temppath, cs.currentpath);memset(cs.currentpath, 0, 1000);strncpy(cs.currentpath, temppath, i+1);elsechar display100 = ;for (unsigned i = 0; i filename) & fs.fi.fistarti.fi
26、lelevel = cs.filelevel & fs.fi.fistarti.effect = 1 & strcmp(fs.fi.fistarti.filename, path) = 0)strcpy(display, 文件存在。n);cs.currparent = (fselement *)findblankfileblock(fs.fi.fistarti.fileblockid);cs.filelevel+;strcat(cs.currentpath, path);strcat(cs.currentpath, /);break;if (strcmp(display, ) = 0)/文件夾
27、不存在,什么都不做printf(當前目錄下沒有您要進入的文件夾。n);printf(%slocalhost %s$, cs.currentuser.username, cs.currentpath);4.1.11列出文件目錄:dir只支持在當前目錄進行操作,根據(jù)文件元素的名稱文件元素所在層父節(jié)點可以唯一的標識一個文件元素的關(guān)系在文件索引中搜索出當前層的所有文件元素。void dir(char *path)char display1000;memset(display, 0, 1000);/查找顯示內(nèi)容for (unsigned i = 0; i filename) & fs.fi.fistar
28、ti.filelevel = cs.filelevel & fs.fi.fistarti.effect = 1)strcat(display, fs.fi.fistarti.filename);strcat(display, tt);printf(%sn, display);printf(%slocalhost %s$, cs.currentuser.username, cs.currentpath);4.1.12退出:logout用戶請求退出時,跳出命令處理,提示用戶退出系統(tǒng),轉(zhuǎn)入到登錄模塊等待下一個用戶的登錄。4.2算法流程圖第五章 調(diào)試過程中的問題及系統(tǒng)測試情況5.1登錄內(nèi)置設(shè)了user
29、1到user8八個普通用戶和1個超級用戶root,密碼與用戶名相同。登錄時如果輸入用戶名和密碼錯誤次數(shù)多于8次,則退出程序。輸入密碼時采用了一種不回顯的方式,雖然屏幕上沒有顯示輸入的密碼,其實密碼已經(jīng)輸入了系統(tǒng),這樣做可以提高系統(tǒng)的安全性?,F(xiàn)在用超級用戶root登錄后出現(xiàn)如下界面:/表示根目錄,$后面可以輸入命令。圖5.15.2新建目錄和列出文件目錄由于第一次啟動系統(tǒng),故根目錄下沒有任何東西,這點可以通過輸入命令dir來驗證,故為了演示,先建立一個目錄hhh,在$后輸入命令,mkdir hhh,按回車,然后再用命令dir查看根目錄下信息,此時有一個文件hhh,如下:圖5.25.3改變當前目錄系統(tǒng)啟動后,默認路徑為根目錄/,此時若要進入剛才新建的目錄hhh,只需輸入命令cd hhh,結(jié)果如下:路徑已由原來的/變成了/hhh/圖5.35.4文件的創(chuàng)建在目錄hhh下新建一個名為h的文件,在$后輸入命令create h,再用命令dir列出文件:圖5.45.5文件的打開用命令open h打開文件h:圖5.55.6文件的寫先輸入
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高校PCR實驗課程設(shè)計與實施計劃
- 2025年度夜間交通疏導員雇用合同書
- 2025年度綠色建筑項目固定工程量總價合同示范文本
- 2025年度海外就業(yè)人員醫(yī)療保險及意外傷害合同3篇
- 全面保障:2024年施工安全合同3篇
- 2025年度合作社農(nóng)產(chǎn)品市場拓展合作合同
- 2025年度國企環(huán)保技術(shù)研發(fā)勞務(wù)聘用合同范本
- 2025年度環(huán)保監(jiān)測柴油供應(yīng)與服務(wù)合同
- 二零二五年度個人合法住房租賃合同規(guī)范
- 2025年鍋爐設(shè)備運行優(yōu)化與維保服務(wù)合同
- 充電樁知識培訓課件
- 2025年七年級下冊道德與法治主要知識點
- 2025年交通運輸部長江口航道管理局招聘4人歷年高頻重點提升(共500題)附帶答案詳解
- 老年髖部骨折患者圍術(shù)期下肢深靜脈血栓基礎(chǔ)預(yù)防專家共識(2024版)解讀
- 偏癱足內(nèi)翻的治療
- 藥企質(zhì)量主管競聘
- 信息對抗與認知戰(zhàn)研究-洞察分析
- 手術(shù)室??谱o士工作總結(jié)匯報
- 2025屆高三聽力技巧指導-預(yù)讀、預(yù)測
- 四年級下冊部編版語文教學參考教師用書
- 月球基地建設(shè)與運行管理模式
評論
0/150
提交評論