期刊VIP學(xué)術(shù)指導(dǎo) 符合學(xué)術(shù)規(guī)范和道德
保障品質(zhì) 保證專業(yè),沒有后顧之憂
來源:期刊VIP網(wǎng)所屬分類:軟件開發(fā)時(shí)間:瀏覽:次
摘要:Linux操作系統(tǒng)是UNIX操作系統(tǒng)的一種克隆系統(tǒng),它誕生于1991 年的10 月5 日(這是第一次正式向外公布的時(shí)間)。以后借助于Internet網(wǎng)絡(luò),并通過全世界各地計(jì)算機(jī)愛好者的共同努力,已成為今天世界上使用最多的一種UNIX 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長(zhǎng)。文章發(fā)表在《電力信息化》上,是軟件工程師論文發(fā)表范文,供同行參考。
關(guān)鍵字:Linux2.6,設(shè)備驅(qū)動(dòng)程序,PCI9656
1 引言
Linux操作系統(tǒng)因?yàn)槠涓咝А踩⒖蓜?dòng)態(tài)加載及源代碼開放等特點(diǎn),深受設(shè)備驅(qū)動(dòng)程序開發(fā)人員的喜愛。系統(tǒng)內(nèi)核大部分獨(dú)立于底層硬件運(yùn)行,用戶無需關(guān)心硬件問題,而用戶操作是通過一組標(biāo)準(zhǔn)化的調(diào)用來完成。設(shè)備驅(qū)動(dòng)程序的任務(wù)是將這些調(diào)用映射到作用于實(shí)際硬件設(shè)備的特定操作上,該編程接口能夠使得驅(qū)動(dòng)程序獨(dú)立于內(nèi)核的其他部分來搭建,在需要時(shí)才動(dòng)態(tài)加載到內(nèi)核。這種模塊化的特點(diǎn),使得Linux設(shè)備驅(qū)動(dòng)程序的編寫過程變得清晰簡(jiǎn)單。
目前,為滿足日益龐大的數(shù)據(jù)處理需要,基于64位PCI總線接口設(shè)備的研究開發(fā)顯得尤為重要。因而本文將基于PLX公司推出的PCI總線接口芯片PCI9656,設(shè)計(jì)開發(fā)在Linux2.6內(nèi)核下的設(shè)備驅(qū)動(dòng)程序,進(jìn)而對(duì)2.6內(nèi)核的內(nèi)存和中斷管理機(jī)制進(jìn)行分析研究。
2 Linux2.6與2.4內(nèi)核的比較
2.1 系統(tǒng)穩(wěn)定性
為了徹底防止對(duì)正在被使用的內(nèi)核模塊進(jìn)行錯(cuò)誤操作,2.6內(nèi)核在加載和導(dǎo)出內(nèi)核模塊方面都較2.4內(nèi)核進(jìn)行了改進(jìn),避免了用戶執(zhí)行將導(dǎo)致系統(tǒng)崩潰的操作,例如強(qiáng)制刪除模塊等。同時(shí),當(dāng)驅(qū)動(dòng)程序需要在多個(gè)文件中包含頭文件時(shí),不必定義宏__NO_VERSION__來檢查內(nèi)核的版本。
2.2 統(tǒng)一設(shè)備模型
統(tǒng)一設(shè)備模型的創(chuàng)建是2.6內(nèi)核最重要的變化之一。它促進(jìn)了模塊接口的標(biāo)準(zhǔn)化,其目的是更好地控制和管理設(shè)備,主要包括:更準(zhǔn)確地確定系統(tǒng)設(shè)備,更高效的進(jìn)行電源管理以及改進(jìn)的系統(tǒng)總線結(jié)構(gòu)管理。
3 Linux2.6內(nèi)核下PCI設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)
3.1 PCI設(shè)備驅(qū)動(dòng)程序中核心數(shù)據(jù)結(jié)構(gòu)
在2.6內(nèi)核下使用file_operations數(shù)據(jù)結(jié)構(gòu),來建立設(shè)備驅(qū)動(dòng)程序中的函數(shù)與主設(shè)備號(hào)(major number)之間的對(duì)應(yīng)關(guān)系。該數(shù)據(jù)結(jié)構(gòu)中包含了指向驅(qū)動(dòng)程序內(nèi)部大多數(shù)函數(shù)的指針,描述了虛擬文件系統(tǒng)如何操作一個(gè)打開的外圍設(shè)備。因而file _operations結(jié)構(gòu)是驅(qū)動(dòng)程序向內(nèi)核其他部分提供的一個(gè)統(tǒng)一的標(biāo)準(zhǔn)設(shè)備接口。
3.2 驅(qū)動(dòng)程序與內(nèi)核和外部設(shè)備間的關(guān)系
(1) 通過Linux提供的系統(tǒng)調(diào)用函數(shù)(例如init_module等)進(jìn)入內(nèi)核,這些函數(shù)在2.6內(nèi)核版本下總共有兩百多個(gè),提供了幾乎所有應(yīng)用程序進(jìn)入內(nèi)核所需要執(zhí)行的操作。
(2) 系統(tǒng)的內(nèi)核函數(shù)都有“sys_”前綴(例如函數(shù)sys_init_module),應(yīng)用程序通過訪問設(shè)備文件系統(tǒng)來調(diào)用這些函數(shù)。這一層主要是“devfs”(device filesystem)文件管理機(jī)制,它是從普通文件和設(shè)備文件抽象出來的一個(gè)文件系統(tǒng)層,完成進(jìn)入具體的設(shè)備文件操作之前的準(zhǔn)備工作。
4.Linux2.6內(nèi)核下內(nèi)存和中斷管理的研究
2.6內(nèi)核應(yīng)用了許多新技術(shù)來實(shí)現(xiàn)對(duì)各類外部設(shè)備驅(qū)動(dòng)程序的更好支持。下面結(jié)合PCI9656驅(qū)動(dòng)程序中的內(nèi)存和中斷管理,進(jìn)一步分析和研究2.6內(nèi)核對(duì)內(nèi)存和中斷進(jìn)行的改進(jìn)和優(yōu)化。
內(nèi)存管理:在Linux內(nèi)存管理器中,頁表保持對(duì)進(jìn)程使用的內(nèi)存物理頁的追蹤,它將虛擬頁映射到物理頁上。系統(tǒng)必須找到映射到該頁的每一個(gè)進(jìn)程,將使用較少的頁置換出去,這樣進(jìn)程中相應(yīng)頁的頁表?xiàng)l目才能被更新。隨著在系統(tǒng)中運(yùn)行的進(jìn)程數(shù)量的增加,將這些頁置換出去的工作量也會(huì)急劇增加。
電子學(xué)術(shù)期刊網(wǎng)友情提示:《電力信息化》雜志于2003年5月正式創(chuàng)刊,是國(guó)家電網(wǎng)公司主管、國(guó)網(wǎng)信息通信有限公司361期刊網(wǎng)主辦的月刊,是電力行業(yè)目前唯一在國(guó)內(nèi)外公開發(fā)行,且反映電力信息化建設(shè)及應(yīng)用的專業(yè)技術(shù)刊物。