久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

操作系統實習報告(磁盤文件操作)(含5篇)

時間:2019-05-13 18:12:38下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《操作系統實習報告(磁盤文件操作)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《操作系統實習報告(磁盤文件操作)》。

第一篇:操作系統實習報告(磁盤文件操作)

大學

操作系統課程綜合實踐

題目:

磁盤文件操作

班級:

姓名:

學號:

指導教師:

2011年 12 月 23日

磁盤文件操作

摘要:

為了正確地實現文件的存取,文件系統設計了一組與存取文件有關的功能模塊,用戶可以用“訪問指令”調用這些功能模塊,以實現文件的存取要求。我們把文件系統設計的這一組功能模塊稱為“文件操作“,實驗就是要模擬實現一些文件操作。文件操作不是獨立的,它和文件系統的其他部分密切相關,若要實現文件操作就離不開文件的目錄結構、文件的組織結構和磁盤空間的管理。因此,這個實習雖然是文件操作的模擬實現,但還是必須模擬一部分文件的組織結構、目錄結構和磁盤空間管理的實現。

關鍵字:磁盤、文件、目錄、分配表。

一、實驗內容:

設計一個簡單的文件系統,用文件模擬磁盤,用數組模擬緩沖區,要求實現; 1. 2. 3. 4. 支持多級目錄結構,支持文件的絕對路徑;

文件的邏輯結構采用流式結構,物理結構采用鏈接結構中的顯示鏈接方式;

采用文件分配表;

實現的命令包括建立目錄、列目錄、刪除空目錄、建立文件、刪除文件、顯示文件內容、打開文件、讀文件、寫文件(追加方式)、關閉文件、改變文件屬性。

最后編寫主函數對所做工作進行測試。

二、實驗目的:1、2、3、4、文件的操作。

文件的邏輯結構和物理結構 磁盤空間的管理 磁盤目錄結構

三、實驗環境: Windows XP、VC++

四、程序運行結果(詳圖):

程序運行的主界面:用戶運行命令7-建立目錄

用戶運行命令1-建立文件:

顯示目錄內容:

打開文件:

寫文件:

關閉文件:

再次顯示目錄內容:

以上為程序的運行的部分截圖。

五、程序清單: #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];/*文件類型名*/ char attribute;/*屬性*/ char address;/*文件或目錄的起始盤塊號*/ char length;/*文件長度,以盤塊為單位*/ }content;/*目錄結構*/ #define n 5 /*模擬實驗中系統允許打開文件的最大數量*/ typedef struct { int dnum;/*磁盤盤塊號*/ int bnum;/*盤塊內第幾項*/ }pointer;/*已打開文件表中讀寫指針的結構*/ typedef struct {

char name[20];/*文件絕對路徑名*/ char attribute;/*文件的屬性,用1個字節表示,所以用了char類型*/ int number;/*文件起始盤塊號*/ int length;/*文件長度,文件占用的字節數*/ int flag;/*操作類型,用“0”表示以讀操作方式開文件,用“1”表示寫操作pointer read;/*讀文件的位置,文件剛打開時dnum為文件起始盤塊號,bnumpointer write;/*寫文件的位置,文件建立時dnum為文件起始盤塊號,bnum方式打開文件*/ 為“0”*/ 為“0”,打開時為文件末尾*/ }OFILE;/*已打開文件表項類型定義*/ struct {

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

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];/*已打開文件表*/ int length;/*已打開文件表中登記的文件數量*/ }openfile;/*已打開文件表定義*/

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

件//P172 //char *name;{

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

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

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

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

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(“已打開文件表已滿n”);return(false);printf(“文件已經打開n”);return(false);}/*填寫已打開文件表函數結束*/ int allocate()/*分配一個磁盤塊,返回塊號*/ {

*/

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

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

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

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

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

} if(openfile.file[i].flag==1){ printf(“文件以寫方式打開,不能讀n”);printf(“文件沒有打開或不存在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);/*讀取下一個*/ putchar(buffer1[openfile.file[i].read.bnum]);/*讀出一個字符(這if((t+1)%64==0)putchar('n');/*修改讀指針*/ openfile.file[i].read.bnum++;if(openfile.file[i].read.bnum>=64)/*一塊讀完,讀取下一個盤塊*/ { fseek(fc,openfile.file[i].read.dnum/64*64, SEEK_SET);fread(buffer1,64,1,fc);里是在屏幕上顯示)*/;/*修改讀指針*/ }/*讀函數結束*/ int write_file(char *name,char *buff,int length)//P174 /*寫文件函數*/ //char *name;/*文件路徑名*/ //char *buff;/*存放準備寫入磁盤的內容*/ //int length;/*寫入內容的長度*/ {

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

} 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);/*一塊寫完,寫回磁盤*/ if((dd=allocate())==false){

openfile.file[i].write.bnum--;openfile.file[i].length--;printf(“無磁盤空間,部分信息丟失,寫失敗n”);return(false);printf(“文件以讀方式打開,不能寫n”);return(false);printf(“文件沒有打開或不存在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);/*一塊寫完,寫回磁盤*/ }/*寫函數結束*/ int search(char *name,int flag,int *dnum,int *bnum)/*查找路徑名為name的文件或目錄,返回該目錄的起始盤塊號 */ //char *name;//int flag;/*flag=8表示查找目錄,否則為文件*/ //int *dnum,*bnum;/*返回找到文件或目錄的目錄項的位置:盤塊dnum中第bnum項*/ {

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

主站蜘蛛池模板: 亚洲理论电影在线观看| 中文字幕av一区| 亚洲熟妇无码一区二区三区| 99久久国产精品免费高潮| 老司机在线ae85| 少妇高潮一区二区三区99| 国产女主播精品大秀系列| 日韩亚洲国产主播在线不卡| 亚洲国产精品久久一线app| 久久免费99精品国产自在现线| 亚洲爆乳精品无码一区二区三区| 久久久无码精品一区二区三区| 国产乱人伦偷精品视频麻豆| 亚洲不卡中文字幕无码| 久久av无码精品人妻糸列| 免费特级毛片| 国产精品99久久久久久久女警| 日韩一区二区三区无码a片| 精品亚洲国产成人av制服| 天天躁日日摸久久久精品| 九九在线精品国产| 国产v精品成人免费视频| 少妇高潮惨叫喷水在线观看| 久久久久亚洲AV色欲av| 午夜国产亚洲精品一区| 中文字幕在线播放| 国产乱人伦偷精品视频不卡| 香港三级午夜理论三级| 51被公侵犯玩弄漂亮人妻| 国产av一区二区三区日韩| 男人扒开女人双腿猛进女人| 青青草原综合久久大伊人精品| 一本无码人妻在中文字幕免费| 影音先锋无码a∨男人资源站| 少妇性l交大片7724com| av无码天堂一区二区三区| 人妻少妇精品无码专区app| 九九视频国产免| 中文字幕在线精品视频入口一区| 亚洲第一综合网址网址| 熟妇人妻一区二区三区四区|