




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、西安郵電大學(xué)操作系統(tǒng)課程設(shè)計(jì)報(bào) 告 書(shū)院系名稱(chēng):計(jì)算機(jī)學(xué)院學(xué)生姓名:*專(zhuān)業(yè)名稱(chēng):軟件工程班 級(jí):*班學(xué)號(hào):*時(shí)間:2016 年5月 9 日 至 2016 年 5月 20 日 1 實(shí)驗(yàn)?zāi)康牟僮飨到y(tǒng)是控制和管理計(jì)算機(jī)硬件和軟件資源的虛擬機(jī),其中的文件系統(tǒng)是對(duì)軟件和設(shè)備進(jìn)行管理的系統(tǒng),文件系統(tǒng)是操作系統(tǒng)中非常重要的一個(gè)模塊,它的實(shí)現(xiàn)占用了操作系統(tǒng)源碼的最大編碼量,其好壞也直接影響著用戶對(duì)操作系統(tǒng)的感受程度。通過(guò)對(duì)操作系統(tǒng)課程設(shè)計(jì)的實(shí)踐,進(jìn)一步加深對(duì)文件系統(tǒng)的認(rèn)識(shí)和理解,并在此基礎(chǔ)上培養(yǎng)學(xué)生的工程應(yīng)用能力。實(shí)驗(yàn)分別從用戶態(tài)和內(nèi)核態(tài)兩個(gè)層次實(shí)踐文件系統(tǒng)的部分功能。2 實(shí)驗(yàn)任務(wù)2.1 ls實(shí)現(xiàn)在linux
2、下編程實(shí)現(xiàn)帶參數(shù)的shell命令 ls,ls命令必須支持如下功能。1.基本要求(1) 支持 -l 參數(shù);(2) 輸出結(jié)果按字典排序;(3) 列出“.”文件,支持-a參數(shù),在沒(méi)有-a時(shí)候不顯示隱藏文件;(4) 顯示記錄總數(shù)。2.高級(jí)要求(1) 支持對(duì)給定的目錄進(jìn)行操作,如 ls /tmp;(2) 輸出結(jié)果分欄排序,每欄的寬度由這一欄最長(zhǎng)的文件名決定,顯示的欄數(shù)還受終端顯示器的寬度影響,每一列盡可能的等寬;(3) 正確顯示文件特殊屬性suid、sgid和sticky,參見(jiàn)聯(lián)機(jī)幫助確保程序能處理各種情況;(4) 支持標(biāo)準(zhǔn)的ls支持選項(xiàng)-R,它的功能是遞歸地列出目錄中所有的文件包含子目錄中的文件;(5
3、) 支持標(biāo)準(zhǔn)的ls支持選項(xiàng)-u,它會(huì)顯示出文件的最后訪問(wèn)時(shí)間,如果用了-u而不用-l,會(huì)有什么結(jié)果?;(6) 當(dāng)關(guān)掉一個(gè)文件的讀權(quán)限,就不能打開(kāi)這個(gè)文件來(lái)讀。如果從一個(gè)終端登錄,打開(kāi)一個(gè)文件,保持文件的打開(kāi)狀態(tài),然后從另外的終端登錄,去掉文件的讀權(quán)限,這時(shí)有什么事情會(huì)發(fā)生?編寫(xiě)一個(gè)程序,先用open()打開(kāi)一個(gè)文件,用read()讀一些內(nèi)容,調(diào)用sleep()等待20s以后,再讀一些內(nèi)容,從另外的終端,再等待的20s內(nèi)去掉文件的讀權(quán)限,這樣會(huì)有什么結(jié)果?。2.2編寫(xiě)內(nèi)核模塊顯示目錄或文件的信息。(1) 使用內(nèi)核模塊編程;(2) 調(diào)試Linux操作系統(tǒng)原理與應(yīng)用第8章文件系統(tǒng)P215 的例子;(
4、3) 練習(xí)給內(nèi)核模塊傳入?yún)?shù),參考關(guān)于帶參數(shù)的模塊編程 (4) 給內(nèi)核模塊傳入?yún)?shù)path,其中path為絕對(duì)路徑;1) 當(dāng)path為目錄時(shí),顯示目錄對(duì)應(yīng)的dentrey結(jié)構(gòu)中的相關(guān)信息(可打印的信息);2) 當(dāng)path為文件時(shí),顯示文件對(duì)應(yīng)的indoe結(jié)構(gòu)中的相關(guān)信息(可打印的信息);3) 當(dāng)路徑錯(cuò)誤時(shí),有錯(cuò)誤提示信息。3 開(kāi)發(fā)環(huán)境 設(shè)備名稱(chēng)設(shè)備類(lèi)型配置類(lèi)型參數(shù)LenovoG480 PC機(jī)硬件配置RAM 4G 軟件配置Ubuntu 32位 4 測(cè)試環(huán)境設(shè)備名稱(chēng)設(shè)備類(lèi)型配置類(lèi)型參數(shù)LenovoG480 PC機(jī)硬件配置RAM 4G 軟件配置Ubuntu 32位 5 總體設(shè)計(jì)5.1功能組織圖ls
5、功能圖:運(yùn)行命令Ls-uLs-RLs-aLsLs-l輸出所有文件輸出所有文件屬性輸出隱藏文件輸出文件屬性按字典順序排序文件權(quán)限:運(yùn)行命令chmod修改權(quán)限讀文件,ls顯示權(quán)限信息內(nèi)核模塊:super_blocks:運(yùn)行命令加載模塊加鎖遍歷系統(tǒng)中的超級(jí)塊打印文件設(shè)備號(hào)打印文件系統(tǒng)名打印索引結(jié)點(diǎn)號(hào)統(tǒng)計(jì)索引結(jié)點(diǎn)計(jì)數(shù)卸載模塊path:運(yùn)行命令路徑錯(cuò)誤Path=文件Path=目錄顯示目錄信息顯示錯(cuò)誤信息顯示文件信息5.2原理linux文件系統(tǒng):linux下有普通文件、目錄文件、鏈接文件、設(shè)備文件、管道文件這幾種類(lèi)型。但鏈接文件、設(shè)備文件、管道文件都可以當(dāng)做普通文件看待,那實(shí)際也就只要區(qū)分普通文件和目錄文
6、件這兩種了。而目錄文件的內(nèi)容就是它所包含所有文件和子目錄的一個(gè)列表,所以只要打開(kāi)目錄文件并讀取對(duì)應(yīng)目錄塊里的那個(gè)列表數(shù)據(jù),就可以得到些目錄下所有文件和子目錄的名稱(chēng)了。其實(shí)這個(gè)流程簡(jiǎn)單,就是:打開(kāi)目錄-讀取內(nèi)容-顯示文件名稱(chēng)-關(guān)閉打開(kāi)的目錄。Linux系統(tǒng)中會(huì)有很多目錄。每個(gè)目錄中又會(huì)有很多文件。如果要列出一個(gè)非當(dāng)前目錄的內(nèi)容或者是一個(gè)特定文件的信息,則需要在參數(shù)中給出目錄名或文件名。如:ls/tmp/列出/tmp目錄中各文件的文件名lsdocs/列出docs目錄中各文件的屬性ls*.c/列出當(dāng)前目錄下與*.c匹配的文件,即當(dāng)前目錄下所有以.c為后綴的經(jīng)常用到的命令行選項(xiàng)ls-l在前面已經(jīng)提到過(guò)
7、,-l就是輸出文件詳細(xì)的信息ls-a列出的內(nèi)容包含以“.“開(kāi)頭的文件,即所謂有隱藏文件Linux的文件訪問(wèn)權(quán)限:Linux是一個(gè)安全的操作系統(tǒng),說(shuō)他安全,最重要的一個(gè)原因是對(duì)用戶訪問(wèn)權(quán)限的控制。在shell下我們可以通過(guò)命令ls-l filename 來(lái)查看一文件的屬性。其中第一項(xiàng)文件屬性總共由10位構(gòu)成,第一位是文件類(lèi)型,剩下9位都是表示文件的訪問(wèn)權(quán)限,每3個(gè)一組,第一組:文件所有者對(duì)該文件的操作權(quán)限,第二組表示與文件所有者同組的用戶對(duì)該文件的操作權(quán)限,第三組表示其他用戶對(duì)該文件的操作權(quán)限,權(quán)限由三種字母組成:r:可讀w:可寫(xiě)x:可執(zhí)行。編寫(xiě)內(nèi)核模塊 寫(xiě)內(nèi)核模塊,打印super_block結(jié)
8、構(gòu)中一些域的值。(課本上的例子)遍歷系統(tǒng)中的超級(jí)塊:list_head結(jié)構(gòu)類(lèi)型的字段名稱(chēng)為s_list。list_entry宏通過(guò)指向list_head節(jié)點(diǎn)的地址來(lái)得到外部超級(jí)塊的首地址。獲取系統(tǒng)中個(gè)超級(jí)塊的地址,獲得某個(gè)子進(jìn)程的地址,打印文件系統(tǒng)所在的主設(shè)備號(hào)和次設(shè)備號(hào)和文件系統(tǒng)名。遍歷打印每個(gè)超級(jí)塊中的所有索引節(jié)點(diǎn)號(hào),打印索引結(jié)點(diǎn)。 內(nèi)核模塊傳入?yún)?shù)path,其中path為絕對(duì)路徑path=路徑時(shí),顯示如下信息:目錄項(xiàng)標(biāo)志、哈希表、短目錄名、目錄項(xiàng)長(zhǎng)度、目錄項(xiàng)名、目錄項(xiàng)計(jì)數(shù)器的引用path=文件時(shí),顯示如下信息:文件索引節(jié)點(diǎn)的數(shù)量、文件類(lèi)型和權(quán)限、用戶ID、用戶組ID、指定文件系統(tǒng)的讀寫(xiě)訪
9、問(wèn)標(biāo)志、文件大小、索引節(jié)點(diǎn)的狀態(tài)、硬鏈接數(shù)、引用記數(shù)、文件的塊、版本號(hào)、以位為單位的塊大小6 詳細(xì)設(shè)計(jì)6.1 模塊一ls1.功能(1)ls支持 -l 參數(shù);(2)輸出結(jié)果按字典排序;(3)列出“.”文件,支持-a參數(shù),在沒(méi)有-a時(shí)候不顯示隱藏文件支持 u參數(shù)。支持 R參數(shù);(4)顯示記錄總數(shù)。(5)支持對(duì)給定的目錄進(jìn)行操作,如 ls /tmp;(6)輸出結(jié)果分欄排序,每欄的寬度由這一欄最長(zhǎng)的文件名決定,顯示的欄數(shù)還受終端顯示器的寬度影響,每一列盡可能的等寬;(7)修改文件權(quán)限 2.算法/流程圖ls算法描述:根據(jù)輸入命令所帶的參數(shù)判斷并調(diào)用函數(shù)do_ls(); 把隱藏文件屬性寫(xiě)入結(jié)構(gòu)體數(shù)組Out
10、putpoint中并統(tǒng)計(jì)文件數(shù)。 非隱藏文件屬性寫(xiě)入結(jié)構(gòu)體數(shù)組Output中并統(tǒng)計(jì)文件數(shù)。 按參數(shù)要求對(duì)文件名進(jìn)行排序。 根據(jù)要求輸出。流程圖:main()函數(shù):開(kāi)始 判斷輸入的命令調(diào)用do_ls()判斷是否是/tmp -l 是打開(kāi)當(dāng)前目錄把隱藏文件記錄在數(shù)組Outputpoint,非隱藏文件記錄在數(shù)組Output命令名字后加.否判斷命令是否是 -t是否調(diào)用qsort();按最后訪問(wèn)時(shí)間排序調(diào)用qsort();按最后修改時(shí)間排序 否 判斷命令是否是ls 否是判斷命令是否是-R display_Ls( cntOutput );調(diào)用qsort();按最后修改時(shí)間排序是判斷命令是否是ls 判斷命令是
11、否是ls 調(diào)用qsort();按最后修改時(shí)間排序調(diào)用qsort();按最后修改時(shí)間排序調(diào)用qsort();按最后修改時(shí)間排序調(diào)用qsort();按最后修改時(shí)間排序調(diào)用qsort();按最后修改時(shí)間排序調(diào)用qsort();按最后修改時(shí)間排序否display_ls_R(cntOutp);判斷命令是否是ls-l 是結(jié) 束循環(huán)調(diào)用dostat( Output i .FileName );3.運(yùn)行結(jié)果4.模塊使用的主要函數(shù)、數(shù)據(jù)類(lèi)型和宏(1)主要函數(shù)說(shuō)明1)函數(shù)一 do_ls();原型: void do_ls( int myJudge,char myOrder )功能:根據(jù)命令輸出對(duì)應(yīng)的文件屬性參數(shù):m
12、yJudge,myOrder返回值:void2)函數(shù)二 recursion原型: void recursion(char *name)功能:遞歸輸出文件名參數(shù): name返回值:void3)函數(shù)三display_ls_a原型: void display_Ls_a( int cntPoint,int cnt )功能:ls a的功能,輸出非隱藏文件參數(shù):cntPoint,cnt返回值:void4)函數(shù)四show_file_info原型: void show_file_info( char *filename,struct stat * info_p )功能:ls l文件屬性分欄輸出 參數(shù):file
13、name,info_p返回值:void(2)數(shù)據(jù)類(lèi)型1)數(shù)據(jù)類(lèi)型1名稱(chēng):OutputmaxN 類(lèi)型:struct Outfile *含義:非隱藏文件的保存2)數(shù)據(jù)類(lèi)型2名稱(chēng):,OutputPointmaxM;類(lèi)型:struct Outfile *含義:隱藏文件的保存(3)宏1名稱(chēng):#define LS 0 /ls含義:命令行無(wú)參數(shù)宏2名稱(chēng):#define LS_A 1 /ls -a含義:命令行參數(shù)只有-a宏3名稱(chēng): #define LS_L 2 /ls -l含義:命令行參數(shù)只有-l宏4名稱(chēng):#define LS_TMP 3 /ls /tmp含義:命令行參數(shù)有/tmp宏5名稱(chēng):#define L
14、S_R 7 /ls -R含義:命令行參數(shù)有-R 6.2 模塊二super_block1.功能通過(guò)加載內(nèi)核的方式,打印出超級(jí)塊super_blocks數(shù)據(jù)結(jié)構(gòu)中文件系統(tǒng)所在的主設(shè)備號(hào)和次設(shè)備號(hào)以及文件系統(tǒng)名2.算法/流程圖開(kāi)始加載模塊加鎖遍歷系統(tǒng)中的超級(jí)塊打印文件設(shè)備號(hào)打印文件系統(tǒng)名打印索引結(jié)點(diǎn)號(hào)索引結(jié)點(diǎn)計(jì)數(shù)卸載模塊結(jié)束3.運(yùn)行結(jié)果4.模塊使用的主要函數(shù)、數(shù)據(jù)類(lèi)型和宏(1)主要函數(shù)說(shuō)明1)函數(shù)一原型: static int _init my_init(void)功能:模塊加載參數(shù):無(wú)返回值:int2)函數(shù)二原型:static void _exit my_exit(void)功能:模塊卸載參數(shù):v
15、oid返回值:void(2)數(shù)據(jù)類(lèi)型1)數(shù)據(jù)類(lèi)型1名稱(chēng):sb類(lèi)型:struct super_block *含義:定義一個(gè)超級(jí)塊2)數(shù)據(jù)類(lèi)型2名稱(chēng):pos類(lèi)型:struct list_head *含義:定義一個(gè)鏈表3)數(shù)據(jù)類(lèi)型3名稱(chēng):linode類(lèi)型:struct list_head *含義:定義一個(gè)鏈表4)數(shù)據(jù)類(lèi)型4名稱(chēng):pinode類(lèi)型:struct inode *含義:定義一個(gè)索引結(jié)點(diǎn)5)數(shù)據(jù)類(lèi)型5名稱(chēng):count類(lèi)型:int含義:存儲(chǔ)總數(shù)(3)宏一名稱(chēng):#define SUPER_BLOCKS_ADDRESS 0xc1778bc0含義:超級(jí)塊的變量地址宏二名稱(chēng):#define SB_LO
16、CK_ADDRESS0xc1932aa0含義: sb_lock超級(jí)塊對(duì)應(yīng)的自旋鎖7 測(cè)試方法與測(cè)試結(jié)果7.1測(cè)試方法 編號(hào) 輸入用例 期望結(jié)果 1 ./a.out按字典排序,輸出當(dāng)前目錄下的所有文件名(不含隱藏文件) 2 ./a.out -l顯示當(dāng)前目錄下的非隱藏文件詳細(xì)信息按字典排序 3 ./a.out -a 顯示上級(jí)目錄下目錄的所有文件名,含有隱藏文件。 4 ./a.out -t按照最后修改時(shí)間排序 5 ./a.out -R顯示上層文件夾下所有文件文件 6 ./a.out linux顯示liunx:當(dāng)前文件夾下沒(méi)有文件7.2測(cè)試結(jié)果 1. ./a.out2. ./a.out -a3. /a.out-l4. ./a.out linux5. ./a.out -u6. ./a.out -R8 調(diào)試情況,設(shè)計(jì)技巧及體會(huì)通過(guò)這次課程設(shè)計(jì),使我對(duì)liunx理解更加深了一步。通過(guò)編寫(xiě)程序中錯(cuò)誤,對(duì)ls功能基本以達(dá)到掌握并熟練運(yùn)用的程度。對(duì)錯(cuò)誤的調(diào)試,對(duì)程序的掌握運(yùn)行有的一定的掌控。這次課程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 交互信任評(píng)估-洞察及研究
- 滴灌系統(tǒng)施工技術(shù)優(yōu)化與推廣
- 公司投資并購(gòu)管理辦法
- 微凸點(diǎn)在溫度循環(huán)荷載作用下的力學(xué)行為研究
- 生活技能課程中的實(shí)踐性教學(xué)設(shè)計(jì)研究
- 星級(jí)酒店大堂管理辦法
- 醫(yī)院財(cái)務(wù)退費(fèi)管理辦法
- 港區(qū)人員安全行為分析-洞察及研究
- 旅游經(jīng)濟(jì)學(xué)科課程體系構(gòu)建與教學(xué)標(biāo)準(zhǔn)研究
- AI生成內(nèi)容侵權(quán)認(rèn)定的法律適用問(wèn)題研究
- 法拍房后申請(qǐng)住房補(bǔ)貼申請(qǐng)書(shū)
- 蘇教版譯林初中英語(yǔ)詞匯表(七年級(jí)至九年級(jí))
- 《外科學(xué)》課程基本要求與教學(xué)大綱本科生
- 工作銷(xiāo)項(xiàng)計(jì)劃表
- 抑郁病診斷證明書(shū)
- 典型振動(dòng)頻譜圖范例
- 石化質(zhì)檢員試題
- GB/T 6417.1-2005金屬熔化焊接頭缺欠分類(lèi)及說(shuō)明
- GB/T 32350.2-2015軌道交通絕緣配合第2部分:過(guò)電壓及相關(guān)防護(hù)
- GB/T 19520.16-2015電子設(shè)備機(jī)械結(jié)構(gòu)482.6 mm(19 in)系列機(jī)械結(jié)構(gòu)尺寸第3-100部分:面板、插箱、機(jī)箱、機(jī)架和機(jī)柜的基本尺寸
- (約克)機(jī)組熱回收技術(shù)
評(píng)論
0/150
提交評(píng)論