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

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

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

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

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

      操作系統(tǒng)實(shí)習(xí)報(bào)告(磁盤(pán)文件操作)(含5篇)

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

      第一篇:操作系統(tǒng)實(shí)習(xí)報(bào)告(磁盤(pán)文件操作)

      大學(xué)

      操作系統(tǒng)課程綜合實(shí)踐

      題目:

      磁盤(pán)文件操作

      班級(jí):

      姓名:

      學(xué)號(hào):

      指導(dǎo)教師:

      2011年 12 月 23日

      磁盤(pán)文件操作

      摘要:

      為了正確地實(shí)現(xiàn)文件的存取,文件系統(tǒng)設(shè)計(jì)了一組與存取文件有關(guān)的功能模塊,用戶(hù)可以用“訪問(wèn)指令”調(diào)用這些功能模塊,以實(shí)現(xiàn)文件的存取要求。我們把文件系統(tǒng)設(shè)計(jì)的這一組功能模塊稱(chēng)為“文件操作“,實(shí)驗(yàn)就是要模擬實(shí)現(xiàn)一些文件操作。文件操作不是獨(dú)立的,它和文件系統(tǒng)的其他部分密切相關(guān),若要實(shí)現(xiàn)文件操作就離不開(kāi)文件的目錄結(jié)構(gòu)、文件的組織結(jié)構(gòu)和磁盤(pán)空間的管理。因此,這個(gè)實(shí)習(xí)雖然是文件操作的模擬實(shí)現(xiàn),但還是必須模擬一部分文件的組織結(jié)構(gòu)、目錄結(jié)構(gòu)和磁盤(pán)空間管理的實(shí)現(xiàn)。

      關(guān)鍵字:磁盤(pán)、文件、目錄、分配表。

      一、實(shí)驗(yàn)內(nèi)容:

      設(shè)計(jì)一個(gè)簡(jiǎn)單的文件系統(tǒng),用文件模擬磁盤(pán),用數(shù)組模擬緩沖區(qū),要求實(shí)現(xiàn); 1. 2. 3. 4. 支持多級(jí)目錄結(jié)構(gòu),支持文件的絕對(duì)路徑;

      文件的邏輯結(jié)構(gòu)采用流式結(jié)構(gòu),物理結(jié)構(gòu)采用鏈接結(jié)構(gòu)中的顯示鏈接方式;

      采用文件分配表;

      實(shí)現(xiàn)的命令包括建立目錄、列目錄、刪除空目錄、建立文件、刪除文件、顯示文件內(nèi)容、打開(kāi)文件、讀文件、寫(xiě)文件(追加方式)、關(guān)閉文件、改變文件屬性。

      最后編寫(xiě)主函數(shù)對(duì)所做工作進(jìn)行測(cè)試。

      二、實(shí)驗(yàn)?zāi)康模?、2、3、4、文件的操作。

      文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu) 磁盤(pán)空間的管理 磁盤(pán)目錄結(jié)構(gòu)

      三、實(shí)驗(yàn)環(huán)境: Windows XP、VC++

      四、程序運(yùn)行結(jié)果(詳圖):

      程序運(yùn)行的主界面:用戶(hù)運(yùn)行命令7-建立目錄

      用戶(hù)運(yùn)行命令1-建立文件:

      顯示目錄內(nèi)容:

      打開(kāi)文件:

      寫(xiě)文件:

      關(guān)閉文件:

      再次顯示目錄內(nèi)容:

      以上為程序的運(yùn)行的部分截圖。

      五、程序清單: #define false 0 #define true 1 #include “stdio.h” //#include #include //#param warning(disable:4996)FILE*x1,*x2;typedef struct {

      char name[3];/*文件或目錄名*/ char type[2];/*文件類(lèi)型名*/ char attribute;/*屬性*/ char address;/*文件或目錄的起始盤(pán)塊號(hào)*/ char length;/*文件長(zhǎng)度,以盤(pán)塊為單位*/ }content;/*目錄結(jié)構(gòu)*/ #define n 5 /*模擬實(shí)驗(yàn)中系統(tǒng)允許打開(kāi)文件的最大數(shù)量*/ typedef struct { int dnum;/*磁盤(pán)盤(pán)塊號(hào)*/ int bnum;/*盤(pán)塊內(nèi)第幾項(xiàng)*/ }pointer;/*已打開(kāi)文件表中讀寫(xiě)指針的結(jié)構(gòu)*/ typedef struct {

      char name[20];/*文件絕對(duì)路徑名*/ char attribute;/*文件的屬性,用1個(gè)字節(jié)表示,所以用了char類(lèi)型*/ int number;/*文件起始盤(pán)塊號(hào)*/ int length;/*文件長(zhǎng)度,文件占用的字節(jié)數(shù)*/ int flag;/*操作類(lèi)型,用“0”表示以讀操作方式開(kāi)文件,用“1”表示寫(xiě)操作pointer read;/*讀文件的位置,文件剛打開(kāi)時(shí)dnum為文件起始盤(pán)塊號(hào),bnumpointer write;/*寫(xiě)文件的位置,文件建立時(shí)dnum為文件起始盤(pán)塊號(hào),bnum方式打開(kāi)文件*/ 為“0”*/ 為“0”,打開(kāi)時(shí)為文件末尾*/ }OFILE;/*已打開(kāi)文件表項(xiàng)類(lèi)型定義*/ struct {

      char buffer1[64];/*模擬緩沖1*/ content buffer2[8];/*模擬緩沖2*/ FILE *fc;/*模擬磁盤(pán)的文件指針*/

      void copen(OFILE *x1,OFILE *x2)//OFILE *x1,*x2;{

      } strcpy(x1->name,x2->name);x1->attribute=x2->attribute;x1->number=x2->number;x1->length=x2->length;x1->flag=x2->flag;x1->read.dnum=x2->read.dnum;x1->read.bnum=x2->read.bnum;x1->write.dnum=x2->write.dnum;x1->write.bnum=x2->write.bnum;OFILE file[n];/*已打開(kāi)文件表*/ int length;/*已打開(kāi)文件表中登記的文件數(shù)量*/ }openfile;/*已打開(kāi)文件表定義*/

      int sopen(char *name)/*在已打

      開(kāi)

      件//P172 //char *name;{

      void dopen(char *name)/*在已打開(kāi)文件表中刪除文件name*/ //char *name;{

      int iopen(content *x)/*在已打開(kāi)文件表中插入文件name*/ //content *x;{ int i;i=sopen(name);if(i==-1){

      } copen(&openfile.file[i],&openfile.file[openfile.length-1]);openfile.length--;printf(“文件未打開(kāi)n”);else int i;i=0;while(i

      name*/ 依次查找已打開(kāi)文件表*/ if(i>=openfile.length)return(i);}/*查找sopen函數(shù)結(jié)束*/ }/*刪除函數(shù)結(jié)束*/

      int i;i=sopen(x->name);if(i!=-1){

      } else if(openfile.length==n){

      } else {

      } //copen(&openfile.file[openfile.length],x);openfile.length++;return(true);printf(“已打開(kāi)文件表已滿(mǎn)n”);return(false);printf(“文件已經(jīng)打開(kāi)n”);return(false);}/*填寫(xiě)已打開(kāi)文件表函數(shù)結(jié)束*/ int allocate()/*分配一個(gè)磁盤(pán)塊,返回塊號(hào)*/ {

      */

      //P173 int i;fseek(fc,0,SEEK_SET);/*將模擬磁盤(pán)的文件指針移至模擬磁盤(pán)FAT表*/ fread(buffer1,64L,1,fc);/*將FAT表中第一個(gè)磁盤(pán)塊讀入模擬緩沖for(i=3;i<63;i++)if(buffer1[i]==0){ /*FAT中的第i項(xiàng)為0,分配第i塊磁盤(pán)塊,修改FAT表,并且寫(xiě)回磁盤(pán)buffer1中*/ buffer1[i]=255;

      } fseek(fc,0,SEEK_SET);fwrite(buffer1,64L,1,fc);return(i);/*返回磁盤(pán)號(hào)*/ fread(buffer1,64L,1,fc);/*將FAT表中第二個(gè)磁盤(pán)塊讀入模擬緩沖for(i=0;i<63;i++)

      if(buffer1[i]==0){/*FAT中的第i項(xiàng)為0,分配第i+64塊磁盤(pán)塊,修改FAT表,并且寫(xiě)

      } printf(“已經(jīng)沒(méi)有磁盤(pán)空間n”);return(false);buffer1[i]=255;fseek(fc,-64L,SEEK_CUR);fwrite(buffer1,64L,1,fc);return(i+64);/*返回磁盤(pán)號(hào)*/ buffer1中*/ 回磁盤(pán)*/ }/*分配磁盤(pán)塊函數(shù)結(jié)束*/ int read_file(char *name,int length)/*讀文件函數(shù),文件路徑名name,讀取長(zhǎng)度length*/ //char *name;//int length;{

      int i,t;//char ch;if((i=sopen(name))==-1){

      } if(openfile.file[i].flag==1){ printf(“文件以寫(xiě)方式打開(kāi),不能讀n”);printf(“文件沒(méi)有打開(kāi)或不存在n”);return(false);

      } return 0;t=0;fseek(fc,openfile.file[i].read.dnum*64L,SEEK_SET);fread(buffer1,64,1,fc);while(t

      openfile.file[i].read.dnum=buffer1[openfile.file[i].read.dnum%64]

      }

      } t++;openfile.file[i].read.bnum=0;fseek(fc,openfile.file[i].read.dnum*64L,SEEK_SET);fread(buffer1,64,1,fc);/*讀取下一個(gè)*/ putchar(buffer1[openfile.file[i].read.bnum]);/*讀出一個(gè)字符(這if((t+1)%64==0)putchar('n');/*修改讀指針*/ openfile.file[i].read.bnum++;if(openfile.file[i].read.bnum>=64)/*一塊讀完,讀取下一個(gè)盤(pán)塊*/ { fseek(fc,openfile.file[i].read.dnum/64*64, SEEK_SET);fread(buffer1,64,1,fc);里是在屏幕上顯示)*/;/*修改讀指針*/ }/*讀函數(shù)結(jié)束*/ int write_file(char *name,char *buff,int length)//P174 /*寫(xiě)文件函數(shù)*/ //char *name;/*文件路徑名*/ //char *buff;/*存放準(zhǔn)備寫(xiě)入磁盤(pán)的內(nèi)容*/ //int length;/*寫(xiě)入內(nèi)容的長(zhǎng)度*/ {

      int i,t,dd;if((i=sopen(name))==-1)/*文件不存在,無(wú)法寫(xiě)*/ {

      } if(openfile.file[i].flag==0){

      } t=0;fseek(fc,openfile.file[i].write.dnum*64L, SEEK_SET);fread(buffer1,64,1,fc);while(t

      buffer1[openfile.file[i].write.bnum]=buff[t];openfile.file[i].write.bnum++;openfile.file[i].length++;if(openfile.file[i].write.bnum>=64){

      fseek(fc, openfile.file[i].write.dnum*64L, SEEK_SET);fwrite(buffer1,64,1,fc);/*一塊寫(xiě)完,寫(xiě)回磁盤(pán)*/ if((dd=allocate())==false){

      openfile.file[i].write.bnum--;openfile.file[i].length--;printf(“無(wú)磁盤(pán)空間,部分信息丟失,寫(xiě)失敗n”);return(false);printf(“文件以讀方式打開(kāi),不能寫(xiě)n”);return(false);printf(“文件沒(méi)有打開(kāi)或不存在n”);return(false);}/*if*/ fseek(fc,openfile.file[i].write.dnum/64*64L, SEEK_SET);fread(buffer1,64,1,fc);buffer1[openfile.file[i].write.dnum%64]=dd;fseek(fc,openfile.file[i].write.dnum/64*64L, SEEK_SET);

      fwrite(buffer1,64,1,fc);openfile.file[i].write.dnum=dd;openfile.file[i].write.bnum=0;}/*if*/ t++;}/*while*/ fseek(fc, openfile.file[i].write.dnum*64L, SEEK_SET);fwrite(buffer1,64,1,fc);/*一塊寫(xiě)完,寫(xiě)回磁盤(pán)*/ }/*寫(xiě)函數(shù)結(jié)束*/ int search(char *name,int flag,int *dnum,int *bnum)/*查找路徑名為name的文件或目錄,返回該目錄的起始盤(pán)塊號(hào) */ //char *name;//int flag;/*flag=8表示查找目錄,否則為文件*/ //int *dnum,*bnum;/*返回找到文件或目錄的目錄項(xiàng)的位置:盤(pán)塊dnum中第bnum項(xiàng)*/ {

      for(s=0;name[k]!='.'&&name[k]!='/'&&s<3&&name[k]!='