999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于“Linux內核分析”的教學內容研究與實踐

2009-08-28 09:09:14陳莉君王小銀
計算機教育 2009年14期
關鍵詞:教學改革

陳莉君 梁 琛 王小銀

摘要:開放源代碼Linux為操作系統教學內容研究與改革帶來良好的契機,本文在對Linux內核入門途徑分析的基礎上,給出了分析Linux內核的原理基礎和硬件基礎,并探究了操作系統的執行機制,最后給出了實踐途徑和方法。

關鍵詞:Linux內核;源代碼;教學改革

中圖分類號:G642 文獻標識碼:B

1引言

芬蘭大學生Linus在赫爾辛基大學學習“操作系統”課程時,不滿足于使用教學用操作系統Minix,從著手開發一個簡單的程序開始,到逐步開發顯示器、鍵盤和調制解調器的驅動程序,然后寫了磁盤驅動程序,文件系統,這樣,一個操作系統的原型就形成了。

這個誕生于學生之手的Linux,在Internet這片肥沃的土壤中不斷成長,逐步發展為與Unix、Windows并駕齊驅的實用操作系統。與Windows不同,Linux 與Unix外表相似,但它的窗口向所有人完全敞開,任何想了解其內在機理的愛好者都可以走進其內部世界。

在1999年的春季,我們有幸走進了這個開放的世界,那時分析的是Linux內核2.0版,在閱讀源代碼的基礎上,我們編寫了《Linux操作系統內核分析》一書,該書曾被指定為中科院考博參考書。隨著Linux內核版本的不斷更新,我們又陸續編寫和翻譯了針對Linux內核2.2、2.4及2.6的相關書籍。

Linux內核是由C語言和匯編語言編寫的,其全部源代碼是一個龐大的世界,如何在這龐大而又復雜的世界中抓住主要內容,如何找到進入Linux內部的突破口,又如何能把Linux的源代碼變為自己的所需,并在此基礎上進行內核級程序的開發,很多學過操作系統原理而又想進一步實踐的軟件開發者,對以上問題都有過種種困惑。針對這些問題,在教學的過程中,從教學內容,教學方法以及實踐環節等方面,我們進行了探索和改革。

2Linux內核入門

Linux內核入門是不容易的,它之所以難學,在于龐大的規模和涉及的層面。規模一大就不易現出本來面目,渾然一體,自然不容易找到著手之處;層面一多,就會讓人眼花繚亂,盤根錯節。

Linux源碼研究的方法不同于小規模軟件。這是由于規模和層面決定的,比如說,在語言學習中,可以采取小步快跑的方法,通過一個個小程序和小嘗試,就可以取得漸進的成果,就能從新技術中有所收獲。針對Linux,如果沒有對整體的把握,即使你對某個局部的算法、技術或是代碼再熟悉,也無法將其融入實用。因此,Linux內核入門從以下幾方面著手。

2.1Linux內核整體結構

Linux內核雖然實現和Unix系統有很大不同,但是其結構還基本保持和Unix一致,其中功能與操作系統原理中所涉及到的內容大體一致。

Linux 內核除系統調用外,由5個主要的子系統組成,如圖1所示。

從圖1可以看出,處于中心位置的是進程調度,所有其它的子系統都依賴于它,因為每個子系統都需要掛起或恢復進程。一般情況下,當一個進程等待硬件操作完成時,它被掛起,當操作真正完成時,進程恢復執行。例如,當一個進程通過網絡發送一條消息時,發送進程被掛起,一直到硬件成功地完成消息的發送。其它子系統(內存管理,虛擬文件系統及進程間通信)以相似的理由依賴于進程調度。

2.2硬件基礎

操作系統是一組軟件的集合。但它和一般軟件不同,因為它是充分挖掘硬件潛能的軟件,也可以說,操作系統是橫跨軟件和硬件的橋梁。因此,要想深入解析操作系統內在的運作機制,就必須搞清楚相關的硬件機制——尤其是內存尋址的硬件機制。

操作系統的設計者必須在硬件相關的代碼與硬件無關的代碼之間劃出清楚的界限,以便于一個操作系統很容易地移植到不同的平臺。Linux的設計就做到了這點,它把與硬件相關的代碼全部放在arch(architecture一詞的縮寫,即體系結構相關)的目錄下,在這個目錄下,可以找到Linux目前版本支持的所有平臺,例如,支持的平臺有arm、alpha,、i386、m68k、mips等十多種。在這眾多的平臺中,大家最熟悉的就是X86。因此,首先要了解和熟悉X86與內存管理相關的機制—保護模式機制。

2.3原理基礎

操作系統的原理中主要講述了進程管理、內存管理、文件管理和設備管理。盡管這些原理基于的背景為Unix,但是,因為其要涵蓋更多的操作系統,因此,各部分內容顯得抽象。而在Linux內核源代碼分析中,就是讓這些原理適時地落到實處。

進程管理是操作系統的靈魂,因此要從內核實現的角度分析進程賴以存活的各種數據結構。進程作為一個動態變化的實體,可以從生命歷程的角度說明進程從誕生到死亡的艱難過程,并給出具體的實現函數。

內存作為計算機系統的重要資源,因為其容量的有限和程序規模的不斷擴大,需要從技術上對其容量進行擴充,Linux中對虛擬內存管理的實現建立在分段和分頁的原理之上,具體給出其中的部分源代碼,使學生體會從理論過渡到實踐之間的真實跨越。

3探究操作系統的執行機制

如果說操作系統是資源的管理者,那么歸根結底,操作系統是程序賴以執行的堅實基礎;因為所謂的進程管理,內存管理,文件管理以及設備管理等,都是因為執行程序而引發的。以這樣的大思路為前提,引領學生探究事物本質的興趣。

進程概念的引入是為了執行程序,這是毋庸置疑的。那么,內存管理呢?一個死氣沉沉存放在磁盤上的程序是毫無意義的。程序只有從外存裝入內存一行行執行,才會變得生龍活虎,因此,所謂的文件系統以及內存管理等等都是為程序的執行而服務的。

3.1并發執行之根本

多個程序之所以能夠有條不紊地執行,是因為Linux內核的核心仲裁者調度程序,也就是內核代碼中schedule()函數,鼓勵學生閱讀這一函數,從根本上認識進程調度的過程,從而明白內核為了進程的并發執行而牽引出一系列的相關東西,真正理解圖1中的進程調度所處的核心位置。

3.2內核任務的并發執行

所謂內核任務是指內核態下可以獨立執行的內核例程(一個或多個內核函數),每個內核任務運行時都擁有一個獨立的程序計數器、棧和一組寄存器。一般來說,內核任務包括內核線程、系統調用、中斷服務程序、異常處理程序、下半部等幾類。

如果我們把內核看作不斷對各種請求進行響應的服務器,那么,正在CPU上執行的進程、發出中斷請求的外部設備等就相當于客戶。正如服務器要隨時響應客戶的請求一樣,內核也會隨時響應進程、中斷等的請求。所以說內核中各個任務并不是嚴格按著順序依次執行的,而是相互交錯執行的。搞清楚各種內核任務的執行機制,猶如把學

生從森林中引領出來,使學生體會操作系統執行機制的奧妙。

4動手實踐

內核初學者對內核各個核心子系統有個整體把握,包括它們提供什么樣的服務,為什么要提供這樣的服務,又是怎樣實現的有了初步了解之后,總希望自己寫代碼一試身手。我們的“內核之旅”www.kerneltravel.net網站,填補課堂教學和實踐開發之間的鴻溝。網上發布多期原創專題性電子刊物。針對操作系統愛好者學習Linux之后,苦于無用武之地的現狀,在網站上討論如何進行Linux內核層面上的系統軟件開發。并配以大量有實用價值或指導意義的實驗,深入淺出的教授學生認識Linux內核,學習Linux內核,開發Linux內核。每期都配有相關的實驗和相應的源代碼,供大家下載實踐。實踐內容如下:

(1) 搭建Linux試驗系統實例:學生通過親手構建系統的過程,消除對Linux的恐懼感;

(2) 構建一個簡易操作系統(一個可啟動的操作系統);

(3) 編寫Shell解釋程序;

(4) 編寫自己的系統調用;

(5) 編寫一個內存映射;

(6) 編寫一個內核共享鏈表同步訪問的程序;

(7) 實現一個文件系統;

(8) 編寫自己的中斷系統。

5結束語

“Linux內核分析”是一門引領初學者進入Linux內核的課程,在這樣一條引領的路途上,會遇到各種困難和絆腳石。如果說,龐大的Linux內核源代碼是一片望不到邊的森林,那么,我們教師恰恰就是要給學生以引領,使大家不被茂密森林中的雜草或荊棘所絆倒,為此,我們編寫了《Linux操作系統原理與應用》一書,并建設了配套的Linux內核之旅網站的。另外,針對當前2.6內核,我們陸續在網站發布相應的實驗代碼,同時鼓勵讀者把網站電子雜志部分的實驗代碼移植到2.6,以讓更多的人分享。在Linux內核之旅的討論區http://www.lupaworld.com/bbs/ forum-255-1.html,設有專門解答Linux內核問題的論壇。同時,在作者的技術博客http://linuxkernel.lupaworld.com上,不定期發布與內核相關專題的知識。Linux教學與學習之路漫漫兮,在課堂之外,我們西郵Linux興趣小組www.xiyouLinux.cn在積極主動的學習Linux相關知識。

Linux最本質的思想體現其“自由”和“開放”的思想。自由,意味著世界范圍內的知識共享;而開放,則意味著Linux對所有的人都敞開大門。走入Linux內核,源于我們的興趣,對Linux源代碼的深入分析和研究,源于開源社區良好的氛圍。這種氛圍深深影響了我們,于是,我們對Linux內核源代碼的分析結果也無償的共享于開源社區,希望更多的Linux愛好者分享到我們的成果。

參考文獻:

[1] 陳莉君, 康華. Linux操作系統原理與應用[M]. 北京:清華大學出版社,2006.

[2] ANIEL P. BOVET, MARCO CESATI . 深入理解Linux內核[M].3版. 陳莉君,張瓊聲,張宏偉,譯. 北京:中國電力出版社,2007.

[3] Claudia Salzberg Rodriguez, Gordon Fischer, Steven Smolski. Linux內核編程[M]. 陳莉君,賀炎,劉霞林,譯. 北京:機械工業出版社,2006.

[4] Robert Love. Linux內核設計與實現[M]. 陳莉君,康華,張波,譯. 北京:機械工業出版社,2006.

猜你喜歡
教學改革
完全學分制下選課管理的思考與實踐
考試周刊(2016年76期)2016-10-09 10:08:04
金工實習教育對工科院校創客教育影響分析
考試周刊(2016年76期)2016-10-09 10:04:11
新形勢下小學語文教學方法研究
考試周刊(2016年76期)2016-10-09 08:47:08
譯林版英語教材的人文特點研究
成才之路(2016年26期)2016-10-08 11:33:49
當前農村學校實施“新教育實驗”的研究
成才之路(2016年25期)2016-10-08 10:05:54
構建和改進現代化學校美育工作體系研究
成才之路(2016年25期)2016-10-08 10:04:29
中職學校“生本課堂”的調查研究與實踐
成才之路(2016年25期)2016-10-08 10:03:04
高校三維動畫課程教學方法研究
成才之路(2016年25期)2016-10-08 10:00:36
基于人才培養的技工學校德育實效性研究
成才之路(2016年25期)2016-10-08 09:51:08
現代信息技術在高職數學教學改革中的應用研究
科技視界(2016年20期)2016-09-29 12:59:03
主站蜘蛛池模板: 一区二区三区在线不卡免费| 二级特黄绝大片免费视频大片| 国产高清在线丝袜精品一区| 91无码人妻精品一区二区蜜桃| 国产原创演绎剧情有字幕的| 高清久久精品亚洲日韩Av| 欧美h在线观看| 欧美一级爱操视频| 六月婷婷综合| 性视频久久| 久久久久无码精品| 国产成人艳妇AA视频在线| 国产办公室秘书无码精品| 亚洲欧美自拍视频| 亚洲美女一级毛片| 国产成人AV大片大片在线播放 | 深夜福利视频一区二区| 久久精品国产精品青草app| Aⅴ无码专区在线观看| 在线无码av一区二区三区| 国产sm重味一区二区三区| 日韩麻豆小视频| 国产伦片中文免费观看| 国产精品免费露脸视频| 亚洲欧美不卡| 黄色在线网| 丝袜亚洲综合| 成人av专区精品无码国产| 亚洲天堂首页| 国产第一页免费浮力影院| 国产精品夜夜嗨视频免费视频| 国产综合精品一区二区| 免费看a毛片| 22sihu国产精品视频影视资讯| 在线日韩一区二区| 中文字幕在线永久在线视频2020| 亚洲欧美成人影院| 免费视频在线2021入口| 国产成人h在线观看网站站| 精品欧美日韩国产日漫一区不卡| 亚洲av无码牛牛影视在线二区| 国产地址二永久伊甸园| 蜜芽一区二区国产精品| 久久国产精品麻豆系列| 国产成人无码播放| 日韩精品久久无码中文字幕色欲| 99热这里只有精品在线播放| 在线播放91| 中国一级特黄视频| 久久亚洲高清国产| 国产在线第二页| 欧美成人日韩| 亚洲国产日韩欧美在线| 多人乱p欧美在线观看| 成人精品午夜福利在线播放| 国产精品私拍在线爆乳| 99精品免费欧美成人小视频 | 91香蕉国产亚洲一二三区 | 欧美综合中文字幕久久| 国产精品免费p区| 国产精品成人免费视频99| 99在线国产| 亚洲中文字幕在线精品一区| 国产网站黄| 国产高清在线精品一区二区三区| 国产精品污污在线观看网站| 91福利免费| 国产精选小视频在线观看| h网站在线播放| 91九色国产在线| 国产屁屁影院| 久久一本精品久久久ー99| 久久黄色影院| 亚洲区视频在线观看| 国产精品尤物在线| 国产91丝袜在线播放动漫 | 美女高潮全身流白浆福利区| 国产日韩精品欧美一区灰| 啪啪国产视频| 久久精品最新免费国产成人| 日韩免费毛片视频| 国产综合亚洲欧洲区精品无码|