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

操作系統(tǒng)課程設計Linux二級文件系統(tǒng)設計.doc

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

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

操作系統(tǒng)課程設計Linux二級文件系統(tǒng)設計.doc

操作系統(tǒng)課程設計報告專 業(yè):軟件工程學 號:姓 名:馬提交日期:2017/1/10【設計目的】1、 通過一個簡單多用戶文件系統(tǒng)的設計,加深理解文件系統(tǒng)的內(nèi)部功能和內(nèi)部實現(xiàn)2、 結合數(shù)據(jù)結構、程序設計、計算機原理等課程的知識,設計一個二級文件系統(tǒng),進一步理解操作系統(tǒng)3、通過對實際問題的分析、設計、編程實現(xiàn),提高學生實際應用、編程的能力 【設計內(nèi)容】為Linux系統(tǒng)設計一個簡單的二級文件系統(tǒng)。要求做到以下幾點:1.可以實現(xiàn)下列幾條命令:login 用戶登錄dir 列目錄create 創(chuàng)建文件delete 刪除文件open 打開文件close 關閉文件read 讀文件write 寫文件cd 進出目錄2列目錄時要列出文件名,物理地址,保護碼和文件長度3源文件可以進行讀寫保護【實驗環(huán)境】C+DevCpp【設計思路】本文件系統(tǒng)采用兩級目錄,其中第一級對應于用戶賬號,第二級對應于用戶帳號下的文件。另外,為了簡便文件系統(tǒng)未考慮文件共享,文件系統(tǒng)安全以及管道文件與設備文件等特殊內(nèi)容。首先應確定文件系統(tǒng)的數(shù)據(jù)結構:主目錄、子目錄及活動文件等。主目錄和子目錄都以文件的形式存放于磁盤,這樣便于查找和修改。用戶創(chuàng)建的文件,可以編號存儲于磁盤上。如:file0,file1,file2并以編號作為物理地址,在目錄中進行登記。結構體:typedef struct /*the structure of OSFILE*/ int fpaddr; /*file physical address*/ int flength; /*file length*/ int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/ char fnameMAXNAME; /*file name*/ OSFILE; /存放重要信息 typedef struct /*the structure of OSUFD*/ char ufdnameMAXNAME; /*ufd name*/ OSFILE ufdfileMAXCHILD; /*ufd own file*/OSUFD; /用戶下面的文件 typedef struct /*the structure of OSUFDLOGIN*/ char ufdnameMAXNAME; /*ufd name*/ char ufdpword8; /*ufd password*/ OSUFD_LOGIN;typedef struct /*file open mode*/ int ifopen; /*ifopen:0-close,1-open*/ int openmode; /*0-read only,1-write only,2-read and write,3-initial*/OSUFD_OPENMODE;主要的函數(shù)說明:void LoginF(); /*LOGIN FileSystem用戶登錄*/void DirF(); /*Dir FileSystem列目錄*/void CdF(); /*Change Dir改變目錄*/void CreateF(); /*Create File創(chuàng)建文件*/void DeleteF(); /*Delete File刪除文件*/void ModifyFM(); /*Modify FileMode修改*/void OpenF(); /*Open File打開文件*/void CloseF(); /*Close File關閉文件*/void ReadF(); /*Read File讀文件*/void WriteF(); /*Write File寫文件*/void QuitF(); /*Quit FileSystem離開文件系統(tǒng)*/void help();其他重要函數(shù):void clrscr() /清屏int ExistD(char *dirname) /*Whether DirName Exist,Exist-i,Not Exist-0*/ int ExistF(char *filename) /*Whether FileName Exist,Exist-i,Not Exist-0*/int FindPANo() /*find out physical address num*/void SetPANo(int RorW) /*Set physical address num,0-read,1-write*/void InputPW(char *password) /*input password,use * replace*/ char *ltrim(char *str) /*remove the heading blanks.去除左空白*/char *rtrim(char *str) /*remove the trailing blanks.去除右空白*/int WriteF1() /*write file相當于置換文件*/程序流程說明:整體流程:開始Login(Name/Pw/Cpw)創(chuàng)建文件打開文件刪除文件寫文件更改目錄修改文件屬性讀文件關閉文件退出系統(tǒng)清屏添加覆蓋結束各部分功能流程:Open: N N YDelete:開始Delete主目錄是否為空?Y確認刪除文件在用戶目錄下!N用戶是否在用戶目錄下? N只能修改用戶目錄下的文件!Y接收刪除文件名獲取文件文件被打開或被保護?Y打開或被保護狀態(tài)不可刪除N獲取物理塊號文件向前移動刪除文件,文件數(shù)減一刪除文件成功!結束Write:開始Write用戶是否在目錄下?N文件不存在! Y獲取文件 確認該文件被打開文件權限為只寫或讀寫 N文件為只讀和保護,不允許寫! Y獲取路徑0追加,1覆蓋?1覆蓋0追加文件寫入成功!結束Close:開始CloseN用戶是否在目錄下?請確認要關閉的文件是在用戶目錄下! Y羅列已經(jīng)打開的文件獲取文件名獲取物理地址文件是否處于關閉狀態(tài)?Y該文件已被關閉 N關閉文件文件成功關閉結束【源程序清單】Open:void OpenF() /*Open File*/ printf("nnC:%s>",strupr(dirname); /顯示當前路徑 int fcoun, i; /定義兩個整形變量 char fnameMAXNAME, fmode25; /定義兩個字符串變量 int fmod; /文件模式 printf("nPlease input FileName:"); gets(fname); /接收打開文件的文件名 ltrim(rtrim(fname); /去除左右空白 if(ExistF(fname)<0) /判斷文件是否存在 /不存在 printf("nError.文件名 %s不存在n", fname); wgetchar=1; else /存在 i=ExistD(username); /獲取用戶物理信息 for(int a=0; a < fcounti; a+) /遍歷用戶文件 if(strcmp(fname, ufdi->ufdfilea.fname)=0) /找到文件 fcoun=a; break; ifopenifcoun.ifopen=1; /將文件狀態(tài)置為打開狀態(tài) printf("Please input OpenMode(0-Read Only, 1-Write Only, 2-Read and Write, 3-Protect):"); /打開文件模式 gets(fmode); /獲取模式 fmod=atoi(fmode); /將字符串轉換為整型 ifopenifcoun.openmode=fmod; /將文件的模式置為OpenMode printf("nOpen Successed"); wgetchar=1; Delete:void DeleteF() /*Delete File*/ printf("nnC:%s>",strupr(dirname); /顯示路徑 char fnameMAXNAME, str50, str150; /定義三個字符串變量 int i, k, j; int fpaddrno1; /記錄文件物理地址塊號 if(strcmp(strupr(ltrim(rtrim(dirname), "")=0) /判斷主目錄是否為空 printf("nError.請確認您要刪除的是否在用戶目錄下!n"); wgetchar=1; if(strcmp(strupr(dirname), strupr(username)!=0) /判斷用戶是否在用戶目錄下 printf("nError.您只能刪除修改自己用戶目錄下的文件哦!n"); wgetchar=1; else printf("nPlease input FileName:"); gets(fname); /接收刪除的文件名 ltrim(rtrim(fname); /去除文件名的左右空白 i=ExistF(fname); /用戶文件位置 if(i>=0) k=ExistD(username); /獲取用戶所在存儲位置 if(ifopenki.ifopen=1) /文件狀態(tài)處于打開狀態(tài),不許刪除 printf("n Error.%s 處于打開狀態(tài)!請先關閉喲!n", fname); wgetchar=1; else if(ufdk->ufdfilei.fmode=3) /保護文件,不可刪除 printf("nError.%s處于被保護狀態(tài)!請先關閉喲!n", fname); wgetchar=1; else fpaddrno1=ufdk->ufdfilei.fpaddr; /獲取文件的物理地址塊號 fpaddrnofpaddrno1=0; /回收物理地址塊號 for(j=i; j<fcountk; j+) /將文件都向前移動 ufdk->ufdfilej=ufdk->ufdfilej+1; /將j+1位置為j strcpy(str , "c:osfilefile"); itoa(fpaddrno1, str1, 10); /將整數(shù)轉化為字符串 strcat(str, str1); strcat(str, ".txt");/連接 remove(str); /刪除物理文件 fcountk-; /文件個數(shù)減一 printf("n%sis deleted successfully.n", fname); wgetchar=1; else printf("nError.%s文件不存在!n", fname); /文件不存在 wgetchar=1; Write:void WriteF() /*Write File*/ printf("nnC:%s>",strupr(dirname); /顯示用戶路徑 int i, k, m=0; /定義整形變量 int length; /定義長度整形變量 char fnameMAXNAME; /定義文件名字符串 char str255, str1255; /定義兩個字符串變量 if(strcmp(strupr(dirname), strupr(username)!=0) /判斷用戶是否在用戶目錄下 printf("nError!請確認您要寫的在用戶目錄下!n"); wgetchar=1; return; printf("n請先打開文件!n"); printf("Opened File(s) List:n"); k=ExistD(dirname); /獲取用戶文件信息 for(i=0; i<fcountk; i+) /遍歷用戶下的文件 if(ifopenki.ifopen=1) /文件處于打開狀態(tài) printf("%15s", ufdk->ufdfilei.fname); m+; if(m%4 = 0 && m!=0) /每創(chuàng)建4個文件換一行 printf("n"); printf("n%d 文件已經(jīng)打開啦!n", m); if(m = 0) wgetchar=1; if(m!=0) /創(chuàng)建文件 printf("nPlease input FileName:"); gets(fname); /接收文件名 ltrim(rtrim(fname); /去除左右空白 i=ExistF(fname); /獲取文件物理地址 if(i>=0) /文件存在 if(ifopenki.ifopen=1) /文件處于打開狀態(tài) if(ifopenki.openmode=1 | ifopenki.openmode=2) /文件權限是只寫或讀寫 itoa(ufdk->ufdfilei.fpaddr, str, 10); /獲取文件路徑 strcpy(str1, "file"); strcat(str1, str); strcpy(str, "c:osfilefile"); strcat(str, str1); strcat(str, ".txt"); /文件路徑char str23;int choice=3;strcpy(str2,"ab");printf("You can choise 0-Covered W 1-Additonal W:"); /選擇追加還是覆蓋scanf(" %d", &choice);if(choice = 0) /0-覆蓋 strcpy(str2, "wb"); fp_file=fopen(str, str2); /打開文件 length=WriteF1(); ufdk->ufdfilei.flength=ufdk->ufdfilei.flength+length; /修改文件長度if(choice = 0)ufdk->ufdfilei.flength=length; printf("nnYou have write file successfully!");fclose(fp_file); /關閉文件 wgetchar=0; else if(ifopenki.openmode=0) /文件處于只讀狀態(tài),不允許寫 printf("nError.%s 文件以只讀狀態(tài)打開,不允許寫!n", fname); wgetchar=1; else printf("nError.%s 文件處于關閉狀態(tài),請先打開!n", fname); wgetchar=1; else printf("nError.%s 文件不存在!n", fname); /文件不存在 wgetchar=1; Close:void CloseF() /*Close File*/ printf("nnC:%s>",strupr(dirname); /顯示路徑 char fnameMAXNAME; /定義字符串變量 int i, k, n=0; if(strcmp(strupr(dirname), strupr(username)!=0) /關閉用戶文件需在用戶目錄下 printf("nError!請確認您要關閉的是在用戶目錄下!n"); else printf("nnOpened File(s) List:n"); /羅列已處于打開的文件k=ExistD(dirname);for(i=0;i<fcountk;i+)if (ifopenki.ifopen=1)/文件處于開啟狀態(tài) if (ifopenki.openmode=0) |(ifopenki.openmode=2) /只讀或者讀寫狀態(tài) printf("%15s",ufdk->ufdfilei.fname);n+;if(n%4=0)&&(n!=0) printf("n");printf("n%d 文件已被打開!n",n);if (n=0) wgetchar=1; printf("nPlease input FileName:"); gets(fname); /接收關閉文件的文件名 ltrim(rtrim(fname); /除去首尾空格 i=ExistF(fname); /獲取文件物理地址 if(i >= 0) k=ExistD(username); /獲取用戶文件信息 if(ifopenki.ifopen=0) /文件處于關閉狀態(tài) printf("nError!%s文件已經(jīng)被關閉!n", fname); else /將文件關閉 ifopenki.ifopen=0; ifopenki.openmode=4; printf("%s has been closed successfully!", fname); else printf("nError.%s文件不存在n", fname); 【測試結果】(此部分請同學們自己動手操作)Login:Help:Create:Open:Read:Write:1additional添加后變?yōu)椋?covered覆蓋后變?yōu)椋篊lose:Attrib:Delete:Dir:Cls:(清屏)Exit:【設計總結】首先通過這次的操作系統(tǒng)課程設計,讓我認識到了實際的編程操作并不難,難的是對過程的設計,功能的定義以及最后的程序流程圖的設計。其次說一下我的認識,這次的課程設計使我對一些東西有了更加深刻的認知和了解,更重要的是鞏固了新學的知識,以及對舊的知識進行了復習與了解,對一些細節(jié)方面的東西也有了更深刻的理解,所以這一次實踐的機會,讓我體會到了自己的不足之處,在以后的學習過程中,會加倍的認真努力。讓我對文件的操作更加熟練了,并且對Linux有了初步的了解。其實這次課程設計,不能說很困難:老師已經(jīng)把大體的架構給我們了,我們需要添加的僅是四個功能的設計(open、write、delete、close)但是它又不是很容易,我們需要把整個的程序弄清,各個變量以及語句都要明白記住,這會關聯(lián)到我們所定義的四個功能??偹闶前堰@次的課程設計搞定了,最讓我開心的是課設完成之后看著自己的作品。程序完整運行成功的那一瞬間最令我激動??傊@次的課設使我重新認識了不少,以后我會更加努力!【參考文獻】計算機操作系統(tǒng)教程(第三版). 張堯學 史美林 張高計算機操作系統(tǒng),西安電子科技大學出版社,方敏主編,2004.8

注意事項

本文(操作系統(tǒng)課程設計Linux二級文件系統(tǒng)設計.doc)為本站會員(jian****018)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




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

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

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


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