




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、文檔來源為 :從網(wǎng)絡(luò)收集整理.word 版本可編輯.歡迎下載支持學(xué)生課程設(shè)計(jì)報(bào)告實(shí)驗(yàn)課名稱:操作系統(tǒng)實(shí)驗(yàn)項(xiàng)目名稱:文件系統(tǒng)設(shè)計(jì)專業(yè) 名稱:計(jì)算機(jī)科學(xué)與技術(shù)班級:學(xué)號:學(xué)生姓名:教師姓名:2014 年_6_月 30日一、課程設(shè)計(jì)的目的 二、課程設(shè)計(jì)的內(nèi)容及要求 內(nèi)容要求三、實(shí)現(xiàn)原理四、關(guān)鍵算法實(shí)現(xiàn)流程圖 流程圖關(guān)鍵算法五、軟件運(yùn)行環(huán)境及限制 六.結(jié)果輸由及分析 七心得體會一課程設(shè)計(jì)的目的本課程設(shè)計(jì)是學(xué)習(xí)完計(jì)算機(jī)操作系統(tǒng)課程后,進(jìn)行的一次全面的綜合訓(xùn)練,通過課程設(shè)計(jì),讓我更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法, 加深對操作系統(tǒng)基礎(chǔ)理論和重要算法的理解,加強(qiáng)了我的動手能力。二課程設(shè)計(jì)的內(nèi)容及要求1實(shí)驗(yàn)內(nèi)
2、容通過一個(gè)簡單的二級文件系統(tǒng)設(shè)計(jì),加深對文件系統(tǒng)的內(nèi)部功能以及內(nèi)部實(shí)現(xiàn)的理解。要求模擬采用二級目錄結(jié)構(gòu)的磁盤文件系統(tǒng)的文件操作,能實(shí)現(xiàn)以下幾條命令,用輸入命令來模擬用戶程序中調(diào)用的文件操作:Login 用戶登錄Dir 列文件目錄(列出文件名、物理地址、保護(hù)碼和文件長度)Create 創(chuàng)建文件Delete 刪除文件Open 打開文件Close 關(guān)閉文件Read 讀文件Write 寫文件源文件可以進(jìn)行讀寫保護(hù)2實(shí)驗(yàn)要求文件系統(tǒng)管理中用到的數(shù)據(jù)結(jié)構(gòu)有:首先應(yīng)確定文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu):主目錄、子目錄及活動文件等。主目錄和子目錄都以文件的形式存放于磁盤,這樣便于查找和修改。用戶創(chuàng)建的文件,可以編號存儲于磁
3、盤上。如: file0,file1,file2并以編號作為物理地址,在目錄中進(jìn)行登記。三實(shí)現(xiàn)原理首先,實(shí)現(xiàn)Login 用戶登錄, (用戶名: lhx 密碼:12358)必須登錄成功才能進(jìn)入文件系統(tǒng)進(jìn)行查看,進(jìn)入后,通過樹狀展示文件目錄(默認(rèn)文件目錄是homelhxkefile ) ,利用命令行的方式進(jìn)行注冊、登錄、各種各樣的文件操作。四關(guān)鍵算法實(shí)現(xiàn)流程圖流程圖:關(guān)鍵算法 :1.用戶登錄功能的實(shí)現(xiàn)typedef struct userMsgchar loginName20;char loginPasswd20;UserMsg;int login(char* name,char* passwd)U
4、serMsg um;int count = 0,size = sizeof(UserMsg),nres,pres;int fd = open("/home/lhx/study/kefile/login.dat",O_RDONLY);if(fd = -1)return -1;while(1)if(read(fd,&um,size) < size)return -1;nres = strcmp(name,um.loginName);pres = strcmp(passwd,um.loginPasswd);if(nres=0 && pres=0)re
5、turn 1;if( nres = 0 && pres != 0)return 0;count+;lseek(fd,SEEK_SET,size*count);lseek(fd,SEEK_SET,0);close(fd);2 .用戶注冊具體實(shí)現(xiàn)int regist(char* name,char* passwd)UserMsg um;int count = 0,size = sizeof(UserMsg);int fd = open("/home/lhx/study/kefile/login.dat",O_WRONLY|O_APPEND);if(fd = -1
6、)return -1;strcpy(um.loginName,name);strcpy(um.loginPasswd,passwd);lseek(fd,SEEK_END,0);count = write(fd,&um,size);if(count != size)return -1;return 1;3 .查看目錄下文件int listdtl(char* pname)struct dirent* dlist;int tmp,count;char fpath50,*fname;count = scandir(pname,&dlist,NULL,alphasort);if(coun
7、t = -1)return -1;printf("%10st%10st%10st%10st%10sn"," 編號 ","類型 ","所有者 ID"," 大小 ","文件名 ");for(tmp = 0;tmp < count;tmp+)struct stat st;sprintf(fpath,"%s/%s",pname,dlisttmp->d_name);stat(fpath,&st);switch(dlisttmp->d_typ
8、e)case DT_DIR:fname = " 目錄 "break;case DT_LNK:fname = "軟鏈接"break;case DT_BLK:fname = "塊設(shè)備"break;case DT_REG:fname = "普通文件"break;default:fname = "其他類型"break;printf("%10lut%10st%10ut%10lut%10sn",st.st_ino,fname,st.st_uid,st.st_size,dlisttmp-&
9、gt;d_name);return 0;4 .文件創(chuàng)建、目錄創(chuàng)建、目錄刪除、文件刪除等實(shí)現(xiàn)if(strcmp(resbuf,"create")=0)int mode = atoi(pbuf);if(mode = 0)printf(" 無法識別的文件權(quán)限n");continue;filedesc = creat(ubuf,tentoe(mode);if(filedesc = -1)printf(" 創(chuàng)建失敗,該文件已存在 n");elseprintf(" 創(chuàng)建成功 n");close(filedesc);else i
10、f(strcmp(resbuf,"type") = 0)filedesc = open(ubuf,O_RDONLY);if(filedesc = -1)printf(" 該文件不存在 !n");elsechar buf1025;int count;printf("'%s' 文件的內(nèi)容:n",ubuf);while(1)count = read(filedesc,buf,1024);if(count = 0)break;bufcount = 0;printf("%s",buf);else if(str
11、cmp(resbuf,"delete") = 0)filedesc = unlink(ubuf);if(filedesc != 0)printf(" 刪除失敗,文件可能不存在 n");elseprintf("刪除文件's成功 n",ubuf);else if(strcmp(resbuf,"mkdir") = 0)filedesc = mkdir(ubuf,0751);if(filedesc != 0)printf(" 創(chuàng)建目錄失敗,目錄可能已經(jīng)存在了 n");elseprintf(&qu
12、ot;創(chuàng)建目錄s'成功 n",ubuf);else if(strcmp(resbuf,"rmdir") = 0)filedesc = rmdir(ubuf);if(filedesc != 0)printf(" 刪除目錄失敗,目錄可能不存在或者目錄非空n");elseprintf("刪除目錄s'成功 n",ubuf);else if(strcmp(resbuf,"cd") = 0)char dpath50;sprintf(dpath,"%s%s",upath,ubuf);
13、strcpy(upath,dpath);filedesc = chdir(dpath);if(filedesc != 0)printf(" 更改工作目錄失敗!n");elseprintf(" 當(dāng)前工作目錄: %sn",dpath);else if(strcmp(resbuf,"dir") = 0)if(strcmp(ubuf,"-nl") = 0)DIR* dir;struct dirent* drt;dir = opendir(upath);while(1)drt = readdir(dir);if(drt =
14、NULL)break;printf("%st",drt->d_name);printf("n");closedir(dir);else if(strcmp(ubuf,"-l") = 0)listdtl(upath);elseprintf(" 不能識別的選項(xiàng)'%s'!n",ubuf);continue;elseprintf(" 未能識別的命令,請核對!n");7文檔來源為:從網(wǎng)絡(luò)收集整理.word 版本可編輯.文檔來源為 :從網(wǎng)絡(luò)收集整理.word 版本可編輯.歡迎下載支持五
15、.軟件運(yùn)行環(huán)境及限制1 .運(yùn)行環(huán)境運(yùn)行環(huán)境:linux使用語言:c語言編程工具:Kate2 .具體演示2.1 注冊新用戶lxc密碼12358TemninalTS cd study/kert;e/fkertle$ Rflle文件系統(tǒng)演示課設(shè)掾作說明:1 .整隔 稗式:log In usernane pdhword2 :注冊格式: regtst username password)清檢iX命令:電gist lxc 123SB 注冊戊功,息快篁隋系晚貫不吧 犢作說明:1:贊陸格式:login usernanc password2.2 登錄文件系統(tǒng)lxc密碼123582.3 創(chuàng)建文件1.c并查看當(dāng)前目
16、錄下的文件信息2.4 創(chuàng)建新目錄 dirc2.5 刪除目錄dirc2.6 查看文件1.c的內(nèi)容2.7 刪除文件1.c七.心得體會操作系統(tǒng)課程設(shè)計(jì),自己通過查找資料、復(fù)習(xí)課本、編程調(diào)試,寫實(shí)驗(yàn)報(bào)告等環(huán)節(jié),進(jìn)一步掌握了以 前學(xué)到的知識,并且還對操作系統(tǒng)應(yīng)用有了更深入的認(rèn)識與掌握。比如對樹的展示有了很好的學(xué)習(xí),對二 級文件系統(tǒng)也有了很好的了解,如何解決實(shí)現(xiàn)里面功能的各種問題。通過實(shí)踐的學(xué)習(xí),我認(rèn)到學(xué)好計(jì)算機(jī)要重視實(shí)踐操作,不僅僅是學(xué)習(xí)C語言,還是其它的語言,以及其它的計(jì)算機(jī)方面的知識都要重在實(shí)踐,所以后在學(xué)習(xí)過程中,我會更加注視實(shí)踐操作,使自己便好地學(xué) 好計(jì)算機(jī)。附件(代碼)mfun.h#ifnde
17、f _MFUN_H_#define _MFUN_H_#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <fcntl.h>#include <string.h>#include <dirent.h>typedef struct userMsgchar loginName20;char loginPasswd20;UserMsg;int login(char* name,char* passwd)UserMsg um;int count = 0,s
18、ize = sizeof(UserMsg),nres,pres;int fd = open("/home/lhx/study/kefile/login.dat",O_RDONLY);if(fd = -1)return -1;while(1)if(read(fd,&um,size) < size)return -1;nres = strcmp(name,um.loginName);pres = strcmp(passwd,um.loginPasswd);if(nres=0 && pres=0)return 1;if( nres = 0 &
19、& pres != 0)return 0;count+;lseek(fd,SEEK_SET,size*count);lseek(fd,SEEK_SET,0);close(fd);int regist(char* name,char* passwd)UserMsg um;int count = 0,size = sizeof(UserMsg);int fd = open("/home/lhx/study/kefile/login.dat",O_WRONLY|O_APPEND); if(fd = -1)return -1;strcpy(um.loginName,name
20、);strcpy(um.loginPasswd,passwd);10文檔來源為:從網(wǎng)絡(luò)收集整理.word 版本可編輯.文檔來源為 :從網(wǎng)絡(luò)收集整理.word 版本可編輯.歡迎下載支持lseek(fd,SEEK_END,0);count = write(fd,&um,size);if(count != size)return -1;return 1;int tentoe(int num)int res;if(num > 999 | num <0)return -1;res = 64*num/100 + 8*(num/10%10) +num%10;return res;int
21、listdtl(char* pname)struct dirent* dlist;int tmp,count;char fpath50,*fname;count = scandir(pname,&dlist,NULL,alphasort);if(count = -1)return -1;printf("%10st%10st%10st%10st%10sn"," 編號 ","類型 ","所有者 ID"," 大小 ","文件名 "); for(tmp = 0;tmp <
22、; count;tmp+)struct stat st;sprintf(fpath,"%s/%s",pname,dlisttmp->d_name);stat(fpath,&st);switch(dlisttmp->d_type)case DT_DIR:fname = " 目錄 "break;case DT_LNK:fname = "軟鏈接"break;case DT_BLK:fname = "塊設(shè)備"break;case DT_REG:fname = "普通文件"break;
23、default:fname = "其他類型"break;printf("%10lut%10st%10ut%10lut%10sn",st.st_ino,fname,st.st_uid,st.st_size,dlisttmp->d_name);return 0;#endiffile.c#include "mfun.h"#include <errno.h>int isLogin;int main()char resbuf20,ubuf20,pbuf20,upath50;printf(" 文件系統(tǒng)演示課設(shè) n&qu
24、ot;);while(!isLogin)printf(" 操作說明 :n");printf("1 :登陸格式: login username passwordn");printf("2 :注冊格式: regist username passwordn");printf(" 請輸入命令:");scanf("%s %s %s",resbuf,ubuf,pbuf);if(strcmp(resbuf,"login") = 0)int lres = login(ubuf,pbuf);i
25、f(lres = -1)printf("用戶's'不存在,請核對信息或注冊n",ubuf);continue;else if(lres = 0)printf("密碼與's'不匹配,請核對n",ubuf);continue;elseprintf(" 登陸成功 n");isLogin = 1;sprintf(upath,"/home/lhx/study/kefile/%s/",ubuf);lres = chdir(ubuf);if(lres!=0)printf(" 進(jìn)入目錄失敗
26、n");printf("Error:%sn",strerror(errno);elseprintf(" 當(dāng)前工作目錄:%sn",upath);system("clear");else if(strcmp(resbuf,"regist") = 0)int rres = regist(ubuf,pbuf);if(rres = -1)printf(" 注冊失敗,請重試n");elseprintf(" 注冊成功,趕快登陸系統(tǒng)演示吧n");mkdir(ubuf,0741);e
27、lseprintf(" 您輸入的命令無法識別,請重試n");printf(" 文件操作演示n");while(1)int filedesc;printf("n");printf(" 創(chuàng)建文件 :create filename mode(eg:666)n");printf(" 查看文件內(nèi)容:type filename -nn");printf(" 刪除文件:delete filename -nn");printf(" 創(chuàng)建目錄:mkdir dirname -nn&qu
28、ot;);printf(" 刪除目錄:rmdir dirname -nn");printf(" 察看當(dāng)前目錄下的文件:dir option(-l:detail,-nl) -nn");printf(" 進(jìn)入目錄:cd dirname -nn");printf(" 請輸入操作命令:");scanf("%s %s %s",resbuf,ubuf,pbuf);if(strcmp(resbuf,"create")=0)int mode = atoi(pbuf);if(mode = 0)
29、printf(" 無法識別的文件權(quán)限n");continue;filedesc = creat(ubuf,tentoe(mode);if(filedesc = -1)printf(" 創(chuàng)建失敗,該文件已存在 n");elseprintf(" 創(chuàng)建成功 n");close(filedesc);else if(strcmp(resbuf,"type") = 0)filedesc = open(ubuf,O_RDONLY);if(filedesc = -1)printf(" 該文件不存在 !n");e
30、lsechar buf1025;int count;printf("'%s' 文件的內(nèi)容:n",ubuf);while(1)count = read(filedesc,buf,1024);if(count = 0)break;bufcount = 0;printf("%s",buf);else if(strcmp(resbuf,"delete") = 0)filedesc = unlink(ubuf);if(filedesc != 0)printf(" 刪除失敗,文件可能不存在 n");elseprintf("刪除文件's成功 n",ubuf);else if(strcmp(res
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政組織理論的知識拓展策略試題及答案
- 計(jì)算機(jī)二級MySQL與數(shù)據(jù)安全試題及答案
- 2025年N1叉車司機(jī)理論考試題及答案
- 網(wǎng)絡(luò)技術(shù)領(lǐng)域的標(biāo)桿企業(yè)分析試題及答案
- 行政組織溝通與協(xié)調(diào)考題及答案
- 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的規(guī)范試題及答案
- 公司工會干部管理制度
- 學(xué)校軍訓(xùn)安全管理制度
- 在建油庫安全管理制度
- 土地報(bào)批部門管理制度
- 繪本故事:睡睡鎮(zhèn)
- 酒店住宿水單模板1
- 供應(yīng)鏈信息管理教學(xué)課件
- 工藝管道安裝質(zhì)量控制
- 人工智能導(dǎo)論知到章節(jié)答案智慧樹2023年東北石油大學(xué)
- 麻醉與肝臟專題知識講座
- 定位搶救在危重患者搶救中的應(yīng)用
- (職業(yè)技能考試題庫)起重機(jī)械指揮知識點(diǎn)練習(xí)題庫、安裝起重工技能理論知識點(diǎn)題庫
- 體育保健學(xué)復(fù)習(xí)題
- 高中英語完形填空試題(有答案和解析)
- 糧食作物栽培學(xué):江蘇紅粒冬小麥產(chǎn)業(yè)發(fā)展趨勢展望
評論
0/150
提交評論