操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、江蘇大學(xué)計(jì)算機(jī)學(xué)院課程設(shè)計(jì)報(bào)告課程名稱 操作系統(tǒng)課程設(shè)計(jì) 實(shí)驗(yàn)學(xué)期 2015 至 2016 學(xué)年,第 1 學(xué)期學(xué)生姓名 專業(yè)班級(jí) 學(xué) 號(hào) 指導(dǎo)教師 開(kāi) 課 系 計(jì)算機(jī)系 操作系統(tǒng)課程組制操作系統(tǒng)課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目:操作系統(tǒng)課程設(shè)計(jì)設(shè)計(jì)時(shí)間:2016/1/10一、 課程設(shè)計(jì)目的與要求需要完成的內(nèi)容:(1) 安裝虛擬機(jī):Vmware、Vmware palyer (free)(推薦)、Virtualbox(推薦)、VMLite、Xen、Virtuozzo、KVM(2) 安裝和使用Linux(推薦SUSE)(注意包含內(nèi)核源碼和內(nèi)核開(kāi)發(fā)工具等)(3) Linux內(nèi)核源代碼配置和重編(4) 找到VF

2、S和一個(gè)具體文件系統(tǒng)的源代碼(ext3或ext4)(5) 讀懂VFS和具體文件系統(tǒng)如何關(guān)聯(lián)(如何體現(xiàn)virtual file switch)(6) 找到具體文件系統(tǒng)的read或write函數(shù),使用printk(使用方法和printf一樣)向后臺(tái)打印文件讀寫(xiě)信息。(read或write函數(shù)選一個(gè)即可)(7) 使用dmesg c查看后臺(tái)的輸出??梢愿郊拥墓δ埽?) 復(fù)制ext3或ext4的源代碼(注意與當(dāng)前使用的文件系統(tǒng)有區(qū)別),修改Makefile文件,使用模塊編譯方式(9) 修改ext3或ext4的源代碼,實(shí)現(xiàn)新的文件系統(tǒng)。(至少需要修改文件系統(tǒng)的名稱,最好能對(duì)文件寫(xiě)操作向系統(tǒng)后臺(tái)打印出信息。

3、)(10) 動(dòng)態(tài)加載和卸載新的文件系統(tǒng)。二、 課程設(shè)計(jì)內(nèi)容(1) 安裝虛擬機(jī)(2) 安裝和使用Linux(3) Linux內(nèi)核源代碼配置和重編(4) 提取并動(dòng)態(tài)加載和卸載新的文件系統(tǒng)三、 課程設(shè)計(jì)設(shè)備與環(huán)境設(shè)備信息:PC虛擬機(jī):VM11四、 設(shè)計(jì)正文(包括分析與設(shè)計(jì)思路、各模塊流程圖、帶注釋的主要算法源碼、內(nèi)核編譯過(guò)程以及動(dòng)態(tài)模塊加載過(guò)程等,如有改進(jìn)或者拓展,請(qǐng)重點(diǎn)用一小節(jié)進(jìn)行說(shuō)明)(1)安裝虛擬機(jī)(2)安裝和使用Linux(推薦SUSE)(注意包含內(nèi)核源碼和內(nèi)核開(kāi)發(fā)工具等)安裝OpenSUSE,并下載相近版本的內(nèi)核源碼初始內(nèi)核版本下載的源代碼包(3)Linux內(nèi)核源代碼配置和重編利用vmto

4、ols(虛擬機(jī)提供的可以在宿主機(jī)和虛擬機(jī)之間自由復(fù)制文件的工具)將內(nèi)核源碼包復(fù)制進(jìn)虛擬機(jī),解壓到/home/a123/linux-3.12.51*因?yàn)榉峙涞拇疟P(pán)空間比較小,所以沒(méi)有按照慣例把內(nèi)核源碼放在/usr/src目錄下(如果放在這里,會(huì)出現(xiàn)空間不足的情況)附:磁盤(pán)分配情況/swap(交換分區(qū)) 2.4G/(根目錄) 11G/home(用戶目錄) 13G解壓好的內(nèi)核源碼文件在編譯前需要稍作修改(6),并且缺乏一個(gè)config文件告訴編譯器編譯哪些功能。Config文件可以用make menuconfig命令生成,但是需要自己選擇相應(yīng)的功能,太過(guò)復(fù)雜,這里有一個(gè)簡(jiǎn)便的方法因?yàn)橄螺d的內(nèi)核源碼是

5、相近的版本,所以可以使用現(xiàn)有版本的config文件,該文件在/boot目錄下使用cp /boot/config-3.11.6-4-desktop .config命令將此文件復(fù)制過(guò)來(lái)注意:應(yīng)當(dāng)在內(nèi)核所在的文件目錄下使用此命令復(fù)制成功執(zhí)行 make menuconfig命令,進(jìn)入選擇界面,直接保存退出即可雖然新版本的Linux可以直接執(zhí)行make一步完成所有的編譯工作,但此次課程設(shè)計(jì)仍然采用以前的編譯的方式1. 執(zhí)行 make bzImage命令編譯壓縮的內(nèi)核編譯完成2. 執(zhí)行 make modules命令編譯模塊3. 執(zhí)行 make modules_install命令安裝模塊注:在make me

6、nuconfig時(shí)我在General setup中把版本號(hào)改過(guò)4. 執(zhí)行 make install命令安裝新內(nèi)核5. Reboot重啟說(shuō)明內(nèi)核修改安裝完畢,成功(4)找到VFS和一個(gè)具體文件系統(tǒng)的源代碼(ext3或ext4)VFS:虛擬文件系統(tǒng),顧名思義。它為應(yīng)用程序員提供一層抽象,屏蔽底層各種文件系統(tǒng)的差異。Linux的文件系統(tǒng)采用面向?qū)ο蟮姆绞皆O(shè)計(jì),這使得Linux的文件系統(tǒng)非常容易擴(kuò)展,我們可以非常容易將一個(gè)新的文件系統(tǒng)添加到Linux中。在此主要對(duì)象之一super_block位于中代碼量巨大,此為部分代碼Ext4在fs文件夾下的ext4文件夾內(nèi)此處打開(kāi)file.c用vim打開(kāi)file.

7、c部分代碼如下(5) 讀懂VFS和具體文件系統(tǒng)如何關(guān)聯(lián)(如何體現(xiàn)virtual file switch)在(4)中已經(jīng)提到,VFS是C語(yǔ)言寫(xiě)的一個(gè)面向?qū)ο蟮脑O(shè)計(jì),比如我們要調(diào)用alloc_inode方法: sb-s_op-alloc_inode(sb)。這里與面向?qū)ο笳Z(yǔ)言的差別是,面向?qū)ο笳Z(yǔ)言里實(shí)例方法可以訪問(wèn)到this,這樣就可以訪問(wèn)到自身的所有成員,但是在C里卻做不到,所以需要將自身作為參數(shù)傳入到函數(shù)中、圖一表示了對(duì)文件寫(xiě)操作的調(diào)用過(guò)程(6) 找到具體文件系統(tǒng)的read或write函數(shù),使用printk(使用方法和printf一樣)向后臺(tái)打印文件讀寫(xiě)信息。(read或write函數(shù)選一個(gè)即

8、可)因?yàn)長(zhǎng)inux系統(tǒng)對(duì)文件的操作是通過(guò)函數(shù)調(diào)用來(lái)實(shí)現(xiàn)的,所以在此我修改的是vfs這一層,找到fs,目錄下的read_write.c并打開(kāi)找到do_sync_read函數(shù),在其返回前加入printk語(yǔ)句(7) 使用dmesg c查看后臺(tái)的輸出。(8) 復(fù)制ext3或ext4的源代碼(注意與當(dāng)前使用的文件系統(tǒng)有區(qū)別),修改Makefile文件,使用模塊編譯方式(9) 修改ext3或ext4的源代碼,實(shí)現(xiàn)新的文件系統(tǒng)。(至少需要修改文件系統(tǒng)的名稱,最好能對(duì)文件寫(xiě)操作向系統(tǒng)后臺(tái)打印出信息。)使其在加載和卸載的時(shí)候能夠printk到buffer緩沖中(10) 動(dòng)態(tài)加載和卸載新的文件系統(tǒng)。使用insmo

9、d語(yǔ)句加載使用lsmod語(yǔ)句加載加載成功接下來(lái)使用dmesg 查看緩沖區(qū)內(nèi)容成功接下來(lái)使用rmmod語(yǔ)句卸載模塊成功五、 課程設(shè)計(jì)結(jié)果及分析課程設(shè)計(jì)結(jié)果:成功分析:Linux文件系統(tǒng)使用了面向?qū)ο蟮脑O(shè)計(jì)方法,保證了其對(duì)用戶的透明,VFS層實(shí)現(xiàn)了系統(tǒng)與文件系統(tǒng)的無(wú)關(guān)性,增加了系統(tǒng)對(duì)不同文件系統(tǒng)的兼容性。六、 總結(jié)與進(jìn)一步改進(jìn)設(shè)想總結(jié):1.編譯內(nèi)核的時(shí)候,可以使用make XXX j8這樣可以開(kāi)啟多線程編譯(我的虛擬機(jī)分配的是8核心),加快編譯速度2.printk語(yǔ)句我寫(xiě)的是printk(”DoingRead”);本意是利用printk的優(yōu)先級(jí),將其輸出到用戶態(tài)的控制臺(tái),結(jié)果語(yǔ)法錯(cuò)誤,并沒(méi)有輸出到

10、控制臺(tái)改進(jìn)設(shè)想:修改的文件前加上語(yǔ)句,實(shí)現(xiàn)對(duì)控制臺(tái)的輸出#define KERN_EMERG 0(因?yàn)槿鄙龠@個(gè)宏,導(dǎo)致系統(tǒng)并沒(méi)有理解我的0是什么意思)七、 答辯(或匯報(bào))記錄(包括問(wèn)題和答案,每個(gè)人不少于3個(gè))1. 顯示內(nèi)核版本2. 使用dmesg c命令3. 加載新模塊八、 參考文獻(xiàn)1. 鳥(niǎo)哥的Linux私房菜2. 百度百科:printk概述/link?url=Kv5e2xb9thGENkIvSQmjpkYb8kbKoNvEhmt2oICTmDAn0wj2YADVf8dsrzBtz2fRt0uwa_3joQ-o40wKwwL68a3. Linux虛擬文件系統(tǒng)(VFS)/yuyijq/archive/2013/02/24/.html4. LinuxEXT

溫馨提示

  • 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)論

0/150

提交評(píng)論