2012操作系統(tǒng)課程設(shè)計.ppt_第1頁
2012操作系統(tǒng)課程設(shè)計.ppt_第2頁
2012操作系統(tǒng)課程設(shè)計.ppt_第3頁
2012操作系統(tǒng)課程設(shè)計.ppt_第4頁
2012操作系統(tǒng)課程設(shè)計.ppt_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,文化學(xué)院信息系李勝利,操作系統(tǒng)課程設(shè)計,2,操作系統(tǒng)課程設(shè)計2012級,3,內(nèi)容介紹,設(shè)計目的設(shè)計內(nèi)容實施方法和要求時間表咨詢,4,設(shè)計目的,了解如何使用Linux操作系統(tǒng),了解Linux系統(tǒng)內(nèi)核代碼結(jié)構(gòu)如何實現(xiàn)實例操作系統(tǒng),5設(shè)計目的設(shè)計內(nèi)容實施方法和時間表輔導(dǎo),6,7,內(nèi)容設(shè)計(2),使用Linux的系統(tǒng)調(diào)用內(nèi)容創(chuàng)建C節(jié)目,使用檔案系統(tǒng)的系統(tǒng)調(diào)用實現(xiàn)文本文件顯示功能。8,需要熟悉添加設(shè)計內(nèi)容(3)、系統(tǒng)調(diào)用的方法內(nèi)容,添加新的系統(tǒng)調(diào)用以編寫使用新系統(tǒng)調(diào)用功能的應(yīng)用程序。9,設(shè)計內(nèi)容(4),需要了解和分析/了解proc檔案內(nèi)容/了解proc文件的特性和使用情況監(jiān)控系統(tǒng)狀態(tài),使用系統(tǒng)中多個

2、部件的使用情況顯示圖形界面顯示系統(tǒng)監(jiān)控狀態(tài),10,設(shè)計內(nèi)容(5),需要了解和了解文件系統(tǒng)設(shè)計方法更復(fù)雜的方法:以庫檔案格式實現(xiàn),11,設(shè)計內(nèi)容(6),選擇,12,內(nèi)容1-4內(nèi)容5內(nèi)容5,其中1個選擇,13,內(nèi)容介紹,設(shè)計目的設(shè)計內(nèi)容實施方法和日程輔導(dǎo)要求,14,實施方法和要求,每個學(xué)生必須獨立完成課程設(shè)計內(nèi)容用機器考試示范完成系統(tǒng),回答老師的問題。提交文本課程設(shè)計報告,包括調(diào)試唱片和節(jié)目列表(包括注釋)。提交時間:2015.3.20 B519室,15,實施方法和要求(繼續(xù)),幫助您學(xué)習(xí)和學(xué)習(xí)現(xiàn)有的優(yōu)秀知識!反對全面復(fù)制,不要深入了解!吸收和消化他人的經(jīng)驗,設(shè)計自己的課程!16,內(nèi)容介紹,設(shè)計目

3、的設(shè)計內(nèi)容實施方法和要求日程咨詢,17,課程設(shè)計時間:課程分配機器時間評估現(xiàn)場檢查時間:2周星期天,日程,18,聯(lián)系方式,辦公室電話19,內(nèi)容介紹Linux系統(tǒng)每個版本由三個用點分隔的數(shù)字描述。前兩個數(shù)字表示版本號,第三個數(shù)字表示版本號(例如2.4.20)。如果第二個數(shù)字是偶數(shù),則表示穩(wěn)定的內(nèi)核。否則,表示正在開發(fā)的內(nèi)核。穩(wěn)定版本的發(fā)行版主要用于更正用戶報告的錯誤,但實現(xiàn)內(nèi)核的主要算法和數(shù)據(jù)結(jié)構(gòu)基本上保持不變。但是,開發(fā)版本之間可能存在很大的差異。22,Linux系統(tǒng)上的公共目錄,檔案目錄樹結(jié)構(gòu)樹結(jié)構(gòu)公共目錄:/dev Linux上的所有設(shè)備檔案(例如,/dev/hd

4、a表示第一個物理IDE硬盤)。/etc系統(tǒng)管理所需的配置文件和子目錄。/lib系統(tǒng)中最基本的動態(tài)鏈接孔劉庫,幾乎所有應(yīng)用程序都需要。23、Linux系統(tǒng)上的公共目錄(繼續(xù))、/usr應(yīng)用程序節(jié)目和文件幾乎存儲在牙齒目錄中。它包含開發(fā)和編譯以下子目錄: /usr/include應(yīng)用程序節(jié)目所需的頭文件/usr/lib常用動態(tài)鏈接孔劉庫和靜態(tài)存儲庫/usr/local最終用戶目錄,其中軟件是/usr/man幫助文檔文檔的最佳存儲目錄/usr/每個子目錄都表示CPU類型。例如,i386是英特爾CPU和兼容體系結(jié)構(gòu)的子目錄。車手所有驅(qū)動程序;每個驅(qū)動程序占用的子目錄與/block編譯塊驅(qū)動程序嵌入的內(nèi)

5、核所需的大多數(shù)頭文件相同。與平臺無關(guān)的頭文件位于include/linux子目錄下,英特爾CPU相關(guān)頭文件位于include/asm-i386子目錄下。25,Linux系統(tǒng)的核心源代碼(繼續(xù)),Linux核心源代碼還包括:Init包含內(nèi)核的初始化代碼,它包含兩個文件:main.c和version.c。這是研究內(nèi)核如何工作的好起點。26,Linux系統(tǒng)的核心源代碼(繼續(xù)),mm:所有CPU體系結(jié)構(gòu)無關(guān)的記憶體管理代碼(如頁面存儲管理中的內(nèi)存分配和釋放等),體系結(jié)構(gòu)相關(guān)記憶體管理代碼位于arch/*/mm/。Kernel:的主要核心代碼牙齒目錄中的文件實現(xiàn)了大多數(shù)Linux系統(tǒng)的內(nèi)核函數(shù),最重要的

6、文件屬于進程調(diào)度sched.c。同樣,體系結(jié)構(gòu)相關(guān)代碼位于arch/*/kernel中。27,課程設(shè)計咨詢,Linux系統(tǒng)相關(guān)知識以Redhat Linux 9.0為例,添加系統(tǒng)調(diào)用以添加驅(qū)動程序/proc檔案分析,28,同時創(chuàng)建進程,pid=fork():子進程。返回值:0從子進程返回,0從父進程返回exit進程本身結(jié)束,進入僵化狀態(tài),但保留了ask_struct結(jié)構(gòu)。Wait()等待進程終止(從父進程調(diào)用)。以運行exec()執(zhí)行節(jié)目(檔案)、29、課程設(shè)計課外、有關(guān)Linux系統(tǒng)的知識Redhat Linux 9.0為例,添加系統(tǒng)調(diào)用以添加驅(qū)動程序/proc檔案分析。用戶可以通過系統(tǒng)調(diào)用

7、命令從自己的應(yīng)用程序中調(diào)用。系統(tǒng)調(diào)用和常規(guī)函數(shù)調(diào)用的區(qū)別系統(tǒng)調(diào)用核心狀態(tài)操作系統(tǒng)核心使用常規(guī)函數(shù)調(diào)用用戶狀態(tài)庫或用戶提供的、31、添加系統(tǒng)調(diào)用(繼續(xù))、Linux系統(tǒng)調(diào)用機制int 0 X80寄存器中的相應(yīng)值轉(zhuǎn)到內(nèi)核的預(yù)定義代碼。轉(zhuǎn)到系統(tǒng)調(diào)用的總?cè)肟趕ystem_call,以確定系統(tǒng)調(diào)用編號。系統(tǒng)調(diào)用包括宏、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用入口。32,添加系統(tǒng)調(diào)用(繼續(xù)),創(chuàng)建添加到step _ 1源代碼添加內(nèi)核的源節(jié)目,函數(shù)名稱以sys_開頭。例如:對于mycall(int num),請在/usr/src/linux/kernel/sys.c文件中輸入ASM linkage intsys _ my ca

8、ll(;/牙齒系統(tǒng)調(diào)用連接整數(shù)值、33、系統(tǒng)調(diào)用追加(繼續(xù))、step _ 2新系統(tǒng)調(diào)用,以通知內(nèi)核剩馀部分存在系統(tǒng)調(diào)用。為此,請編輯兩個檔案/usr/src/Linux/include/ASM-i386/unistd . h系統(tǒng)調(diào)用列表(為每個系統(tǒng)調(diào)用分配唯一的編號)define _ NR _,其中Nnn:與系統(tǒng)調(diào)用相對應(yīng)初始化/usr/src/Linux/arch/i386/kernel/entry . s sys _ call _ table(添加指向新內(nèi)核函數(shù)的指針)。long symbol步驟_3 Linux內(nèi)核重新配置進入根目錄/usr/src/linux目錄并檢查內(nèi)核重新配置#m

9、ake config /基于文本的現(xiàn)有配置文件#make dep /內(nèi)核源代碼文件的相關(guān)性和完整性# make clean Make步驟_4內(nèi)核重新啟動將/usr/src/Linux/arch/i386/boot/bzImage復(fù)制到/boot/BZ image配置啟動文件如果使用lilo,則添加/etc/新引導(dǎo)內(nèi)核iiidf命令可用添加新引導(dǎo)內(nèi)核title Linuxtest root (hd0,4)內(nèi)核/引導(dǎo)/bzimage rorot=/dev/HD a5 initrd/boot/initrd-;步驟_5使用新系統(tǒng)調(diào)用應(yīng)用程序節(jié)目app.c中新添加的系統(tǒng)調(diào)用mycall:宏說明:_ sy

10、scalln (parameters): n表示系統(tǒng)調(diào)用所需的參數(shù),parameters是參數(shù)。在上述巨集中,第一個參數(shù)int表示傳回值類型,而第二個參數(shù)mycall是函數(shù)名稱。第三個和第四個分別用于指定參數(shù)的類型和名稱。編譯gcc o app app.c,37,課程設(shè)計咨詢,Linux系統(tǒng)相關(guān)知識以Redhat Linux 9.0為例,添加系統(tǒng)調(diào)用附加驅(qū)動程序/proc檔案分析,38,添加驅(qū)動程序,內(nèi)核模塊LKM Loadable Kernel Modules Linux Linux為了解決牙齒問題,引入了模塊機制,可以在內(nèi)核中動態(tài)添加或刪除模塊。39,添加驅(qū)動程序(繼續(xù)),初始化模塊實現(xiàn)機

11、制模塊int init _ module();模塊刪除intcleanup _ module()并使用Unsigned long sys _ create _ module(char * name,Unsigned long size);/內(nèi)存重新分配int sys _ delete _ module(char * name);移除int sys _ query _ Module(constchar * name、intwhich、void * buf、size _ tbufsize、size _)/驅(qū)動程序附加模塊編程實例hello.c源編譯gcc d module d _ kernel _

12、-I/usr/src/Linux _ 2 . 4 . 20-8/include-c hello實際I/O指向文字設(shè)備鼠標(biāo)、鍵盤等。塊設(shè)備B使用系統(tǒng)內(nèi)存區(qū)域作為緩沖區(qū),在用戶進程可以滿足用戶對設(shè)備請求的要求時返回請求數(shù)據(jù),否則調(diào)用請求函數(shù)以執(zhí)行實際I/O操作。例如:網(wǎng)絡(luò)設(shè)備(如硬盤、軟盤、CD-ROM)、44、添加設(shè)備車手(繼續(xù))、一組具有驅(qū)動程序駐留內(nèi)存權(quán)限的孔劉庫,以及低級硬件處理例程。每個設(shè)備文件包含設(shè)備編號、45、添加驅(qū)動程序(繼續(xù)),以及設(shè)備驅(qū)動程序的功能初始化和釋放設(shè)備的設(shè)備編號主設(shè)備編號。將數(shù)據(jù)從內(nèi)核傳輸?shù)接布挠布x取數(shù)據(jù)。讀取應(yīng)用程序發(fā)送到設(shè)備文件的數(shù)據(jù)和回顯應(yīng)用程序請求的數(shù)

13、據(jù)。檢測和處理設(shè)備中出現(xiàn)的錯誤。46,添加驅(qū)動程序(繼續(xù)),Linux系統(tǒng)使用固定的入口點集實現(xiàn)設(shè)備驅(qū)動功能。開放式入口點:打開設(shè)備。Open子程序必須執(zhí)行要執(zhí)行的I/O操作(如清除緩沖區(qū))所需的準備工作。關(guān)閉入口點:關(guān)閉設(shè)備。Read入口點:從設(shè)備讀取數(shù)據(jù)。Write入口點:將數(shù)據(jù)寫入設(shè)備。Ioctl入口點:執(zhí)行讀取、寫入以外的操作。Select入口點:檢查數(shù)據(jù)是否可讀,或者是否可用于寫入設(shè)備。47,添加驅(qū)動程序(繼續(xù)),入口點采用以下數(shù)據(jù)結(jié)構(gòu)實現(xiàn):48,添加驅(qū)動程序(繼續(xù)),注冊設(shè)備:向系統(tǒng)注冊設(shè)備和驅(qū)動程序的入口點intregister _ unsigned int manager(chrdev)/向系統(tǒng)的字符設(shè)備表注冊字符設(shè)備/major:所需的設(shè)備編號/name:設(shè)備名稱/fops:注

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論