版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、操作系統(tǒng)課程設(shè)計 模擬UNIX文件系統(tǒng)的設(shè)計及實現(xiàn) 院 系: 國際教育學(xué)院 班 級: 計07 4班 姓 名: 符龍 指導(dǎo)教師: 孫昌立 2011 年 5 月 18 日操作系統(tǒng)課程設(shè)計任務(wù)書一、題目:銀行家算法二、設(shè)計要求(1)小組成員分工協(xié)作完成。要求每個成員有自己相對獨立的模塊,同時要了解其他組員完成的內(nèi)容。(2)查閱相關(guān)資料,自學(xué)具體課題中涉及到的新知識。(3)采用結(jié)構(gòu)化、模塊化程序設(shè)計方法設(shè)計,功能要完善,界面美觀。(4)所設(shè)計的系統(tǒng)應(yīng)有菜單、動畫和音樂。(5)按要求寫出課程設(shè)計報告,并于設(shè)計結(jié)束后1周內(nèi)提交。其主要內(nèi)容包括:封皮、課程設(shè)計任務(wù)書,指導(dǎo)教師評語與成績、目錄、概述、軟件總體
2、設(shè)計、詳細設(shè)計、軟件的調(diào)試、總結(jié)、謝啟、附錄:帶中文注釋的程序清單、參考文獻。報告一律用A4紙打印,中文字體為宋體,西文字體用Time New Roma,一律用小四號字,行距采用“固定值”18磅,首行縮進2字符。總體設(shè)計應(yīng)配合軟件總體模塊結(jié)構(gòu)圖來說明軟件應(yīng)具有的功能。詳細設(shè)計應(yīng)用傳統(tǒng)或N-S流程圖和屏幕抓圖說明,調(diào)試的敘述應(yīng)配合出錯場景的抓圖來說明出現(xiàn)了哪些錯誤,如何解決的。三、課程設(shè)計工作量由于是設(shè)計小組團結(jié)協(xié)作完成設(shè)計任務(wù),一般每人的程序量在200行有效程序行左右,不得抄襲。四、課程設(shè)計工作計劃2011年5月10日,指導(dǎo)教師講課,學(xué)生根據(jù)題目準(zhǔn)備資料;2011年5月12日,設(shè)計小組進行總體
3、方案設(shè)計和任務(wù)分工;2011年5月13日2009年6月23日,每人完成自己承擔(dān)的程序模塊并通過獨立編譯;2011年5月14日2009年6月29日,將各模塊集成為一個完整的系統(tǒng),并錄入足夠的數(shù)據(jù)進行調(diào)試運行;2011年5月16日,驗收、撰寫報告;2011年5月18日,驗收或總結(jié)。 指導(dǎo)教師簽章 教研室主任簽章 操作系統(tǒng)課程設(shè)計指導(dǎo)教師評語與成績指導(dǎo)教師評語:課程設(shè)計表現(xiàn)成績: 課程設(shè)計驗收成績: 課程設(shè)計報告成績: 課程設(shè)計 總成績: 指導(dǎo)教師簽章 2009年 7月 日 目錄1. 概述12. 總體設(shè)計.23. 詳細設(shè)計34. 代碼調(diào)試95. 總結(jié)116. 附錄127. 參考文獻. 30一概述【課
4、設(shè)原理】UNIX采用樹型目錄結(jié)構(gòu),每個目錄表稱為一個目錄文件。一個目錄文件是由目錄項組成的。每個目錄項包含16B,一個輔存磁盤塊(512B)包含32個目錄項。在目錄項中,第1、2字節(jié)為相應(yīng)文件的外存i節(jié)點號,是該文件的內(nèi)部標(biāo)識;后14B為文件名,是該文件的外部標(biāo)識。所以,文件目錄項記錄了文件內(nèi)、外部標(biāo)識的對照關(guān)系。根據(jù)文件名可以找到輔存i節(jié)點號,由此便得到該文件的所有者、存取權(quán)、文件數(shù)據(jù)的地址健在等信息。UNIX的存儲介質(zhì)以512B為單位劃分為塊,從0開始直到最大容量并順序加以編號就成了一個文件卷,也叫文件系統(tǒng)。UNIX中的文件系統(tǒng)磁盤存儲區(qū)分配圖如下:0#1#2#K#K+1#K+2#K+3#
5、n#i節(jié)點區(qū)文件存儲區(qū)引導(dǎo)區(qū)管理區(qū)本次課程設(shè)計是要實現(xiàn)一個簡單的模擬UNIX文件系統(tǒng)。我們在磁盤中申請一個二進制文件模擬UNIX內(nèi)存,依次初始化建立位示圖區(qū),I節(jié)點區(qū),數(shù)據(jù)塊區(qū)。并給已打開的文件建立文件打開表?!菊n設(shè)內(nèi)容】1.設(shè)計任務(wù)多用戶、多級目錄結(jié)構(gòu)文件系統(tǒng)的設(shè)計與實現(xiàn)??梢詫崿F(xiàn)下列幾條命令login 用戶登錄logout退出當(dāng)前用戶dir列文件目錄creat創(chuàng)建文件delet刪除文件及目錄樹open打開文件close關(guān)閉文件read讀文件write 寫文件mkdir創(chuàng)建目錄cd改變文件目錄format格式化文件系統(tǒng)quit退出文件系統(tǒng)2 文件系統(tǒng)應(yīng)具有的基本功能 (1)多用戶 :usr1
6、,usr2,usr3,usr8 (1-8個用戶) (2)多級目錄:可有多級子目錄; (3)具有l(wèi)ogin (用戶登錄) (4)系統(tǒng)初始化(建文件卷、提供登錄模塊) (5)文件的創(chuàng)建: create (6)文件的打開:open (7)文件的讀:read (8)文件的寫:write (9)文件關(guān)閉:close (10)刪除文件或目錄:delet (11)創(chuàng)建目錄(建立子目錄):mkdir (12)改變當(dāng)前目錄:cd (13)列出文件目錄:dir (14)退出:logout 二總體設(shè)計【算法思想】先建立512個塊,每個塊對應(yīng)512個字節(jié),在建立一個有512個元素的字符數(shù)組,每個元素對應(yīng)相應(yīng)的塊號,不
7、管是文件或是目錄都有I節(jié)點,建立自己設(shè)定數(shù)目元素的I節(jié)點表,并依次把位圖區(qū),I節(jié)點表,數(shù)據(jù)塊區(qū)每個元素映射到一個二進制文件上。在每一次的操作中如果相應(yīng)元素有變動,則對應(yīng)在文件中更新輸出相應(yīng)數(shù)據(jù),以便下一次啟動程序的時候可以快速導(dǎo)入上一次的數(shù)據(jù)?!鞠到y(tǒng)總體框架圖】【系統(tǒng)總體流程圖】開始文件系統(tǒng)是否建立?在內(nèi)存中申請內(nèi)存空間將磁盤上的文件讀入內(nèi)存YN用戶登錄模塊,輸入用戶名和密碼,可以在程序中設(shè)定,不用保存在文件系統(tǒng)中用戶名、密碼對嗎?執(zhí)行init(),進行初始化操作,進入用戶子目錄執(zhí)行command(),對用戶輸入的命令進行解析和執(zhí)行。若數(shù)據(jù)被修改或新建立,則保存主存i節(jié)點和數(shù)據(jù)塊的內(nèi)容到內(nèi)存的
8、文件系統(tǒng),并寫回磁盤,保存修改。若輸入錯誤命令則顯示出錯信息。退出用戶(logout)嗎?用戶輸入quit嗎?結(jié)束執(zhí)行format(),建立文件系統(tǒng)NNNYYY三詳細設(shè)計【各模塊功能說明】1.format模塊功能:格式化文件系統(tǒng),即初始化文件系統(tǒng),相當(dāng)于硬盤的格式化。將其中原有的用戶及用戶下的文件系統(tǒng)全部還原初始狀態(tài),即沒有任何用戶和目錄、文件,也就是按設(shè)計的文件系統(tǒng)格式重建新的文件系統(tǒng)。2. get_blknum和release_blk模塊功能:get_blknum找到一個空閑數(shù)據(jù)塊,并修改對應(yīng)位圖號元素為1。release_blk修改對應(yīng)的位圖元素,并把文件系統(tǒng)中對應(yīng)的數(shù)據(jù)塊清零。3. i
9、nit()模塊功能: 讀入文件系統(tǒng) 4.quit()模塊功能:退出系統(tǒng)5 .creat()模塊功能: 創(chuàng)建文件,分配一空目錄項,分配磁盤塊??捎梦皇緢D。填寫該空目錄 項。如文件長度(0),文件名,類型等。6. open()模塊功能:打開文件,并判斷文件類型和打開方式。 如果文件沒有在文件打開表中就在文件打開表中建立該文件項。7. close()模塊功能:關(guān)閉文件,刪除該文件的用戶打開文件表目。8. write()模塊功能:寫文件,需要先打開文件。并判斷文件權(quán)限。寫完后修改文件系統(tǒng)中的對應(yīng)數(shù)據(jù)區(qū)。9. read()模塊功能:讀文件。需先打開文件。讀入相應(yīng)數(shù)據(jù)塊的內(nèi)容到緩沖區(qū),然后輸出。10.de
10、let()模塊功能: 如果參數(shù)是文件則刪除文件,如果是目錄則刪除該目錄下的所有文件和目錄。 11.mkdir() 功能:建立新的目錄,先在I節(jié)點表中找到一個未使用的,并初始化該I節(jié)點,并在文件系統(tǒng)中對應(yīng)更新輸出。 12.cd() 功能:將當(dāng)前目錄切換到當(dāng)前目錄的一個子目錄下或當(dāng)前目錄的父目錄。 程序流程圖各功能模塊流程圖是否否是提示輸入用戶名和密碼用戶名是否存在創(chuàng)建新用戶讀入用戶信息到內(nèi)存開始密碼是否正確結(jié)束用戶登陸login() 讀入位示圖信息到內(nèi)存讀入i節(jié)點信息到內(nèi)存當(dāng)前目錄為根目錄初始化打開文件表結(jié)束開始初始化函數(shù)init()是是否否遍歷i節(jié)點區(qū)argv1=”.”目錄是否存在找到的目錄i
11、節(jié)點號送當(dāng)前目錄inum_cur當(dāng)前目錄的父i節(jié)點號送當(dāng)前目錄inum_cur開始結(jié)束改變當(dāng)前目錄cd() 是是否否遍歷i節(jié)點區(qū)i節(jié)點的父節(jié)點是否為當(dāng)前目錄i節(jié)點區(qū)是否遍歷完輸出文件名或目錄名開始結(jié)束顯示目錄dir()是是否否遍歷i節(jié)點區(qū)要創(chuàng)建的目錄是否存在是否有空的i節(jié)點遍歷i節(jié)點區(qū)分配一個目錄i節(jié)點開始結(jié)束創(chuàng)建目錄mkdir() 是是否否遍歷i節(jié)點區(qū)要創(chuàng)建的文件是否存在是否有空的i節(jié)點遍歷i節(jié)點區(qū)分配一個文件i節(jié)點開始結(jié)束創(chuàng)建文件creat()是否是否是否遍歷i節(jié)點區(qū)要打開的文件是否存在提示輸入打開模式將打開文件信息寫入打開文件信息表file_array遍歷打開文件表file_array文
12、件是否已經(jīng)打開提示輸入開始位置和讀字節(jié)數(shù)調(diào)用讀塊操作,讀出塊內(nèi)字符模式是否為可讀開始結(jié)束開始結(jié)束打開文件open()讀文件read()是否是否遍歷打開文件表file_array文件是否已經(jīng)打開提示輸入寫入字節(jié)數(shù)調(diào)用寫塊操作,寫入塊內(nèi)字符模式是否為可寫是否遍歷打開文件表file_array文件是否已經(jīng)打開將打開文件表項標(biāo)志位置-1file_arrayi.inum = -1開始結(jié)束寫文件write()開始結(jié)束關(guān)閉文件close()是否遍歷i節(jié)點區(qū)要刪除的文件是否存在釋放文件對應(yīng)的i節(jié)點區(qū)inode_arrayi.inum = -1釋放兩個磁盤塊文件是否大于的一塊釋放一個磁盤塊是否開始結(jié)束刪除文件d
13、elet() 四.代碼調(diào)試1. 初始化和登陸文件系統(tǒng)第一次運行程序2. 建立新目錄,顯示當(dāng)前目錄下的文件和目錄,并轉(zhuǎn)到新目錄下3. 建立新的文件,打開,寫,讀。4. clear清屏后,dir查看當(dāng)前目錄下文件信息5.返回根目錄下,并刪除根目錄下所有子目錄和文件6. logout退出登錄或quit退出程序。 五. 總結(jié)開始第一天構(gòu)思,不斷的篩選證明模擬UNIX下的內(nèi)存方法,并在網(wǎng)絡(luò)上查找相應(yīng)的UNIX環(huán)境資料。接下來幾天開始實踐動手,從整體框架開始構(gòu)思,到各個細節(jié)端口的實現(xiàn)。操作系統(tǒng)是計算機科學(xué)與技術(shù)專業(yè)中的一門重要基礎(chǔ)課,目的是讓我們了解操作系統(tǒng)的基本概念,理解計算機系統(tǒng)的資源如何組織,操作系
14、統(tǒng)如何有效地管理這些系統(tǒng)資源,用戶如何通過操作系統(tǒng)與計算機系統(tǒng)打交道。通過課程設(shè)計,可以進一步理解在計算機系統(tǒng)上運行的其它各類操作系統(tǒng),并懂得在操作系統(tǒng)的支持下建立自己的應(yīng)用系統(tǒng)。操作系統(tǒng)課程設(shè)計,對于訓(xùn)練我們掌握程序設(shè)計、熟悉上機操作和程序調(diào)試技術(shù)都有重要作用。重點培養(yǎng)我們的思維能力、創(chuàng)新能力和排錯能力。通過課程設(shè)計,進一步融會貫通教材內(nèi)容,掌握程序各功能模塊的工作原理,相互聯(lián)系和來龍去脈,完整地建立系統(tǒng)的概念。激發(fā)我的學(xué)習(xí)熱情和主動性,培養(yǎng)我的獨立工作能力,在實踐活動中,將所學(xué)知識綜合運用,增長才干,并積累經(jīng)驗。對編程語言又有了更深一層次的認識,并對編程能力有所加強,但還是很多的不足有待改
15、進,對于編程來說還需要大量的實踐,才能在發(fā)現(xiàn)問題和解決問題中前進與提高。 六附錄源代碼:/ head.h文件#include #include #include #include #includeusing namespace std;#define BLKSIZE 512/ 數(shù)據(jù)塊的大小 #define BLKNUM 512/ 數(shù)據(jù)塊的塊數(shù)#define INODESIZE 32/ i節(jié)點的大小#define INODENUM 32/ i節(jié)點的數(shù)目#define FILENUM 8/ 打開文件表的數(shù)目/用戶 typedef structchar user_name10; / 用戶名char
16、password10; / 密碼 User;/i節(jié)點 typedef structshort inum; / 文件i節(jié)點號char file_name10; / 文件名char type; / 文件類型char user_name10; / 文件所有者short iparent; / 父目錄的i節(jié)點號 short length; / 文件長度short address2; / 存放文件的地址 Inode;/打開文件表 typedef structshort inum; / i節(jié)點號char file_name10; / 文件名short mode; / 讀寫模式(1:read, 2:write
17、, / 3:read and write) File_table;/ 申明函數(shù)void login(void);void init(void);int analyse(char *);void save_inode(int);int get_blknum(void);void read_blk(int);void write_blk(int);void release_blk(int);void pathset();void del(int);/ 用戶命令處理函數(shù) void help(void);void cd(void);void dir(void);void mkdir(void);voi
18、d creat(void);void open(void);void read(void);void write(void);void close(void);void delet(void);void logout(void);void command(void);void quit();/main.cpp文件#include head.h/定義全局變量 charchoice;intargc;/ 用戶命令的參數(shù)個數(shù)char*argv5;/ 用戶命令的參數(shù)intinum_cur;/ 當(dāng)前目錄chartemp2*BLKSIZE;/ 緩沖區(qū)Useruser;/ 當(dāng)前的用戶charbitmapBLK
19、NUM;/ 位圖數(shù)組Inodeinode_arrayINODENUM;/ i節(jié)點數(shù)組File_table file_arrayFILENUM;/ 打開文件表數(shù)組charimage_name10 = data.dat;/ 文件系統(tǒng)名稱FILE*fp;/ 打開文件指針/創(chuàng)建映像hd,并將所有用戶和文件清除void format(void)int i;Inode inode;printf(Will be to format filesystem.n);printf(WARNING:ALL DATA ON THIS FILESYSTEM WILL BE LOST!n);printf(Proceed w
20、ith Format(Y/N)?);scanf(%c, &choice); getchar(); if(choice = y) | (choice = Y) if(fp=fopen(image_name, w+b) = NULL) printf(Cant create file %sn, image_name); exit(-1); for(i = 0; i BLKSIZE; i+) fputc(0, fp); inode.inum = 0; strcpy(inode.file_name, /); inode.type = d; strcpy(inode.user_name, /); inod
21、e.iparent = 0; inode.length = 0; inode.address0 = -1; inode.address1 = -1; fwrite(&inode, sizeof(Inode), 1, fp); inode.inum = -1; for(i = 0; i 31; i+) fwrite(&inode, sizeof(Inode), 1, fp); for(i = 0; i BLKNUM*BLKSIZE; i+) fputc(0, fp); fclose(fp); / 打開文件user.txt if(fp=fopen(user.txt, w+) = NULL) pri
22、ntf(Cant create file %sn, user.txt); exit(-1); fclose(fp); printf(Filesystem created successful.Please first login!n);return ;/ 功能: 用戶登陸,如果是新用戶則創(chuàng)建用戶void login(void)char *p;int flag;char user_name10;char password10;char file_name10 = user.txt;do printf(login:); gets(user_name); printf(password:); p=p
23、assword; while(*p=getch() if(*p = 0x0d) *p=0; /將輸入的回車鍵轉(zhuǎn)換成空格 break; printf(*); /將輸入的密碼以*號顯示 p+; flag = 0; if(fp = fopen(file_name, r+) = NULL) printf(nCant open file %s.n, file_name); printf(This filesystem not exist, it will be create!n); format(); login(); while(!feof(fp) fread(&user, sizeof(User),
24、 1, fp); / 已經(jīng)存在的用戶, 且密碼正確 if(!strcmp(user.user_name, user_name) & !strcmp(user.password, password) fclose(fp); printf(n); return ; / 已經(jīng)存在的用戶, 但密碼錯誤 else if(!strcmp(user.user_name, user_name) printf(nThis user is exist, but password is incorrect.n); flag = 1; fclose(fp); break; if(flag = 0) break;whi
25、le(flag);/ 創(chuàng)建新用戶if(flag = 0) printf(nDo you want to creat a new user?(y/n):); scanf(%c, &choice); gets(temp); if(choice = y) | (choice = Y) strcpy(user.user_name, user_name); strcpy(user.password, password); fwrite(&user, sizeof(User), 1, fp); fclose(fp); return ; if(choice = n) | (choice = N) login
26、();/ 功能: 將所有i節(jié)點讀入內(nèi)存void init(void)int i;if(fp = fopen(image_name, r+b) = NULL) printf(Cant open file %s.n, image_name); exit(-1);/ 讀入位圖for(i = 0; i BLKNUM; i+) bitmapi = fgetc(fp);/ 顯示位圖/ 讀入i節(jié)點信息for(i = 0; i INODENUM; i+) fread(&inode_arrayi, sizeof(Inode), 1, fp);/ 顯示i節(jié)點/ 當(dāng)前目錄為根目錄inum_cur = 0;/ 初始化
27、打開文件表for(i = 0; i FILENUM; i+)file_arrayi.inum = -1;/ 功能: 分析用戶命令, 將分析結(jié)果填充argc和argv/ 結(jié)果: 0-13為系統(tǒng)命令, 14為命令錯誤int analyse(char *str)int i;char temp20;char *ptr_char;char *syscmd=help, cd, dir, mkdir, create, open, read, write, close, delet, logout, clear,format,quit;argc = 0;for(i = 0, ptr_char = str; *
28、ptr_char != 0; ptr_char+) if(*ptr_char != ) while(*ptr_char != & (*ptr_char != 0) tempi+ = *ptr_char+; argvargc = (char *)malloc(i+1); strncpy(argvargc, temp, i); argvargci = 0; argc+; i = 0; if(*ptr_char = 0) break; if(argc != 0) for(i = 0; (i 14) & strcmp(argv0, syscmdi); i+); return i;else return
29、 14;/ 功能: 將num號i節(jié)點保存到hd.datvoid save_inode(int num)if(fp=fopen(image_name, r+b) = NULL) printf(Cant open file %sn, image_name); exit(-1);fseek(fp, BLKNUM +num*sizeof(Inode), SEEK_SET);fwrite(&inode_arraynum, sizeof(Inode), 1, fp);fclose(fp);/ 功能: 申請一個數(shù)據(jù)塊int get_blknum(void)int i;for(i = 0; i 512) ad
30、d1 = inode_arraynum.address1;if(fp = fopen(image_name, r+b) = NULL) printf(Cant open file %s.n, image_name); exit(-1);fseek(fp, BLKSIZE+INODESIZE*INODENUM +add0*BLKSIZE, SEEK_SET);ch = fgetc(fp);for(i=0; (i len) & (ch != 0) & (i = 512) fseek(fp,BLKSIZE+INODESIZE*INODENUM+add1*BLKSIZE, SEEK_SET); ch
31、= fgetc(fp); for(; (i len) & (ch != 0); i+) tempi = ch; ch = fgetc(fp); tempi = 0;fclose(fp);/ 功能: 將temp的內(nèi)容輸入hd的數(shù)據(jù)區(qū)void write_blk(int num)int i, len;int add0, add1;add0 = inode_arraynum.address0;len = inode_arraynum.length;if(fp = fopen(image_name, r+b) = NULL) printf(Cant open file %s.n, image_name
32、); exit(-1);fseek(fp, BLKSIZE+INODESIZE*INODENUM+add0*BLKSIZE, SEEK_SET);for(i=0; (ilen)&(tempi!=0)&(i 512); i+) fputc(tempi, fp);if(i = 512) add1 = inode_arraynum.address1; fseek(fp, BLKSIZE+INODESIZE*INODENUM+add1*BLKSIZE, SEEK_SET); for(; (i len) & (tempi != 0); i+) fputc(tempi, fp);fputc(0, fp);
33、fclose(fp);/ 功能: 釋放文件塊號為num的文件占用的空間void release_blk(int num)FILE *fp;if(fp=fopen(image_name, r+b) = NULL) printf(Cant open file %sn, image_name); exit(-1);bitmapnum = 0;fseek(fp, num, SEEK_SET);fputc(0, fp);fclose(fp);/ 功能: 顯示幫助命令void help(void)printf(command: n help - show help menu nclear - clear
34、the screen ncd - change directory nmkdir - make directory ncreate - create a new file nopen - open a exist file nread - read a file nwrite - write something to a file nclose - close a file ndelet - delete a exist file or directory nformat - format a exist filesystem nlogout - exit user nquit - exit
35、this systemn);/設(shè)置文件路徑void pathset()char path50;int m,n;if(inode_arrayinum_cur.inum = 0) strcpy(path,user.user_name);else strcpy(path,user.user_name); m=0; n=inum_cur; while(m != inum_cur) while(inode_arrayn.iparent != m) n = inode_arrayn.iparent; strcat(path,/); strcat(path,inode_arrayn.file_name);
36、m = n; n = inum_cur; printf(%s$,path);/ 功能: 切換目錄(cd . 或者 cd dir1)void cd(void)int i;if(argc != 2) printf(Command cd must have two args. n); return ;if(!strcmp(argv1, .) inum_cur = inode_arrayinum_cur.iparent;else for(i = 0; i 0)& (inode_arrayi.type=d)& (inode_arrayi.iparent=inum_cur)& !strcmp(inode_
37、arrayi.file_name,argv1)& !strcmp(inode_arrayi.user_name,user.user_name) break; if(i = INODENUM) printf(This directory isnt exsited.n); else inum_cur = i;/ 功能: 顯示當(dāng)前目錄下的子目錄和文件(dir)void dir(void)int i;int dcount=0,fcount=0;short bcount=0;if(argc != 1) printf(Command dir must have one args. n); return ;
38、/ 遍歷i節(jié)點數(shù)組, 顯示當(dāng)前目錄下的子目錄和文件名for(i = 0; i 0) & (inode_arrayi.iparent = inum_cur)& !strcmp(inode_arrayi.user_name,user.user_name) if(inode_arrayi.type = d) dcount+; printf(%-20sn, inode_arrayi.file_name); else fcount+; bcount+=inode_arrayi.length; printf(%-20s%12d bytesn, inode_arrayi.file_name,inode_ar
39、rayi.length); printf(n %d file(s)%11d bytesn,fcount,bcount);printf( %d dir(s) %11d bytes FreeSpacen,dcount,1024*1024-bcount);/ 功能: 在當(dāng)前目錄下創(chuàng)建子目錄(mkdir dir1)void mkdir(void)int i;if(argc != 2)printf(command mkdir must have two args. n);return ;/ 遍歷i節(jié)點數(shù)組, 查找未用的i節(jié)點for(i = 0; i INODENUM; i+) if(inode_arrayi.inum 0) break; if(i = INODENUM) printf(Inode is full.n); exit(-1);inode_arrayi.inum = i;strcpy(inode_arrayi.file_name, a
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 規(guī)范辦園活動報備制度
- 糧油公司值班制度規(guī)范
- 規(guī)范指導(dǎo)食堂管理制度
- 裝維材料管控制度規(guī)范
- 日常規(guī)范迎檢巡視制度
- 水廠中控值班制度規(guī)范
- 石材外貿(mào)業(yè)務(wù)制度規(guī)范
- 規(guī)范城區(qū)停車管理制度
- 房產(chǎn)庫存收購合同范本
- 打掃衛(wèi)生勞務(wù)協(xié)議合同
- 2025屆高考數(shù)學(xué)二輪復(fù)習(xí)備考策略和方向
- UL1995標(biāo)準(zhǔn)中文版-2018加熱和冷卻設(shè)備UL中文版標(biāo)準(zhǔn)
- 2024至2030年中國家用燃氣具數(shù)據(jù)監(jiān)測研究報告
- 2024版租房合同協(xié)議書下載
- 寶寶喂養(yǎng)記錄表
- 2023年非標(biāo)自動化機械設(shè)計工程師年度總結(jié)及來年計劃
- 丹鹿通督片治療腰椎疾病所致腰椎狹窄128例
- 股骨頸骨折圍手術(shù)期護理
- 高空作業(yè)車使用說明書
- 保安公司介紹PPT模板
- 醫(yī)療質(zhì)量與安全管理小組活動記錄
評論
0/150
提交評論