欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      AIX新建文件系統(tǒng)

      時(shí)間:2019-05-13 18:18:00下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《AIX新建文件系統(tǒng)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《AIX新建文件系統(tǒng)》。

      第一篇:AIX新建文件系統(tǒng)

      AIX系統(tǒng)新建文件系統(tǒng)操作文檔

      1.概述 1.1.目的

      AIX新建文件系統(tǒng)操作步驟文檔,提供給對(duì)AIX新建文件系統(tǒng)的人員沒(méi)有操作過(guò)或沒(méi)有經(jīng)驗(yàn)者參考。

      1.2.來(lái)源

      ? AIX新建文件系統(tǒng)yuli,用于備份數(shù)據(jù)庫(kù)數(shù)據(jù)使用。

      1.3.重要程度

      重要

      1.4.描述

      在AIX操作系統(tǒng)中新建文件系統(tǒng)操作步驟。

      2.處理步驟 2.1.一般新建步驟

      1.連接到需要新建文件系統(tǒng)的服務(wù)器檢查環(huán)境是否符合新建文件系統(tǒng)的要求。2.檢查卷組及卷組的大小,其中命令:lspv(查看有什么卷組),lspv 卷組名稱(查看某個(gè)卷組的使用情況,如已用空間,空余空間等相關(guān)信息。)3.以東莞數(shù)據(jù)庫(kù)服務(wù)器新建一個(gè)備份文件系統(tǒng)為例,在array2vg卷組新建文件系統(tǒng),文件系統(tǒng)名稱為:yuli,文件系統(tǒng)的大小為500G,具體操作如下:

      / 6

      1)用root用戶連接數(shù)據(jù)庫(kù)服務(wù)器,查看array2vg使用情況(lsvg array2vg),使用情況如下圖所示:從圖中可以看到array2vg可用空間滿足新建文件系統(tǒng)要求。2)Smitty hacmp(回車),如下圖所示:選擇:system Management(C-SPOC),回車,如下圖所示:選擇:HACMP Logical Volume Management,回車,如下圖所示:選擇:Shared File Systems,回車,如下圖所示:選擇:Enhanced Journaled File Systems,回車,如下圖所示:

      / 6 選擇:Add an Enhanced Journaled File System(新建增強(qiáng)型文件系統(tǒng)),回車,(注:若是在原有的邏輯卷上新建文件系統(tǒng),則選擇:Add an Enhanced Journaled File System on a Prcviously Defincd Logical Volume),如下圖所示:選擇相應(yīng)卷組新建文件系統(tǒng)(array2vg),如下圖所示:

      / 6 在圖中填寫文件系統(tǒng)的大小及文件系統(tǒng)加載路徑后,回車,如下圖所示:

      3)看到Command:OK,則操作成功。按Esc+0 ,退出當(dāng)前界面。4)用命令df –k,查看新建文件系統(tǒng)是否成功,如下圖所示:

      5)至此,新建文件系統(tǒng)結(jié)束。

      2.2.遇到的問(wèn)題

      新建文件系統(tǒng)時(shí)發(fā)現(xiàn)初次新建不成功,系統(tǒng)的錯(cuò)誤提示是: Command:fail MAXIMUM NUMBER OF LOGICAL PARTITIONS IS 512 在新建文件系統(tǒng)的邏輯卷中,MAXIMUM NUMBER OF LOGICAL PARTITIONS 這個(gè)值是512,不能滿足新建文件系統(tǒng)大小的需求,所以創(chuàng)建文件系統(tǒng)不成功。解決此問(wèn)題的操作步驟如下:

      1)Smitty hacmp 回車,如下圖:選擇:system Management(C-SPOC),回車,如下圖所示:

      / 6 選擇:HACMP Logical Volume Management,回車,如下圖所示:選擇:Shared Logica Volumes,回車,如下圖所示:選擇:Change a Shared Logical Volume,回車,如下圖所示:選擇新建文件系統(tǒng)所在的邏輯卷(默認(rèn)為lv01),回車,所下圖所示:

      / 6 把MAXIMUM NUMBER OF LOGICAL PARTITIONS 這個(gè)值改為10240或者更大,然后回車,提示成功即可。注:

      1.邏輯卷的屬性修改完成后,按新建文件系統(tǒng)的步驟重新操作一次,即可新建成功。

      2.所有的這些操作都必須是在HA上進(jìn)行,如果不是在HA上進(jìn)行操作,需在HA上把操作的內(nèi)容進(jìn)行同步。

      / 6

      第二篇:模擬文件系統(tǒng)實(shí)驗(yàn)報(bào)告

      操作系統(tǒng)大型試驗(yàn)

      實(shí)驗(yàn)

      報(bào)

      告姓名:XX 班級(jí):軟件工程110x 學(xué)號(hào):201126630xxx

      一、名稱

      操作系統(tǒng)大型試驗(yàn)。

      二、目的

      用C++編寫出一個(gè)簡(jiǎn)單的模擬文件系統(tǒng),實(shí)現(xiàn)目錄的添加、刪除、重命名,文件的添加、刪除、重命名、文件和目錄、文件的拷貝。

      三、要求

      開(kāi)發(fā)工具:word,vc win32api 1.設(shè)計(jì)和實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件系統(tǒng),要求包括目錄、普通文件和文件的存儲(chǔ) 2.文件系統(tǒng)的目錄結(jié)構(gòu)采用類似Linux的樹(shù)狀結(jié)構(gòu); 3.要求模擬的操作包括:

      a)目錄的添加、刪除、重命名; b)目錄的顯示(列表)

      c)文件的添加、刪除、重命名 d)文件和目錄的拷貝

      4.用戶進(jìn)入時(shí)顯示可用命令列表;用戶輸入help時(shí)顯示所有命令的幫助文檔; 輸入某個(gè)命令+?時(shí)顯示該條命令的使用說(shuō)明

      5.用戶輸入exit時(shí)退出該系統(tǒng) 6.實(shí)驗(yàn)實(shí)現(xiàn)基于windows平臺(tái); 7.實(shí)驗(yàn)開(kāi)發(fā)語(yǔ)言可以選用C/c++等

      四、設(shè)計(jì)

      1.主要思路說(shuō)明

      本模擬系統(tǒng)通過(guò)一個(gè)大小固定的數(shù)組要代表物理盤塊,假設(shè)共有1024塊,新增目錄占一塊,新增文件占一塊,文件中可輸入內(nèi)容,內(nèi)容假設(shè)定義為5個(gè)字符占一塊,超出則應(yīng)新申請(qǐng)空間。模擬物理盤塊的數(shù)組中,數(shù)組內(nèi)容為-99代表改物理盤塊內(nèi)容為空,可使用,其他數(shù)字均代表該物理盤塊被占用,其中-3代表是占用文件的末結(jié)點(diǎn),其他整數(shù)代表是文件內(nèi)容的下一個(gè)尋址下標(biāo),另有一個(gè)string類型的數(shù)組來(lái)存儲(chǔ)內(nèi)容,模擬文件寫入了對(duì)應(yīng)下標(biāo)的物理盤塊中。設(shè)置了一個(gè)全局指針指向根結(jié)點(diǎn),一個(gè)全局指針指向當(dāng)前操作目錄。搜索空白物理盤塊時(shí)采用順序搜索物理盤塊數(shù)組。存儲(chǔ)形式主要采用類似二叉樹(shù)結(jié)構(gòu),如目錄為根,目錄下的第一個(gè)文件或目錄存在根的子節(jié)點(diǎn),目錄下的其他文件或目錄存在第一個(gè)文件或目錄的兄弟節(jié)點(diǎn),以此類推。

      本程序僅seperate()函數(shù)使用現(xiàn)成代碼,此函數(shù)功能為將輸入命令串分離,僅僅起到美觀作用,其余所有代碼均為原創(chuàng)!

      2.申優(yōu)功能:

      1)能實(shí)現(xiàn)動(dòng)態(tài)增長(zhǎng),即當(dāng)輸入文件的內(nèi)容大小大于分配的模擬物理盤塊時(shí)系統(tǒng)能夠自動(dòng)尋找空物理盤塊并分配,將超出的內(nèi)容保存在新的物理盤塊中,若超出模擬磁盤大小,則超出部分不保存且返回提示。

      2)能實(shí)現(xiàn)級(jí)聯(lián)刪除,即當(dāng)刪除目錄(文件夾)時(shí),目錄下的所有內(nèi)容也應(yīng)當(dāng)刪除并正確釋放物理盤塊空間。

      3)能實(shí)現(xiàn)目錄的復(fù)制,即復(fù)制目錄時(shí)(文件夾)時(shí),該目錄下的所有文件和目錄也應(yīng)準(zhǔn)確復(fù)制至目標(biāo)目錄中,并正確分配物理盤塊空間。3.主要函數(shù)和類的定義

      1)主要函數(shù)定義

      #define show_bnum 20

      //顯示物理盤塊的塊數(shù)

      #define block_size 1024

      //物理盤塊塊數(shù) int block[block_size];

      //假設(shè)有block_size塊物理盤塊 string content[block_size];//存放文件內(nèi)容 int Msize=5;

      //此處為模擬磁盤大小為輸入5個(gè)字符 fnode *root=new fnode(“WP:”,0,0);

      //設(shè)置根目錄 fnode *current_path=new fnode();

      fnode *seek_flag=new fnode();

      fnode *cp_flag=new fnode();

      void initialize();

      int seekTarget(string name);

      int seek_log(string name);

      void delete_node(string name);

      int freeblock(fnode *);

      int seekfreeblock();

      void show_current_path();

      void add_file(string name,int t);

      void show_curpath_all();

      void rename_file(string Oname,string Nname);void seperate();

      void cd();

      void add_File();

      void add_Log();

      void delete_file();

      void show_memory();

      void re_name();

      void help();

      void show_content();

      void write_file();

      void Clear_();

      void Exit();

      void cp();

      void cp_log(fnode *target,fnode *source);void cp_file(fnode *target,fnode *source);void cp_node(fnode *target,fnode *source);int find_target_log();

      int calculate_logsizeMain(fnode *);

      int calculate_logsize(fnode *);2)文件節(jié)點(diǎn)類的定義: class fnode {

      public:

      //當(dāng)前路徑 //作為查找標(biāo)志 //作為復(fù)制的位置標(biāo)志 //初始化 //搜索文件或目錄 //搜索目錄 //刪除節(jié)點(diǎn) //釋放物理盤塊 //搜索可用物理盤塊 //顯示當(dāng)前路徑 //增加目錄、文件 //顯示當(dāng)前目錄下的所有文件//重命名 //分離命令 //進(jìn)入目錄 //增加文件功能入口 //增加目錄功能入口 //刪除文件或目錄功能入口 //顯示物理盤塊占用情況 //重命名功能入口 //查看幫助 //查看文件內(nèi)容 //寫文件 //清屏 //退出 //復(fù)制功能入口 //復(fù)制目錄 //復(fù)制文件 //復(fù)制節(jié)點(diǎn) //找到復(fù)制的目標(biāo)目錄 //計(jì)算目錄大小

      string filename;

      //文件名

      int type;

      //文件類型,1為普通文件,0為目錄文件

      fnode *parent;

      //父節(jié)點(diǎn)

      fnode *child;

      //子節(jié)點(diǎn)

      fnode *brother;

      //兄弟節(jié)點(diǎn)

      int block_num;

      //表示占用的物理盤塊塊號(hào)

      int isBro;

      //表示是否是在同級(jí)目錄下,0表示不是,1表示是

      int isCld;

      //是否為目錄下第一個(gè)節(jié)點(diǎn),1表示是,0表示不是

      fnode()

      //初始化

      {

      type=-1;

      parent=NULL;

      child=NULL;

      brother=NULL;

      block_num=-1;

      isBro=0;

      isCld=0;

      }

      fnode(string n,int t,int b)

      //根節(jié)點(diǎn)初始化

      {

      type=t;

      filename=n;

      parent=NULL;

      child=NULL;

      brother=NULL;

      block_num=b;

      block[block_num]=-3;

      isBro=0;

      isCld=0;

      }

      fnode(fnode *p,string name,int t,int b)//文件節(jié)點(diǎn)初始化

      {

      parent=p;

      filename=name;

      type=t;

      child=NULL;

      brother=NULL;

      block_num=b;

      block[block_num]=-3;

      isBro=0;

      isCld=0;

      }

      void copy(fnode *cp)

      //拷貝函數(shù)

      {

      filename=cp->filename;

      type=cp->type;

      parent=cp->parent;

      child=cp->child;

      brother=cp->brother;

      block_num=cp->block_num;

      }

      };4.命令:

      命令 echo md del cd cp dir ren typ wrt mem cls exit

      解釋

      echo命令可以在當(dāng)前目錄下創(chuàng)建一個(gè)文件,具體格式:echo+name md命令可以在當(dāng)前目錄下創(chuàng)建一個(gè)目錄文件,具體格式:md+name del命令可以在當(dāng)前目錄下刪除一個(gè)已存在的文件或目錄(支持級(jí)聯(lián)刪除),具體格式:del+name

      cd命令可以進(jìn)入下一級(jí)目錄或返回上級(jí)目錄、根目錄,具體格式:cd+name或cd+.或cd+..cp命令可以復(fù)制當(dāng)前目錄下一個(gè)指定的文件或目錄至指定的目錄,具體格式:cp+name+road

      dir命令可以顯示當(dāng)前目錄下的所有文件和目錄,具體格式:del ren命令可以重命名一個(gè)存在于當(dāng)前目錄下的文件或目錄,具體格式:ren+name +new name typ命令可以查看當(dāng)前目錄下一個(gè)文件的內(nèi)容,具體格式:typ+name wrt命令可以在當(dāng)前目錄下寫內(nèi)容至一個(gè)已存在的文件,具體格式:wrt+name +content mem命令可以查看模擬物理盤塊的使用情況,具體格式:mem cls命令為清屏命令,具體格式:cls exit命令為退出命令,具體格式:exit

      五、關(guān)鍵技術(shù)流程圖及說(shuō)明

      提示:若圖中文字無(wú)法看清,可用Micorsoft Visio打開(kāi)壓縮包下“部分程序流程圖”文件夾的繪圖文件查看。

      1.增加文件或目錄(此功能比較簡(jiǎn)單,流程圖寫的較詳細(xì)就不做說(shuō)明):

      2.刪除目錄(實(shí)現(xiàn)級(jí)聯(lián)刪除):

      說(shuō)明:刪除目錄時(shí)刪除文件和刪除目錄本身放在同一個(gè)函數(shù)中,刪除目錄下的所有文件放在freeblock函數(shù)里,這樣比較好處理。下面給只給出遞歸函數(shù)的流程圖。

      3.將內(nèi)容寫入文件(實(shí)現(xiàn)動(dòng)態(tài)增長(zhǎng)):

      說(shuō)明:圖中Msize為模擬規(guī)定的文件塊字符串大小,比如Msize=5,那么一個(gè)物理盤塊只能存5個(gè)字符,超出則要申請(qǐng)新的空間。主要采用雙重循環(huán)方法寫入,外層循環(huán)為需要的塊數(shù),內(nèi)層循環(huán)為Msize,用string累加字符串內(nèi)容,內(nèi)層循環(huán)退出后新申請(qǐng)一個(gè)空間并將對(duì)應(yīng)下標(biāo)賦給上一個(gè)物理盤塊數(shù)組,再將對(duì)應(yīng)內(nèi)容存入content(為string類型的數(shù)組,模擬存儲(chǔ)內(nèi)容)數(shù)組中,直至退出外層循環(huán)。

      4.復(fù)制目錄:

      說(shuō)明:這里和刪除目錄一樣,寫了兩個(gè)復(fù)制函數(shù),這樣寫同樣因?yàn)檫f歸調(diào)用是比較方便,第一個(gè)函數(shù)傳入?yún)?shù)為目標(biāo)目錄指針和被復(fù)制的目錄的指針,第一個(gè)函數(shù)里新建了一個(gè)階段復(fù)制被復(fù)制的目錄的內(nèi)容,然后將新建節(jié)點(diǎn)的子節(jié)點(diǎn)和被復(fù)制目錄的子結(jié)點(diǎn)傳入下一個(gè)遞歸調(diào)用函數(shù)(因?yàn)槟夸浀膬?nèi)容存于目錄的子節(jié)點(diǎn),與兄弟節(jié)點(diǎn)無(wú)關(guān)),第二個(gè)函數(shù)就是遞歸調(diào)用函數(shù)cp_node,下面就只給出cp_node的流程圖(復(fù)制之前同樣進(jìn)行了路徑的判誤操作,內(nèi)存大小的判斷操作,是否重名的判斷操作,被復(fù)制目錄是否存在判斷操作,這些操作在遞歸函數(shù)之前完成,所以下面的遞歸函數(shù)不體現(xiàn)這些操作)。

      六、運(yùn)行結(jié)果

      1.主界面展示:

      圖:主界面展示

      2.help命令展示:

      圖:help命令展示

      3.echo命令展示:

      圖:echo命令展示

      4.del命令展示:

      圖:del命令展示-普通刪除

      說(shuō)明:創(chuàng)建了目錄log1,在log1中創(chuàng)建一系列文件和目錄,磁盤使用情況顯示已分配,實(shí)用del刪除命令后查看磁盤分配證明級(jí)聯(lián)刪除是可靠的。

      圖:del命令展示-級(jí)聯(lián)刪除 5.md命令展示:

      圖:md命令展示

      6.cd命令展示:

      說(shuō)明:圖中展示了cd+name、cd+.、cd+..三種cd命令的使用和判別情況。

      圖:cd命令展示

      7.dir命令展示:

      圖:dir命令展示

      8.typ命令展示:

      圖:typ命令展示

      9.ren命令展示:

      圖:ren命令展示

      10.wrt命令展示:

      圖:wrt命令展示 說(shuō)明:此處為了實(shí)驗(yàn)方便,將磁盤大小限定為5,每塊磁盤輸入的字符數(shù)限2,輸入的內(nèi)容***899需要9塊磁盤塊,而磁盤塊為5,根目錄占用一塊,只能輸入4塊大小的內(nèi)容,即11223344,所有文件file只寫入了11223344。

      圖:wrt動(dòng)態(tài)增長(zhǎng)展示

      11.mem命令展示:

      圖:mem命令展示

      12.cls命令展示:

      圖:cls命令展示-1

      圖:cls命令展示-2

      13.cp命令展示:

      說(shuō)明:圖中根目錄(WP:)下創(chuàng)建了目錄a(md a)、目錄b(md b),在a目錄下創(chuàng)建了b目錄(md b),在b目錄中創(chuàng)建了文件a(echo a)、目錄c(md c),文件a中輸入1111122222(wrt a 111112222)內(nèi)容代表占了兩塊物理盤塊(程序中Msize模擬大小,設(shè)為5個(gè)字符了),再進(jìn)入目錄c(cd c),c中先創(chuàng)建目錄f(md f)再創(chuàng)建文件g(與之前創(chuàng)建順序不同說(shuō)明程序在不同情況下能正常運(yùn)行),在g中輸入5個(gè)3,5個(gè)2,5個(gè)1(wrt g ***)代表占用3塊物理盤塊空間,再返回目錄a(cd.cd.),將目錄a下的目錄b復(fù)制給目錄WP下的目錄c(cp b WP:c),再將目錄a中的目錄b刪除(del b證明的確是復(fù)制而非簡(jiǎn)單指針指向),進(jìn)入WP下的目錄c查看剛復(fù)制的內(nèi)容(dir)。物理盤塊使用情況中第一個(gè)-3為根目錄占用,第二個(gè)-3是目錄a,第三個(gè)-3是目錄c,接下來(lái)的8個(gè)-99是目錄a中原目錄b占用的空間(此處證明刪除是可靠的),圖中顯示目錄c中確實(shí)成功復(fù)制了目錄b及目錄下的所有內(nèi)容(使用dir命令查看)。

      圖:cp命令展示 14.exit命令展示:

      圖:exit命令展示

      15.綜合展示:

      說(shuō)明:echo a在根目錄(WP:)下創(chuàng)建了文件a,md b在根目錄(WP:)下創(chuàng)建了目錄b,dir顯示根目錄下的所有文件和目錄,wrt a aaaaabbbbbccccc在文件a中輸入了一串內(nèi)容,typ a顯示文件a中的內(nèi)容,cd b進(jìn)入目錄b,md a在目錄b下創(chuàng)建了目錄a,cd a進(jìn)入目錄a,cd.返回目錄b,cd.返回根目錄WP:,ren b newname將目錄b重命名為newname,mem顯示內(nèi)存情況,第一個(gè)-3代表根節(jié)點(diǎn)占用,第二個(gè)3代表文件a占用且下一塊盤塊下標(biāo)為3,第三個(gè)-3代表目錄b占用,之后的4代表被文件a占用且的下一塊盤塊的尋找下標(biāo)為4,下一個(gè)-3代表文件a的末盤塊,下一個(gè)-3代表目錄b內(nèi)的目錄a占用,del a在根目錄WP:下刪除文件a,mem查看物理盤塊實(shí)驗(yàn)情況,圖中顯示原文件a占用的內(nèi)存空間已經(jīng)變?yōu)?99,代表成功刪除a并釋放磁盤空間(-99代表磁盤空間空閑可用),dir顯示根目錄WP:下所有文件和目錄,顯示只有newname,則證明重命名和刪除操作是成功的。

      圖:綜合展示

      七、心得體會(huì)和調(diào)試中遇到的問(wèn)題及解決辦法

      編寫調(diào)試過(guò)程中遇到許多問(wèn)題,一類是指針指向空還繼續(xù)操作造成程序停止運(yùn)行,經(jīng)檢查后修改正確,一類是邏輯上出現(xiàn)錯(cuò)誤導(dǎo)致級(jí)聯(lián)刪除或者目錄復(fù)制出錯(cuò),經(jīng)改正后成功實(shí)現(xiàn)。

      主要的難點(diǎn)在于兄弟結(jié)點(diǎn)和子結(jié)點(diǎn)的處理,所以再程序中引入了isBro這個(gè)標(biāo)志位來(lái)判斷是否是兄弟結(jié)點(diǎn)即與父節(jié)點(diǎn)是否在同級(jí)目錄,若不在同級(jí)目錄則父節(jié)點(diǎn)為真父節(jié)點(diǎn)(是指向本目錄而非本目錄中上個(gè)文件)。還有一個(gè)難點(diǎn)是在進(jìn)行遞歸調(diào)用刪除或復(fù)制目錄時(shí)發(fā)現(xiàn)處理目錄和目錄下的內(nèi)容不太合適放在同一個(gè)遞歸程序中,所以單獨(dú)寫了兩個(gè)函數(shù)處理目錄的復(fù)制或刪除,然后對(duì)應(yīng)兩個(gè)遞歸程序處理目錄下的所有內(nèi)容。實(shí)驗(yàn)總結(jié)及有待改進(jìn)的問(wèn)題。

      因?yàn)闀r(shí)間比較緊張,在幾門考試中抽空寫了這個(gè)小程序,所以并沒(méi)有實(shí)現(xiàn)存盤,另因?yàn)閷?duì)輸入命令字符串的處理上有點(diǎn)瑕疵,所有在寫文件內(nèi)容中只能寫入連續(xù)的字符串(中間不能插入空格),否則會(huì)被判定為命令輸入錯(cuò)誤,并且只實(shí)現(xiàn)了文件的寫入,不能修改或插入,有待改進(jìn)。沒(méi)有實(shí)現(xiàn)目錄樹(shù)的展示,只能顯示目錄下所有文件,有待改進(jìn)。但相信時(shí)間再充裕一些這些小問(wèn)題都能很好地解決。

      八、源代碼

      在壓縮包內(nèi)“源代碼”文件夾內(nèi)。

      第三篇:操作系統(tǒng)課程設(shè)計(jì)-文件系統(tǒng)

      模擬一個(gè)簡(jiǎn)單二級(jí)文件管理系統(tǒng)

      設(shè)計(jì)目的:通過(guò)具體的文件存儲(chǔ)空間的管理、文件的物理結(jié)構(gòu)、目錄結(jié)構(gòu)和文件操作的實(shí)現(xiàn),加深對(duì)文件系統(tǒng)內(nèi)部功能和實(shí)現(xiàn)過(guò)程的理解。

      設(shè)計(jì)內(nèi)容:模擬一個(gè)簡(jiǎn)單二級(jí)文件管理系統(tǒng)一、實(shí)驗(yàn)內(nèi)容描述 1 實(shí)驗(yàn)?zāi)繕?biāo)

      本實(shí)驗(yàn)的目的是通過(guò)一個(gè)簡(jiǎn)單多用戶文件系統(tǒng)的設(shè)計(jì),加深理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn).2 實(shí)驗(yàn)要求

      為DOS系統(tǒng)設(shè)計(jì)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng).要求做到以下幾點(diǎn): ①可以實(shí)現(xiàn)下列命令: login 用戶登錄 dir 列文件目錄 create 創(chuàng)建文件 delete 刪除文件 open 打開(kāi)文件 close 關(guān)閉文件 read 讀文件 write 寫文件

      ②列目錄時(shí)要列出文件名、物理地址、保護(hù)碼和文件長(zhǎng)度.③源文件可以進(jìn)行讀寫保護(hù).二、程序主要內(nèi)容

      1設(shè)計(jì)思路

      程序中要求每個(gè)用戶在登陸后才可對(duì)其擁有的文件進(jìn)行操作,用戶對(duì)于其他用戶的文件無(wú)操作權(quán).文件操作包括瀏覽、創(chuàng)建、刪除、打開(kāi)、關(guān)閉、閱讀、寫入、修改模式.其他操作包括新建用戶、幫助、用戶登入、用戶登出、退出系統(tǒng).在程序文件夾下有個(gè)名為“file”的系統(tǒng)根目錄,此目錄下包括:一個(gè)名為“mfd”的文件,記錄所有注冊(cè)過(guò)的帳號(hào)及密碼;用戶文件,以用戶名作為文件名,內(nèi)容為其擁有的文件名及屬性;一個(gè)名為“keiji”的文件夾.“keiji”文件夾中包括:“file.p”指針文件,記錄所有已用的物理地址;一些以物理地址為名的文件,內(nèi)容為文件內(nèi)容.2 數(shù)據(jù)結(jié)構(gòu)

      file結(jié)構(gòu)體系統(tǒng)文件數(shù)據(jù)結(jié)構(gòu):

      fpaddrint,文件的物理地址、flengthint,文件長(zhǎng)度、fmodeint,文件模式 0.只讀;1.可寫;2.可讀寫;3.保護(hù)、fname[]char,文件名; filemode結(jié)構(gòu)體文件狀態(tài)數(shù)據(jù)結(jié)構(gòu):

      isopenint,文件當(dāng)前狀態(tài),0.關(guān)閉;1.打開(kāi)、modeint,文件模式 0.只讀;1.可寫;2.可讀寫;3.初始化;

      user結(jié)構(gòu)體用戶信息數(shù)據(jù)結(jié)構(gòu):

      uname[]char,用戶名、upassword[]char,用戶密碼; userfile結(jié)構(gòu)體用戶文件數(shù)據(jù)結(jié)構(gòu):

      uname[]char,用戶名、ufile[]file,用戶擁有的文件數(shù)組.代碼:

      #include

      #include

      #include

      #include

      #include

      #define MaxUser 100

      //定義最大MDF主目錄文件

      #define MaxDisk 512*1024

      //模擬最大磁盤空間

      #define commandAmount 12

      //對(duì)文件操作的指令數(shù)

      //存儲(chǔ)空間管理有關(guān)結(jié)構(gòu)體和變量

      char disk[MaxDisk];

      //模擬512K的磁盤存儲(chǔ)空間

      typedef struct distTable //磁盤塊結(jié)構(gòu)體

      {

      int maxlength;

      int start;

      int useFlag;

      distTable *next;

      }diskNode;

      diskNode *diskHead;

      struct fileTable

      //文件塊結(jié)構(gòu)體

      {

      char fileName[10];

      int strat;

      //文件在磁盤存儲(chǔ)空間的起始地址

      int length;

      //文件內(nèi)容長(zhǎng)度

      int maxlength;

      //文件的最大長(zhǎng)度

      char fileKind[3];

      //文件的屬性——讀寫方式

      struct tm *timeinfo;

      bool openFlag;

      //判斷是否有進(jìn)程打開(kāi)了該文件

      //fileTable *next;

      };

      //兩級(jí)目錄結(jié)構(gòu)體

      typedef struct user_file_directory //用戶文件目錄文件UFD

      {

      //char fileName[10];

      fileTable *file;

      user_file_directory *next;

      }UFD;

      //UFD *headFile;

      typedef struct master_file_directory //主文件目錄MFD

      {

      char userName[10];

      char password[10];

      UFD *user;

      }MFD;

      MFD userTable[MaxUser];

      int used=0;

      //定義MFD目錄中用已有的用戶數(shù)

      //文件管理

      void fileCreate(char fileName[],int length,char fileKind[]);

      //創(chuàng)建文件

      void fileWrite(char fileName[]);

      //寫文件

      void fileCat(char fileName[]);

      //讀文件

      void fileRen(char fileName[],char rename[]);

      //重命名文件

      void fileFine(char fileName[]);

      //查詢文件

      void fileDir(char UserName[]);

      //顯示某一用戶的所有文件

      void fileClose(char fileName[]);

      //關(guān)閉已打開(kāi)的文件

      void fileDel(char fileName[]);

      //刪除文件

      void chmod(char fileName[],char kind[]);

      //修改文件的讀寫方式

      int requestDist(int &startPostion,int maxLength);//磁盤分配查詢

      void initDisk();

      //初始化磁盤

      void freeDisk(int startPostion);

      //磁盤空間釋放

      void diskShow();

      //顯示磁盤使用情況

      //用戶管理

      void userCreate();

      int login();

      int userID=-1;

      //用戶登錄的ID號(hào),值為-1時(shí)表示沒(méi)有用戶登錄

      int main()

      {

      char order[commandAmount][10];

      strcpy(order[0],“create”);

      strcpy(order[1],“rm”);

      strcpy(order[2],“cat”);

      strcpy(order[3],“write”);

      strcpy(order[4],“fine”);

      strcpy(order[5],“chmod”);

      strcpy(order[6],“ren”);

      strcpy(order[7],“dir”);

      strcpy(order[8],“close”);

      strcpy(order[9],“return”);

      strcpy(order[10],“exit”);

      strcpy(order[11],“df”);

      char command[50],command_str1[10],command_str2[10],command_str3[5],command_str4[3];

      int i,k,j;

      int length;

      initDisk();

      //初始化磁盤

      for(i=0;i

      //初始化用戶UFD目錄文件的頭指針

      {

      userTable[i].user=(UFD *)malloc(sizeof(UFD));

      userTable[i].user->next=NULL;

      }

      while(1)

      {

      printf(“********************************************n”);

      printf(“

      1、Creat usern”);

      printf(“

      2、loginn”);

      printf(“********************************************n”);

      printf(“Please chooce the function key:>”);

      int choice;

      scanf(“%d”,&choice);

      if(choice==1)userCreate();

      else if(choice==2)userID=login();

      else printf(“您的輸入有誤,請(qǐng)重新選擇n”);

      while(userID!=-1)

      {

      fflush(stdin);

      printf(“———————————————————————————————————————n”);

      printf(“ create-創(chuàng)建 格式:create a1 1000 rw,將創(chuàng)建名為a1,長(zhǎng)度為1000字節(jié)可讀可寫的文件n”);

      printf(“ rm-刪除 格式:rm a1,將刪除名為a1的文件n”);

      printf(“ cat-查看文件內(nèi)容 格式:cat a1,顯示a1的內(nèi)容n”);

      printf(“ write-寫入

      格式:write a1n”);

      printf(“ fine-查詢 格式:fine a1 ,將顯示文件 a1的屬性n”);

      printf(“ chmod-修改 格式:chmod a1 r,將文件a1的權(quán)限改為只讀方式n”);

      printf(“ ren-重命名 格式:ren a1 b1 ,將a1改名為b1n”);

      printf(“ dir-顯示文件 格式:dir aaa,將顯示aaa用戶的所有文件n”);

      printf(“ df-顯示磁盤空間使用情況 格式:dfn”);

      printf(“ close-關(guān)閉文件 格式:close a1,將關(guān)閉文件a1n”);

      printf(“ return-退出用戶,返回登錄界面n”);

      printf(“ exit-退出程序n”);

      printf(“————————————————————————————————————————n”);

      printf(“please imput your command:>”);

      gets(command);

      int select;

      for(i=0;command[i]!=' '&&command[i]!='