歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

Linux文件系統(tǒng)實(shí)驗(yàn)報(bào)告

  • 資源ID:17745849       資源大?。?span id="qcnvhcm" class="font-tahoma">376.91KB        全文頁(yè)數(shù):19頁(yè)
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

Linux文件系統(tǒng)實(shí)驗(yàn)報(bào)告

黃岡師范學(xué)院提高型實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)課題文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(實(shí)驗(yàn)類型:綜合性 R設(shè)計(jì)性 應(yīng)用性)實(shí)驗(yàn)課程操作系統(tǒng)原理實(shí)驗(yàn)時(shí)間20152016 第二學(xué)期學(xué)生姓名何正發(fā)專業(yè)班級(jí)軟件工程1401學(xué) 號(hào)2014263040107一、實(shí)驗(yàn)?zāi)康暮鸵蟪煽?jī): 1、熟悉操作系統(tǒng)設(shè)計(jì)的過程,鞏固操作系統(tǒng)的基本知識(shí),加深對(duì)操作原理、功能及各種不同的存儲(chǔ)管理方法理解與應(yīng)用;2、學(xué)會(huì)運(yùn)用各種語(yǔ)言、軟件開發(fā)新軟件的基本方法;3、增強(qiáng)實(shí)際應(yīng)用能力和動(dòng)手操作能力。二、實(shí)驗(yàn)條件 Win7 /Windows 8.1/Linux等操作系統(tǒng),裝有java、C、C+、C#等語(yǔ)言工具的環(huán)境。三、實(shí)驗(yàn)原理分析可以選擇最佳適應(yīng)算法,按照從小到大的次序組成空閑區(qū)自由鏈,當(dāng)用戶作業(yè)或進(jìn)程申請(qǐng)一個(gè)空閑區(qū)時(shí),存儲(chǔ)管理程序從表頭開始查找,當(dāng)找到第一個(gè)満足要求的空閑區(qū)時(shí),停止查找。如果該空閑區(qū)大于請(qǐng)求表中的請(qǐng)求長(zhǎng)度,將減去請(qǐng)求長(zhǎng)度后的剩余空閑區(qū)部分留在可用表中?;厥諘r(shí),從作鏈中刪去要回收的作業(yè)塊,同時(shí)在空閑鏈中插入該作業(yè)大小的空閑區(qū),并按順序排列四、實(shí)驗(yàn)方案或步驟1、應(yīng)用環(huán)境、需求分析本模擬系統(tǒng)主要針對(duì)文件的管理和操作名主要有:創(chuàng)建用戶、文件、文件夾,讀文件,寫文件,執(zhí)行文件,關(guān)閉文件,刪除用戶、文件夾、文件的功能。創(chuàng)建用戶、文件、文件夾:在對(duì)系統(tǒng)發(fā)出操作命令之前必須先登錄用戶,然而登錄之前必須創(chuàng)建該用戶。在創(chuàng)建完后,可通過登錄用戶來創(chuàng)建文件和文件夾。在創(chuàng)建文件時(shí)可設(shè)置文件的屬性和輸入文件的內(nèi)容。讀文件:讀取任何已創(chuàng)建的只讀或讀寫文件的內(nèi)容;如果所要讀的文件不是可讀文件時(shí),系統(tǒng)會(huì)顯示該文件不可讀;如果所讀文件不存在,系統(tǒng)會(huì)顯示文件不存在。寫文件用戶可寫或重寫讀寫文件中的內(nèi)容,并保存文件中的重寫內(nèi)容,以供下次讀取;當(dāng)所要寫的文件不是可寫的文件時(shí),系統(tǒng)會(huì)顯示該文件不可寫;當(dāng)所要寫的文件并不存在時(shí),系統(tǒng)會(huì)顯示該文件不存在。執(zhí)行文件:登錄用戶后,用戶可執(zhí)行系統(tǒng)中已創(chuàng)建的執(zhí)行文件;當(dāng)該文件不是可執(zhí)行文件時(shí),系統(tǒng)會(huì)顯示該文件不可執(zhí)行;當(dāng)該文件不存在時(shí),系統(tǒng)將會(huì)顯示該文件不存在。關(guān)閉文件:可通過選擇關(guān)閉文件的功能選項(xiàng),來關(guān)閉系統(tǒng)中所有打開的文件,如果沒有文件被打開,則系統(tǒng)會(huì)顯示沒有文件打開。刪除用戶、文件、文件夾:用戶可通過選擇刪除的功能選項(xiàng)來刪除不想再保存的文件和文件夾,刪除后,用戶會(huì)自動(dòng)注銷;當(dāng)選擇刪除用戶的功能選項(xiàng)時(shí),系統(tǒng)會(huì)刪除該用戶,以及該用戶所創(chuàng)建的所有文件和文件夾。2、概要設(shè)計(jì)打開文件流程圖: 寫文件流程圖:關(guān)閉文件流程圖:3、詳細(xì)設(shè)計(jì)(1)用戶結(jié)構(gòu):賬號(hào)與密碼結(jié)構(gòu)typedef struct users char name8;char pwd10;users;本系統(tǒng)有8個(gè)默認(rèn)的用戶名,前面是用戶名,后面為密碼,用戶登陸時(shí)只要輸入正確便可進(jìn)入系統(tǒng),否則提示失敗要求重新輸入。users usrarray8 ="usr1","usr1", "usr2","usr2","usr3","usr3","usr4","usr4","usr5","usr5","usr6","usr6","usr7","usr7","usr8","usr8",;(2)數(shù)據(jù)結(jié)構(gòu)說明a)文件結(jié)構(gòu)鏈表struct fnode char filenameFILENAME_LENGTH;int isdir;int isopen;char content255;fnode *parent;fnode *child;fnode *prev;fnode *next;b)函數(shù)介紹fnode *initfile(char filename,int isdir);/初始化文件或目錄void createroot();/建立系統(tǒng)根目錄int run();系統(tǒng)運(yùn)行int findpara(char *topara);對(duì)參數(shù)進(jìn)行處理bool chklogin(char *users, char *pwd);檢查賬號(hào)與口令void help();命令列表int mkdir();建立目錄int create();建立文件int read();讀取文件int write();寫入文件int del();刪除文件int cd();切換目錄int dir();文件與目錄列表4、 代碼清單 #include "stdio.h"#include "iostream.h"#include "string.h"#include "iomanip.h"#define FILENAME_LENGTH 10 /文件名稱長(zhǎng)度#define COMMAND_LENGTH 10 /命令行長(zhǎng)度#define PARA_LENGTH 30 /參數(shù)長(zhǎng)度 /賬號(hào)結(jié)構(gòu) typedef struct users char name8; char pwd10;users; /文件結(jié)構(gòu)struct fnode char filenameFILENAME_LENGTH; int isdir; int isopen; char content255; fnode *parent; fnode *child; fnode *prev; fnode *next;/賬號(hào)users usrarray8 = "usr1","usr1", "usr2","usr2", "usr3","usr3", "usr4","usr4", "usr5","usr5", "usr6","usr6", "usr7","usr7", "usr8","usr8",; fnode *initfile(char filename,int isdir); void createroot(); int run(); int findpara(char *topara); bool chklogin(char *users, char *pwd); void help(); int mkdir(); int create(); int read(); int write(); int del(); int cd(); int dir();fnode *root,*recent,*temp,*ttemp;char paraPARA_LENGTH,commandCOMMAND_LENGTH,tempparaPARA_LENGTH,recentparaPARA_LENGTH;/創(chuàng)建文件與目錄結(jié)點(diǎn) fnode* initfile(char filename,int isdir) fnode *node=new fnode; strcpy(node->filename,filename); node->isdir=isdir; node->isopen=0; node->parent=NULL; node->child=NULL; node->prev=NULL; node->next=NULL; return node;/創(chuàng)建文件存儲(chǔ)結(jié)點(diǎn)void createroot () recent=root=initfile("/",1); root->parent=NULL; root->child=NULL; root->prev=root->next=NULL; strcpy(para,"/"); int mkdir() temp=initfile(" ",1); cin>>temp->filename; if(recent->child=NULL) temp->parent=recent; temp->child=NULL; recent->child=temp; temp->prev=temp->next=NULL; else ttemp=recent->child; while(ttemp->next) ttemp=ttemp->next; if(strcmp(ttemp->filename,temp->filename)=0&&ttemp->isdir=1) printf("對(duì)不起,目錄已存在!"); return 1; ttemp->next=temp; temp->parent=NULL; temp->child=NULL; temp->prev=ttemp; temp->next=NULL; return 1;int create() temp=initfile(" ",0); cin>>temp->filename; gets(temp->content); /cin>>temp->content; if(recent->child=NULL) temp->parent=recent; temp->child=NULL; recent->child=temp; temp->prev=temp->next=NULL; cout<<"文件建立成功!"<<endl; else ttemp=recent->child; while(ttemp->next) ttemp=ttemp->next; if(strcmp(ttemp->filename,temp->filename)=0&&ttemp->isdir=0) printf("對(duì)不起,文件已存在!"); return 1; ttemp->next=temp; temp->parent=NULL; temp->child=NULL; temp->prev=ttemp; temp->next=NULL; cout<<"文件建立成功!"<<endl; return 1;int dir()int i=0,j=0;temp=new fnode;temp=recent;if(temp!=root)cout<<" <DIR> "<<"."<<endl;i+;if(temp->child=NULL) cout<<"Total: "<<" directors " <<i<<" files "<< j <<endl; return 1;temp=temp->child;while(temp) if(temp->isdir) cout<<" <DIR> "<<temp->filename<<endl;i+; else cout<<" <FILE> "<<temp->filename<<endl;j+; temp=temp->next; cout<<"Total: "<<" directors " <<i<<" files "<< j <<endl;int read()char filenameFILENAME_LENGTH;cin>>filename; if(recent->child=NULL) cout<<"文件不存在!"<<endl; return 1; if(strcmp(recent->child->filename,filename)=0) cout<<recent->child->content<<endl; return 1; else temp=recent->child; while(temp->next) if(strcmp(temp->next->filename,filename)=0) cout<<temp->next->content<<endl; return 1; cout<<"文件不存在!"<<endl; int write()char filenameFILENAME_LENGTH;cin>>filename; if(recent->child=NULL) cout<<"文件不存在!"<<endl; return 1; if(strcmp(recent->child->filename,filename)=0) recent->child->isopen=1;/設(shè)置文件標(biāo)記為打開 cin>>recent->child->content; recent->child->isopen=0;/設(shè)置文件標(biāo)記為關(guān)閉 cout<<"文件寫入成功!"<<endl; return 1; else temp=recent->child; while(temp->next) if(strcmp(temp->next->filename,filename)=0) recent->child->isopen=1;/設(shè)置文件標(biāo)記為打開 cin>>temp->next->content; recent->child->isopen=0;/設(shè)置文件標(biāo)記為關(guān)閉 cout<<"文件寫入成功!"<<endl; return 1; cout<<"文件不存在!"<<endl; int cd() char toparaPARA_LENGTH; cin>>topara; if(strcmp(topara,".")=0) int i; while(recent->prev) recent=recent->prev; if(recent->parent) recent=recent->parent; i=strlen(para); while(parai!=/ && i>0) i-; if(i!=0) parai=0; else parai+1=0;else findpara(topara); return 1;int findpara(char *topara) int i=0; int sign=1; if(strcmp(topara,"/")=0) recent=root; strcpy(para,"/"); return 1; temp=recent; strcpy(temppara,para); if(topara0=/) recent=root->child; i+; strcpy(para,"/"); else if(recent!=NULL && recent!=root) strcat(para,"/"); if(recent && recent->child) if(recent->isdir) recent=recent->child; else printf("路徑錯(cuò)誤!n"); return 1; while(i<=strlen(topara) && recent) int j=0; if(toparai=/ && recent->child) i+; if(recent->isdir) recent=recent->child; else printf("路徑錯(cuò)誤n"); return 0; strcat(para,"/"); while(toparai!=/ && i<=strlen(topara) recentparaj=toparai; i+;j+; recentparaj=0; while(strcmp(recent->filename,recentpara)!=0 | (recent->isdir!=1) && recent->next!=NULL) recent=recent->next; if(strcmp(recent->filename,recentpara)=0) if(recent->isdir=0) strcpy(para,temppara); recent=temp; printf("是文件不是目錄。n"); return 0; strcat(para,recent->filename); if(strcmp(recent->filename,recentpara)!=0 | recent=NULL) strcpy(para,temppara); recent=temp; printf("輸入路徑錯(cuò)誤n"); return 0; return 1;int del() char filenameFILENAME_LENGTH; cin>>filename; temp=new fnode; if(recent->child) temp=recent->child; while(temp->next && (strcmp(temp->filename,filename)!=0 | temp->isdir!=0) temp=temp->next; if(strcmp(temp->filename,filename)!=0) cout<<"不存在該文件!"<<endl; return 0; else cout<<"不存在該文件!"<<endl; return 0; if(temp->parent=NULL) temp->prev->next=temp->next; if(temp->next) temp->next->prev=temp->prev; temp->prev=temp->next=NULL; else if(temp->next) temp->next->parent=temp->parent; temp->parent->child=temp->next; delete temp; cout<<"文件已刪除!"<<endl; bool chklogin(char *users, char *pwd) int i; for(i=0; i<8; i+) if( (strcmp(users,usrarrayi.name)=0) && (strcmp(pwd,usrarrayi.pwd)=0) return true; return false;void help(void) cout<<" 命 令 一 覽 "<<endl; cout<<endl; cout<<"create: 建立文件。 "<<endl; cout<<"read: 讀取文件。 "<<endl; cout<<"write: 寫入文件,支持多線程 "<<endl; cout<<"del : 刪除文件。 "<<endl; cout<<"mkdir: 建立目錄。 "<<endl; cout<<"cd: 切換目錄。 "<<endl; cout<<"logout: 退出登錄。 "<<endl;int run() cout<<"linux:"<<para<<">" cin>>command; if(strcmp(command,"mkdir")=0) mkdir(); else if(strcmp(command,"dir")=0) dir(); else if(strcmp(command,"cd")=0) cd(); else if(strcmp(command,"create")=0) create(); else if(strcmp(command,"read")=0) read(); else if(strcmp(command,"write")=0) write();else if(strcmp(command,"del")=0) del();else if(strcmp(command,"help")=0) help(); else if(strcmp(command,"logout")=0) return 0; else cout<<"請(qǐng)參考help提供的命令列表!"<<endl; int main()int i=0;bool in=false;char users8,pwd12; cout<<"*"<<endl; cout<<"* 簡(jiǎn)單的二級(jí)Linux文件系統(tǒng) *"<<endl; cout<<"* 賬號(hào):usr1-usr8 密碼:usr1-usr8 *"<<endl; cout<<"* 你只有三次機(jī)會(huì)來試驗(yàn)賬號(hào) *"<<endl; cout<<"* 鍵入help可以獲取幫助 *"<<endl; cout<<"*"<<endl; cout<<endl;while(i<3)cout<<"Login:"cin>>users;cout<<"Pass:"cin>>pwd;if(chklogin(users,pwd)in=true;break;i+;createroot();while(in)if(!run()break;五、實(shí)驗(yàn)結(jié)果與分析 能夠很成功的對(duì)文件進(jìn)行讀寫操作,意見保存和刪除六、討論總結(jié)通過這次提高型實(shí)驗(yàn),我明白了做一個(gè)系統(tǒng)的難度之大,首先要進(jìn)行需求分析,然后通過ER圖來清晰自己的思路,整個(gè)過程雖然很繁瑣,很復(fù)雜,但完成任務(wù)后,內(nèi)心的成就感爆棚,給自己的未來增加了滿滿的信心!這次的實(shí)驗(yàn),我學(xué)會(huì)了如何用代碼實(shí)現(xiàn)操作系統(tǒng)的部分功能,如創(chuàng)建文件,讀文件,寫文件,創(chuàng)建文件夾,以及刪除文件等等,瞬間覺得特別高大上。希望今后能學(xué)習(xí)到更多到社會(huì)上有用的東西,加油!

注意事項(xiàng)

本文(Linux文件系統(tǒng)實(shí)驗(yàn)報(bào)告)為本站會(huì)員(jun****875)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!