<form id="itnzz"><noscript id="itnzz"></noscript></form>

          1. <menuitem id="itnzz"></menuitem>
          2. 成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
            現(xiàn)在位置:范文先生網(wǎng)>理工論文>計算機信息技術(shù)>于PCI9656設(shè)備驅(qū)動程序的Linux2.6內(nèi)核研究

            于PCI9656設(shè)備驅(qū)動程序的Linux2.6內(nèi)核研究

            時間:2022-08-19 05:09:02 計算機信息技術(shù) 我要投稿
            • 相關(guān)推薦

            于PCI9656設(shè)備驅(qū)動程序的Linux2.6內(nèi)核研究

            摘要:本文以64位PCI總線接口芯片PCI9656的設(shè)備驅(qū)動程序為基礎(chǔ),比較了Linux2.6內(nèi)核與2.4內(nèi)核的區(qū)別,設(shè)計與開發(fā)了在Linux 2.6內(nèi)核下PCI9656設(shè)備驅(qū)動程序,進(jìn)而研究了2.6內(nèi)核的內(nèi)存和中斷管理機制。 
            關(guān)鍵字:Linux2.6;設(shè)備驅(qū)動程序;PCI9656 

            1 引言

            于PCI9656設(shè)備驅(qū)動程序的Linux2.6內(nèi)核研究

            Linux操作系統(tǒng)因為其高效、安全、可動態(tài)加載及源代碼開放等特點,深受設(shè)備驅(qū)動程序開發(fā)人員的喜愛。系統(tǒng)內(nèi)核大部分獨立于底層硬件運行,用戶無需關(guān)心硬件問題,而用戶操作是通過一組標(biāo)準(zhǔn)化的調(diào)用來完成。設(shè)備驅(qū)動程序的任務(wù)是將這些調(diào)用映射到作用于實際硬件設(shè)備的特定操作上,該編程接口能夠使得驅(qū)動程序獨立于內(nèi)核的其他部分來搭建,在需要時才動態(tài)加載到內(nèi)核。這種模塊化的特點,使得Linux設(shè)備驅(qū)動程序的編寫過程變得清晰簡單。

            目前,為滿足日益龐大的數(shù)據(jù)處理需要,基于64位PCI總線接口設(shè)備的研究開發(fā)顯得尤為重要。因而本文將基于PLX公司推出的PCI總線接口芯片PCI9656,設(shè)計開發(fā)在Linux2.6內(nèi)核下的設(shè)備驅(qū)動程序,進(jìn)而對2.6內(nèi)核的內(nèi)存和中斷管理機制進(jìn)行分析研究。

            2 Linux2.6與2.4內(nèi)核的比較

            2.1  系統(tǒng)穩(wěn)定性

            為了徹底防止對正在被使用的內(nèi)核模塊進(jìn)行錯誤操作,2.6內(nèi)核在加載和導(dǎo)出內(nèi)核模塊方面都較2.4內(nèi)核進(jìn)行了改進(jìn),避免了用戶執(zhí)行將導(dǎo)致系統(tǒng)崩潰的操作,例如強制刪除模塊等。同時,當(dāng)驅(qū)動程序需要在多個文件中包含<linux/module.h>頭文件時,不必定義宏__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)管理。

            2.3  內(nèi)核基礎(chǔ)設(shè)施

            2.6內(nèi)核為了區(qū)別以.o為擴(kuò)展名的常規(guī)對象文件,將內(nèi)核模塊的擴(kuò)展名改為.ko。相對于2.4內(nèi)核下系統(tǒng)所支持的RAM為4GB而言,2.6內(nèi)核下系統(tǒng)支持更大數(shù)量的RAM,在分頁模式下最高可達(dá)64GB。同時,2.6內(nèi)核優(yōu)化了I/O調(diào)度器,確保不會有進(jìn)程駐留在隊列中過長時間等待輸入/輸出操作,使得I/O操作的響應(yīng)更為迅速。

            2.4  外部設(shè)備

            在2.4內(nèi)核中有約束大型系統(tǒng)的限制,比如支持的每一類設(shè)備的最大數(shù)量為256。而2.6內(nèi)核則徹底地打破了這些限制,可以支持4095種主要的設(shè)備類型,每一個單獨的類型又可以支持超過一百萬個的子設(shè)備。

            3 Linux2.6內(nèi)核下PCI設(shè)備驅(qū)動程序的設(shè)計

            3.1  PCI設(shè)備驅(qū)動程序中核心數(shù)據(jù)結(jié)構(gòu)

            在2.6內(nèi)核下使用file_operations數(shù)據(jù)結(jié)構(gòu),來建立設(shè)備驅(qū)動程序中的函數(shù)與主設(shè)備號(major number)之間的對應(yīng)關(guān)系。該數(shù)據(jù)結(jié)構(gòu)中包含了指向驅(qū)動程序內(nèi)部大多數(shù)函數(shù)的指針,描述了虛擬文件系統(tǒng)如何操作一個打開的外圍設(shè)備。因而file _operations結(jié)構(gòu)是驅(qū)動程序向內(nèi)核其他部分提供的一個統(tǒng)一的標(biāo)準(zhǔn)設(shè)備接口。

            file結(jié)構(gòu)是設(shè)備驅(qū)動程序使用的另一個重要的數(shù)據(jù)結(jié)構(gòu),指示當(dāng)前系統(tǒng)中已打開的文件。它在C語言庫中定義,在調(diào)用內(nèi)核open函數(shù)時創(chuàng)建,并傳遞給在該設(shè)備上進(jìn)行操作的所有函數(shù),直到最后的close函數(shù)。file結(jié)構(gòu)中還包含了指向它所擁有的file_operations結(jié)構(gòu)的指針。

            inode結(jié)構(gòu)由內(nèi)核自動生成,代表已打開文件的描述符,與每個打開的文件一一對應(yīng)。它包含了兩個重要的結(jié)構(gòu)成員:dev_t擴(kuò)展到32位,其中12位主設(shè)備號,20位從設(shè)備號,而cdev用于存儲一個指向字符設(shè)備文件的指針。

            3.2  驅(qū)動程序與內(nèi)核和外部設(shè)備間的關(guān)系

            (1) 通過Linux提供的系統(tǒng)調(diào)用函數(shù)(例如init_module等)進(jìn)入內(nèi)核,這些函數(shù)在2.6內(nèi)核版本下總共有兩百多個,提供了幾乎所有應(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)文件管理機制,它是從普通文件和設(shè)備文件抽象出來的一個文件系統(tǒng)層,完成進(jìn)入具體的設(shè)備文件操作之前的準(zhǔn)備工作。

            (3) 由設(shè)備驅(qū)動程序提供具體的函數(shù),來完成對硬件設(shè)備的各種操作。特別的對于PCI9656來說,就是通過PCI接口對設(shè)備的寄存器和存儲器進(jìn)行訪問操作,例如調(diào)用register_chrdev等函數(shù)來初始化芯片內(nèi)部的狀態(tài)寄存器和配置寄存器。

            3.3  PCI9656芯片的操作流程

            PCI總線是目前最常用的外設(shè)總線之一,Linux的PCI內(nèi)核代碼為PCI設(shè)備驅(qū)動程序的開發(fā)提供了強大的支持。PCI9656的驅(qū)動程序主要包括以下幾個方面:設(shè)備初始化,為PCI芯片分配內(nèi)存資源,實現(xiàn)數(shù)據(jù)的讀寫功能,中斷處理,系統(tǒng)收回內(nèi)存資源,關(guān)閉設(shè)備等。

            4.Linux2.6內(nèi)核下內(nèi)存和中斷管理的研究

            2.6內(nèi)核應(yīng)用了許多新技術(shù)來實現(xiàn)對各類外部設(shè)備驅(qū)動程序的更好支持。下面結(jié)合PCI9656驅(qū)動程序中的內(nèi)存和中斷管理,進(jìn)一步分析和研究2.6內(nèi)核對內(nèi)存和中斷進(jìn)行的改進(jìn)和優(yōu)化。

            4.1  內(nèi)存管理

            在Linux內(nèi)存管理器中,頁表保持對進(jìn)程使用的內(nèi)存物理頁的追蹤,它將虛擬頁映射到物理頁上。系統(tǒng)必須找到映射到該頁的每一個進(jìn)程,將使用較少的頁置換出去,這樣進(jìn)程中相應(yīng)頁的頁表條目才能被更新。隨著在系統(tǒng)中運行的進(jìn)程數(shù)量的增加,將這些頁置換出去的工作量也會急劇增加。

            主站蜘蛛池模板: 无码国产精品一区二区av| 无码毛片一区二区本码视频| 久久久久无码精品国产app| 无码人妻天天拍夜夜爽| 男女猛烈激情xx00免费视频| 亚洲精品成人一二三专区| 午夜高清福利在线观看| 亚洲国产精品日韩av专区| 中文国产成人精品久久不卡 | 精品中文人妻在线不卡| 久久综合九色综合97婷婷| 国产精品亚洲片夜色在线| 人人澡超碰碰97碰碰碰| 国产三区二区| 男人狂桶女人出白浆免费视频 | 吉川爱美一区二区三区视频| 欧美人与动牲交a免费| 我要看特黄特黄的亚洲黄片| A级日本乱理伦片免费入口| 欧美黑吊大战白妞| 中文字幕国产日韩精品| 免费人成再在线观看视频| 国产成人午夜一区二区三区| 国产欧美日韩视频怡春院| 亚洲国产综合自在线另类| 最新精品国偷自产在线| 亚洲成女人图区一区二区| 中文字幕国产精品自拍| 乱妇乱女熟妇熟女网站| 无码伊人久久大杳蕉中文无码| 无码一区二区三区AV免费| 国产美女裸体无遮挡免费视频下载 | 国内精品久久黄色三级乱| 色五开心五月五月深深爱| 日韩中文字幕精品人妻| 国产精品久久久久9999| 在线а√天堂中文官网| 亚洲人成伊人成综合网中文| 亚洲av综合aⅴ国产av中文| 国产成人综合亚洲欧美日韩 | 亚洲天堂av免费在线看|