华科计算机课程设计,华中科大操作系统课程设计报告(附源码).doc
華中科技大學(xué)計(jì)算機(jī)學(xué)院
操作系統(tǒng)課程設(shè)計(jì)報(bào)告
班級:
學(xué)號:
姓名:彭博
時(shí)間:2010年3月
設(shè)計(jì)內(nèi)容一:熟悉和理解Linux編程環(huán)境
編寫一個(gè)C程序,實(shí)現(xiàn)文件拷貝功能。
2)編寫一個(gè)C程序,使用下的圖形庫,分窗口顯示三個(gè)并發(fā)進(jìn)程的運(yùn)行
運(yùn)行./copy a.out b.out后:
實(shí)現(xiàn)了文件拷貝的功能。
2、運(yùn)行./gtk_process結(jié)果如下:
終端輸出:
點(diǎn)擊每個(gè)按鈕顯示進(jìn)程名:
設(shè)計(jì)內(nèi)容二:掌握添加系統(tǒng)調(diào)用的方法
1)采用編譯內(nèi)核的方法,添加一個(gè)新的系統(tǒng)調(diào)用。
編寫一個(gè)應(yīng)用程序,測試新添加的系統(tǒng)調(diào)用。
系統(tǒng)調(diào)用的功能:文件拷貝。
實(shí)驗(yàn)結(jié)果:
測試運(yùn)行前文件目錄狀態(tài)
運(yùn)行./testmycopycall .sort .sort_mycopycall后
返回值是文件的大小,可以看見系統(tǒng)調(diào)用已經(jīng)在當(dāng)前目錄生成了sort_mycopycall文件。
通過ls -l查看文件詳細(xì)信息。
設(shè)計(jì)內(nèi)容三:掌握添加設(shè)備驅(qū)動程序的方法
1)采用模塊方法,添加一個(gè)新的設(shè)備驅(qū)動程序。
)要求添加字符設(shè)備的驅(qū)動。
)編寫一個(gè)應(yīng)用程序,測試添加的驅(qū)動程序。
運(yùn)行結(jié)果如下:
可以看到輸出成功。
設(shè)計(jì)內(nèi)容四:理解和分析文件
1)了解文件的特點(diǎn)和使用方法。
2)監(jiān)控系統(tǒng)狀態(tài),顯示系統(tǒng)中若干部件的使用情況。
3)用圖形界面顯示系統(tǒng)監(jiān)控狀態(tài)。
附錄(代碼):
實(shí)驗(yàn)一:文件拷貝
實(shí)驗(yàn)一:并行程序的運(yùn)行
實(shí)驗(yàn)二:系統(tǒng)調(diào)用
實(shí)驗(yàn)二:系統(tǒng)調(diào)用測試代碼
實(shí)驗(yàn)三:添加模塊
實(shí)驗(yàn)三:模塊測試代碼
實(shí)驗(yàn)四:資源管理器
1
實(shí)驗(yàn)分析:
文件拷貝相對來說比較簡單,主要問題在程序的健壯性上,要充分考慮在文件拷貝過程中可能出現(xiàn)的問題。比如參數(shù)個(gè)數(shù)的合法性,源文件存在性,目的文件的合法性等等問題。
linux下面的圖形庫主要有g(shù)tk和qt兩種,但這兩個(gè)庫沒有本質(zhì)的區(qū)別,都是基于面向?qū)ο蟮母拍詈托盘柕哪P汀W詈筮x定使用gtk來完成本次實(shí)驗(yàn)。
實(shí)驗(yàn)分析:
使用的linux內(nèi)核為2.6.31.12;因?yàn)?.6的內(nèi)核和之前的2.4結(jié)果變化太大,所以老師給的一些參考資料有些已經(jīng)過時(shí),對于2.6內(nèi)核添加系統(tǒng)調(diào)用在網(wǎng)上查了很久,就是2.6本身因?yàn)樾“姹镜淖兓Y(jié)果也有較大的變化,對于最新的內(nèi)核一方面查看內(nèi)核Documentation文件夾下的幫助文檔,一方面參考了Amit Choudhary的Implementing a System Call on Linux 2.6 for i386 才最終將系統(tǒng)調(diào)用添加成功,總結(jié)步驟如下:
①vim /usr/src/linux26/arch/x86/include/asm/unistd_32.h添加#define __NR_mycopycall 337
②vim /usr/src/linux26/include/linux/syscalls.h添加:asmlinkage long sys_mycopycall(char *src,char *des);
③vim /usr/src/linux26/arch/x86/kernel/syscall_table_32.S添加:.long sys_mycopycall
④vim /usr/src/linux26/Makefile修改Makefile,以下參考了Amit Choudhary
Add mycall/ to core-y(Search for regex:core-y.*+=).You will be creating this directory.This direstory will contain the source file,header file and Makefile for our system call.
⑤root@ubuntu:/usr/src/linux26# mkdir mycopycall創(chuàng)建mycopycall目錄,并將寫的系統(tǒng)調(diào)用的源碼放在這里
⑥vim /usr/src/linux26/mycopycall/Makefile創(chuàng)建Makefile文件,只需添加obj-y := mycopycall.o
⑦好了,可以開始編譯內(nèi)核了
實(shí)驗(yàn)分析:
模塊的添加主要是按格式寫代碼,沒有什么新的東西。由于是實(shí)現(xiàn)簡單的字符設(shè)備,我主要在模塊中定義了一個(gè)buffer,用來實(shí)現(xiàn)數(shù)據(jù)的存儲,以便實(shí)現(xiàn)設(shè)備的讀寫。
主要注意幾個(gè)步驟:
①、編寫代碼并編譯。參考了2.6內(nèi)核的文檔使用make -C /usr/src/linux26 M=`pwd`命令進(jìn)行。
②、編譯成功后使用insmod ./pbdev.ko在當(dāng)前系統(tǒng)中插入模塊。
③、使用mknod /dev/pbdev c 251 0在/dev目錄下建立一個(gè)鏈接文件,其中251是設(shè)備號,0代表字符設(shè)備。
④
總結(jié)
以上是生活随笔為你收集整理的华科计算机课程设计,华中科大操作系统课程设计报告(附源码).doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机二级ppt为客户制作演示文稿,计算
- 下一篇: 生椰子肉的功效与作用、禁忌和食用方法