




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)生課程設(shè)計(jì)報(bào)告實(shí)驗(yàn)課名稱(chēng):操作系統(tǒng)實(shí)驗(yàn)項(xiàng)目名稱(chēng):文件系統(tǒng)設(shè)計(jì)專(zhuān)業(yè)名稱(chēng):計(jì)算機(jī)科學(xué)與技術(shù)班級(jí):-學(xué)號(hào):-學(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é)果輸出及分析七心得體會(huì)1 課程設(shè)計(jì)的目的本課程設(shè)計(jì)是學(xué)習(xí)完計(jì)算機(jī)操作系統(tǒng)課程后,進(jìn)行的一次全面的綜合訓(xùn)練,通過(guò)課程設(shè)計(jì),讓我更好地掌握操作系統(tǒng)的原理及實(shí)現(xiàn)方法,加深對(duì)操作系統(tǒng)基礎(chǔ)理論和重要算法的理解,加強(qiáng)了我的動(dòng)手能力。二課程設(shè)計(jì)的內(nèi)容及要求1 實(shí)驗(yàn)內(nèi)容通過(guò)一個(gè)簡(jiǎn)單的二級(jí)文件系統(tǒng)設(shè)計(jì),加深對(duì)文件系統(tǒng)的內(nèi)部功能以及
2、內(nèi)部實(shí)現(xiàn)的理解。要求模擬采用二級(jí)目錄結(jié)構(gòu)的磁盤(pán)文件系統(tǒng)的文件操作,能實(shí)現(xiàn)以下幾條命令,用輸入命令來(lái)模擬用戶(hù)程序中調(diào)用的文件操作:Login 用戶(hù)登錄Dir 列文件目錄(列出文件名、物理地址、保護(hù)碼和文件長(zhǎng)度)Create 創(chuàng)建文件Delete 刪除文件Open 打開(kāi)文件Close 關(guān)閉文件Read 讀文件Write 寫(xiě)文件源文件可以進(jìn)行讀寫(xiě)保護(hù)2實(shí)驗(yàn)要求文件系統(tǒng)管理中用到的數(shù)據(jù)結(jié)構(gòu)有:首先應(yīng)確定文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu):主目錄、子目錄及活動(dòng)文件等。主目錄和子目錄都以文件的形式存放于磁盤(pán),這樣便于查找和修改。用戶(hù)創(chuàng)建的文件,可以編號(hào)存儲(chǔ)于磁盤(pán)上。如:file0,file1,file2并以編號(hào)作為物理地
3、址,在目錄中進(jìn)行登記。三實(shí)現(xiàn)原理 首先,實(shí)現(xiàn)Login用戶(hù)登錄,(用戶(hù)名:lhx密碼:12358)必須登錄成功才能進(jìn)入文件系統(tǒng)進(jìn)行查看,進(jìn)入后,通過(guò)樹(shù)狀展示文件目錄(默認(rèn)文件目錄是homelhxkefile),利用命令行的方式進(jìn)行注冊(cè)、登錄、各種各樣的文件操作。四關(guān)鍵算法實(shí)現(xiàn)流程圖流程圖:關(guān)鍵算法:1.用戶(hù)登錄功能的實(shí)現(xiàn)typedef struct userMsgchar loginName20;char loginPasswd20;UserMsg;int login(char* name,char* passwd)UserMsg um;int count = 0,size = sizeof(
4、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 && pres !=
5、 0)return 0;count+;lseek(fd,SEEK_SET,size*count);lseek(fd,SEEK_SET,0);close(fd);2. 用戶(hù)注冊(cè)具體實(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)return -1;strcpy(um.loginName,name);s
6、trcpy(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(count = -1)return -1;printf("%10st%10
7、st%10st%10st%10sn","編號(hào)","類(lèi)型","所有者ID","大小","文件名");for(tmp = 0;tmp < 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;cas
8、e DT_LNK:fname = "軟鏈接"break;case DT_BLK:fname = "塊設(shè)備"break;case DT_REG:fname = "普通文件"break;default:fname = "其他類(lèi)型"break;printf("%10lut%10st%10ut%10lut%10sn",st.st_ino,fname,st.st_uid,st.st_size,dlisttmp->d_name);return 0;4. 文件創(chuàng)建、目錄創(chuàng)建、目錄刪除、文件刪除等實(shí)現(xiàn)if
9、(strcmp(resbuf,"create")=0)int mode = atoi(pbuf);if(mode = 0)printf("無(wú)法識(shí)別的文件權(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 = ope
10、n(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(strcmp(resbuf,"delete") = 0)filedesc = unlink(ub
11、uf);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("創(chuàng)建目錄'%s'成功n",ubuf);else if(strcmp(resb
12、uf,"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);strcpy(upath,dpath);filedesc = chdir(dpath);i
13、f(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 = NULL)break;printf("%st",drt->d_name
14、);printf("n");closedir(dir);else if(strcmp(ubuf,"-l") = 0)listdtl(upath);elseprintf("不能識(shí)別的選項(xiàng)'%s'!n",ubuf);continue;elseprintf("未能識(shí)別的命令,請(qǐng)核對(duì)!n");5 軟件運(yùn)行環(huán)境及限制1.運(yùn)行環(huán)境運(yùn)行環(huán)境:linux使用語(yǔ)言:c語(yǔ)言編程工具:Kate2. 具體演示2.1注冊(cè)新用戶(hù) lxc密碼12358 2.2 登錄文件系統(tǒng) lxc 密碼123582.3 創(chuàng)建文件1.c并查看當(dāng)前
15、目錄下的文件信息2.4創(chuàng)建新目錄 dirc2.5 刪除目錄 dirc2.6 查看文件1.c的內(nèi)容2.7刪除文件 1.c七心得體會(huì)操作系統(tǒng)課程設(shè)計(jì),自己通過(guò)查找資料、復(fù)習(xí)課本、編程調(diào)試,寫(xiě)實(shí)驗(yàn)報(bào)告等環(huán)節(jié),進(jìn)一步掌握了以前學(xué)到的知識(shí),并且還對(duì)操作系統(tǒng)應(yīng)用有了更深入的認(rèn)識(shí)與掌握。比如對(duì)樹(shù)的展示有了很好的學(xué)習(xí),對(duì)二級(jí)文件系統(tǒng)也有了很好的了解,如何解決實(shí)現(xiàn)里面功能的各種問(wèn)題。通過(guò)實(shí)踐的學(xué)習(xí),我認(rèn)到學(xué)好計(jì)算機(jī)要重視實(shí)踐操作,不僅僅是學(xué)習(xí)C語(yǔ)言,還是其它的語(yǔ)言,以及其它的計(jì)算機(jī)方面的知識(shí)都要重在實(shí)踐,所以后在學(xué)習(xí)過(guò)程中,我會(huì)更加注視實(shí)踐操作,使自己便好地學(xué)好計(jì)算機(jī)。附件(代碼)mfun.h#ifndef _
16、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,size
17、 = 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 &&am
18、p; 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);st
19、rcpy(um.loginPasswd,passwd);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 listdtl(char* pname)struct dirent* dlist;int tmp,count;char fpa
20、th50,*fname;count = scandir(pname,&dlist,NULL,alphasort);if(count = -1)return -1;printf("%10st%10st%10st%10st%10sn","編號(hào)","類(lèi)型","所有者ID","大小","文件名");for(tmp = 0;tmp < count;tmp+)struct stat st;sprintf(fpath,"%s/%s",pname,dlist
21、tmp->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;default:fname = "其他類(lèi)型"break;printf("%10lut%10st%10ut%10lut
22、%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");while(!isLogin)printf("操作說(shuō)明:n");printf("1:登陸 格式: logi
23、n username passwordn");printf("2:注冊(cè) 格式: regist username passwordn");printf("請(qǐng)輸入命令:");scanf("%s %s %s",resbuf,ubuf,pbuf);if(strcmp(resbuf,"login") = 0)int lres = login(ubuf,pbuf);if(lres = -1)printf("用戶(hù)'%s'不存在,請(qǐng)核對(duì)信息或注冊(cè)n",ubuf);continue;el
24、se if(lres = 0)printf("密碼與'%s'不匹配,請(qǐng)核對(duì)n",ubuf);continue;elseprintf("登陸成功n");isLogin = 1;sprintf(upath,"/home/lhx/study/kefile/%s/",ubuf);lres = chdir(ubuf);if(lres!=0)printf("進(jìn)入目錄失敗n");printf("Error:%sn",strerror(errno);elseprintf("當(dāng)前工作目錄
25、:%sn",upath);system("clear");else if(strcmp(resbuf,"regist") = 0)int rres = regist(ubuf,pbuf);if(rres = -1)printf("注冊(cè)失敗,請(qǐng)重試n");elseprintf("注冊(cè)成功,趕快登陸系統(tǒng)演示吧n");mkdir(ubuf,0741);elseprintf("您輸入的命令無(wú)法識(shí)別,請(qǐng)重試n");printf("-文件操作演示-n");while(1)int
26、 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");printf("刪除目錄:rmdir dirname -nn");printf("察看當(dāng)前目錄下的文件:dir option(-
27、l:detail,-nl) -nn");printf("進(jìn)入目錄:cd dirname -nn");printf("請(qǐng)輸入操作命令:");scanf("%s %s %s",resbuf,ubuf,pbuf);if(strcmp(resbuf,"create")=0)int mode = atoi(pbuf);if(mode = 0)printf("無(wú)法識(shí)別的文件權(quán)限n");continue;filedesc = creat(ubuf,tentoe(mode);if(filedesc =
28、 -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");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(strcmp(resbuf,"delete") = 0)filedesc = unlink(ubuf);if(filedesc != 0)printf("刪除失敗,文件可能不存在n");elseprintf("刪除文件'%s'成功n",ubuf);else if(strcmp(resbuf,"mkdi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度直播帶貨商家知識(shí)產(chǎn)權(quán)保護(hù)合同
- 二零二五年度加油站與保險(xiǎn)企業(yè)合作合同
- 2025年度酒店客房部員工崗位責(zé)任制合同
- 2025年民辦幼兒園幼兒教育科研基地及實(shí)驗(yàn)中心轉(zhuǎn)讓合同
- 二零二五年度能源外包單位安全生產(chǎn)責(zé)任承諾書(shū)
- 二零二五年度健身俱樂(lè)部健身課程研發(fā)與推廣合同
- 2025年度智慧城市建設(shè)合同特性與數(shù)據(jù)共享平臺(tái)
- 二零二五年度公司終止職工勞動(dòng)合同解除及離職補(bǔ)償協(xié)議
- 二零二五年度企業(yè)總經(jīng)理職務(wù)聘用與人才培養(yǎng)協(xié)議
- 二零二五年度產(chǎn)學(xué)研合作框架協(xié)議(新材料研發(fā)與應(yīng)用)
- 保險(xiǎn)授權(quán)書(shū)格式模板
- 2024年GINA哮喘防治指南修訂解讀課件
- (完整版)數(shù)字電子技術(shù)基礎(chǔ)教案
- 小回溝礦井3.0Mt-a新建工程變更項(xiàng)目環(huán)評(píng)
- 木地板合同范本
- 汽車(chē)維修合同管理制度
- 2024中交二航局分包合同范本
- 2024年益陽(yáng)醫(yī)學(xué)高等專(zhuān)科學(xué)校單招職業(yè)適應(yīng)性測(cè)試題庫(kù)全面
- 2024年四川電力職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)新版
- (完整)低壓配電柜技術(shù)規(guī)范
- 2024年注冊(cè)安全工程師考試題庫(kù)【含答案】
評(píng)論
0/150
提交評(píng)論