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

麒麟OS環境下基于Qt的驅動程序學習系統①

2021-03-19 06:37:36王雪文蘭雨晴
計算機系統應用 2021年3期
關鍵詞:功能模塊信號用戶

王雪文,劉 杰,蘭雨晴

1(首都師范大學 信息工程學院,北京 100048)

2(北京航空航天大學 計算機學院,北京 100191)

3(麒麟軟件有限公司,北京 100190)

1 引言

2018年10月,倪光南院士在首屆新智慧城市建設峰會上,再次提到發展國產操作系統的重要性.他提到,“網絡信息與網絡安全越來越具備時代特征,自主可控替代變得尤為重要”.2020年3月20 號,在麒麟軟件“遨天”計劃發布會上,倪光南強調,在構建安全可控的國產信息技術體系過程中,操作系統是軟件之魂,大國重器.麒麟OS是基于Linux的二次開發,Linux kernel是整個操作系統的最底層,也是操作系統最基礎的部分,OS是不能夠直接控制硬件的,設備驅動是操作系統和硬件設備間的粘合劑,沒有驅動程序大多硬件設備無法工作,驅動程序在內核中占據約50%的代碼,起著至關重要的作用.眾所周知,驅動程序很難開發和調試.這對硬件產品的發布具有負面影響,因為上市時間通常由驅動程序開發和驗證計劃控制[1].在這樣的形勢下麒麟操作系統需要大量的新進內核驅動程序維護和開發人員,但麒麟OS 下還沒有供研發人員和用戶使用的驅動程序學習軟件.本文旨在研究、設計和開發麒麟OS 環境下基于Qt的內核驅動程序學習系統.此系統采用SQLite 數據庫、FTP 服務器、HTTP和TCP協議、Qmedia 視頻框架、SQLTableModel 表格模型、交叉編譯等,在驅動程序信息提取部分,借助多模式串匹配AC 算法,為使算法的執行時間減少,提出了一種改進的AC 算法簡稱為S_AC.此系統有效彌補了驅動程序學習部分的短缺,經驗證系統能穩定運行.麒麟OS 環境下基于Qt的內核驅動程序學習系統,能體現出其巨大的價值,降低企業新人的學習周期,能夠節省工程師對內核驅動程序的維護時間,降低企業運營成本.更深一層次講,有助于推進國產操作系統版本的發布和維護,從而有利于國產操作系統的推廣和普及,更好的保障國家信息、金融、國防等行業的安全,使網絡信息與網絡安全越來越具備時代特征,實現真正的自主可控、安全可靠.

2 相關簡介

2.1 國產操作系統、麒麟OS 簡介

為保證國家信息安全,必須大力發展自主可控技術,即信息系統從硬件到軟件都是自主研究、創造、開發、維護,從而實現真正的信息安全可控.發展國產操作系統是勢在必行,很有前景的工作,發展國產操作系統是一件利國利民、大有裨益的事業.現在中美貿易摩擦局勢緊張,眾所周知從2018年到現在中美一直打貿易戰,美國針對中國的一些制造業以及高科技產業加收高額關稅,對中國的一些企業影響較大,比如華為,阿里巴巴等大公司,特朗普曾說,美國最不能接受的事情是在高科技產業上被中國取代或反超.有了真正屬于自己的操作系統,我們在很多方面就可以不用受制于人,可以保證我們的金融、國防、信息等行業的安全.20世紀90年代初,國家有關部門就開始倡導發展自主操作系統,國產操作系統企業努力了多年,目前在產業規模、支撐應用能力等多個方面有了很大的提高[2].

麒麟OS是名氣較大和使用人數最多的國產操作系統.據統計麒麟OS 已經連續八年國內Linux 市場占有率第一.麒麟操作系統系列產品主要以操作系統技術為核心,安全可信為特色,其產品已經在政府、國防、金融、教育、財稅、公安、審計、交通、醫療、制造等行業得到深入應用,應用領域涉及我國信息化和民生各個方面,多個領域已經進入核心應用部分.

麒麟操作系統具有高安全、高可靠、高可用、跨平臺以及強大的中文處理能力等優點,被越來越多的用戶所接受.2020年3月麒麟軟件發布了“5年‘遨天’行動計劃”,旨在打造國家操作系統的最強力量,持續為用戶提供高質量服務,讓操作系統帶動我國信息產業市場規模和技術創新的發展.麒麟“遨天”行動將帶動萬億產業規模,服務國家關鍵基礎設施建設,推動網安產業變革進步,用五年時間,培育一支規模逾萬人的自主操作系統精英團隊,積極推動聯合創新和開放發展,走一條內生安全、融入移動、注重體驗、支撐體系的特色發展道路.麒麟OS 作為國內領先國產操作系統,在促進基礎軟件國產化以及信息技術自主可控方面義不容辭.

在操作系統方面,暫時還做不到完全自主開發,也沒有這個必要,開源Linux 內核功能完善,安全性更強[3],多用戶多任務獨立運行,具有良好的用戶界面,設備獨立性強,同時具有良好的可移植性.開源Linux是一個很好的基礎,針對它進行二次開發,可以給我們節省不少人力和財力.中國工程院院士倪光南曾表示,國產操作系統的競爭力很大程度上取決于其生態系統的建設.其實和國產芯片一樣,包括麒麟OS 在內的國產操作系統面臨的不僅是技術問題,更重要的是生態.如果生產出的OS 沒有生態支持,就很難推廣.所以接下來需要大力發展態,適配更多的軟硬件,并加大自主創新,為開源社區貢獻更大的力量,同時增加我們在開源基金會、開源社區的話語權.

2.2 內核驅動簡介

內核,是一個操作系統的核心,是操作系統的基礎,它負責整個硬件的驅動,以及提供各種系統所需的核心功能.計算機真正工作的東西其實是硬件,如果內核不認識某個最新的硬件,那么硬件也就無法被驅動,計算機也就無法使用該硬件[4].

設備驅動程序(device driver),是一種可以使計算機和設備進行相互通信的特殊程序.一般而言,驅動程序負責以下3 個任務:(1)配置和管理一個或多個設備;(2)將來自內核的請求轉換為對硬件的請求;(3)將結果從硬件傳遞到內核.

內核代碼3000 多萬行,其中驅動程序占了大約50%的代碼.正是因為驅動程序的重要性以及其相對較難開發的特點,國內外越來越多專家、學者對Linux內核及設備驅動投入大量精力研究.清華大學信息科學與技術國家實驗室的Bai 等[5]提出了從原始被動驅動程序代碼到自動生成高效的主動驅動程序的方法AutoPA,AutoPA 使用源代碼系統來實現驅動程序轉換,還使用改進的主動驅動程序體系結構來減少性能下降.驅動程序對于操作系統來說至關重要.

3 驅動程序學習系統的設計及實現

3.1 系統總體結構設計

系統總體結構如圖1所示,系統分為展示層、功能層、數據層.其中,展示層即Qt 界面層,多個UI 用來展示界面信息;功能層主要是8 大功能模塊:網絡請求、遠程文件下載與上傳、內核驅動一般架構、驅動詳細分類、驅動學習機理、視頻學習、具體驅動、設置(計算機信息和系統升級檢測).數據層主要用于服務器學習文件和視頻文件的存儲,以及SQLite、MySQL數據庫中內核驅動程序信息、驅動程序詳細分類的存儲.在展示層通過點擊功能按鈕,觸發Qt的信號和槽機制,點擊按鈕時會發出一個或多個信號,當信號發出時,與之相連的槽函數會自動回調,從而完成展示層與功能層的連接,將每個點擊事件、滾動事件等與各個功能模塊貫通.數據層與各功能模塊密不可分,用來存儲各個功能模塊的數據信息,比如具體驅動模塊的幾百條驅動信息存儲在SQLite 數據庫,共享的驅動程序學習文件以及較大的視頻學習文件存儲在遠程FTP 服務器上,當用戶需要時則可進入對應功能模塊進行下載查看.數據層的數據信息通過各功能模塊加工、改造間接展現在展示層的UI 界面上,以便用戶查看.

圖1 系統總體結構圖

開發流程圖如圖2所示,需求分析是軟件計劃階段的重要活動,也是軟件生存周期中的一個重要環節,在設計驅動程序學習系統之前,首先要做的就是需求分析,確定系統實現的功能,完成的工作.系統設計包括架構設計、功能設計、應用程序接口設計等,在系統設計過程中首先確定本發明的架構,架構圖是頂層設計,如果沒有頂層設計,統一合理地把軟件的功能需求和非功能需求分配到軟件部件當中,那么最后將不是一個好的軟件.其次是功能設計,功能設計根據系統的需求將功能落地,再次是應用程序接口設計.再就是編碼設計,即編程實現,為了適應X86、ARM、MIPS三種架構平臺,需要交叉編譯腳本,進行交叉編譯.最后是應用部署,包括部署、測試和優化設計,在本地機器上安裝,進行測試,根據實際問題反饋,然后優化設計,再進行安裝測試,直到最優.

圖2 系統開發流程圖

3.2 系統功能模塊設計

系統的功能圖如圖3所示,該驅動程序學習系統的軟件部分包含網絡請求、遠程文件下載與上傳、內核驅動一般架構、驅動詳細分類、驅動學習機理、視頻學習、具體驅動、設置(計算機信息和系統升級檢測)8 大功能模塊,以下具體介紹各個模塊的作用以及實施機制.

圖3 系統功能模塊

3.2.1 遠程文件上傳與下載模塊主要功能及實現機制

遠程文件的上傳與下載模塊有兩個子功能模塊,分別是學習資料的下載和學習筆記的上傳,具體實施是創建FTP 服務器賬號和密碼,在服務器上創建學習資料庫用于用戶選擇下載所需的驅動學習資料,創建用戶個人庫,用于用戶學習筆記等文件的存儲.遠程文件的上傳與下載模塊的Qt 界面設計如圖4所示.用戶通過服務器地址、用戶名和密碼登錄FTP服務器,建立FTP的連接,在Qt 界面的Tree Widget控件中顯示FTP 服務器上可以公用下載的資源,同時可以顯示資源文件名稱、大小、擁有者、所屬組以及修改日期等.用戶選好資料點擊下載按鈕,下載到本地計算機,通過Progress Bar 控件可以顯示下載進度,選擇本地的學習筆記,通過點擊上傳按鈕,上傳至服務器的用戶個人空間,同時Progress Bar 控件顯示上傳進度.

圖4 遠程文件的上傳與下載模塊的Qt 界面

下面是連接FTP 服務器的代碼,先通過服務器地址和端口號建立連接,再通過用戶名和密碼進行登錄.

下面代碼是下載按鈕的槽函數,下載前先進行編碼轉換,因為文件名可能是中文,然后通過文件名進行下載.

3.2.2 驅動學習模塊主要功能及實施機制

驅動學習機理模塊包含驅動程序調試技術、內核配置及對應的功能、驅動程序編寫相關知識3 個子模塊,各子模塊的內容通過Text Browser 控件顯示,方便用戶瀏覽.其中驅動程序調試技術包括內核追蹤kgdb、打印調試printk、調試工具strace 等,kgdb、printk、strace 等都是常用的內核開發及維護的調試技術,但對于新進開發人員來說并不那么容易掌握,網上資源零亂且有限,該模塊對各個調試技術有具體介紹和應用舉例,以便用戶學習.

內核配置及對應功能子模塊包括內核常用配置及相應注解,以及每項配置的作用,用戶通過此功能模塊可以了解并掌握常用內核配置,以便在實際操作中運用.

驅動編寫子模塊包括驅動程序的初始化、驅動程序的注冊、探測函數、驅動程序的加載和卸載,同時還有關于MakeFile 文件編寫的介紹.

3.2.3 內核驅動一般架構模塊主要功能及實施機制

內核驅動一般架構模塊功能設計如圖5所示,在此功能模塊中繪制內核的一般架構圖,包含用戶空間、內核空間、硬件部分,點擊詳細介紹按鈕,觸發點擊事件,進入點擊事件槽函數,用戶可以看到架構圖中系統調用接口、進程管理、內存管理、虛擬文件系統、網絡接口、進程間通信、塊設備、字符設備、網絡設備以及設備驅動程序等的詳細介紹,有助于用戶深入理解內核驅動一般架構圖.

圖5 內核驅動一般架構模塊功能設計

3.2.4 具體驅動模塊主要功能及實施機制

具體驅動模塊包含內核中幾百種驅動程序的驅動程序名稱、文件路徑、功能描述、注冊函數、程序執行流程等詳細信息,這些數據信息存儲在數據層的SQLite數據庫,此模塊用到了SQLTableModel 表格模型以及視圖,用于顯示和處理數據庫數據.下面代碼的功能是輸入驅動程序名稱,查詢某個具體驅動的詳細信息.

3.2.5 視頻學習模塊主要功能及實施機制

視頻學習模塊,將驅動程序開發的基礎知識的相關視頻,存儲到FTP 服務器上,用戶點擊視頻學習,程序將自動連接服務器獲取相關視頻,并加載到Qt 視頻界面中的視頻播放列表,用戶通過鼠標點擊觸發事件,選擇播放的視頻,在此模塊中用到了Qt的事件系統-鼠標事件、定時器、信號和槽機制等.下面代碼是此模塊各個信號和槽函數的connect()連接.

3.2.6 網絡請求模塊主要功能及實施機制

網絡請求模塊,主要功能是請求網絡,確認網絡是否連接,是由QNetWorkRequest 類表示.下面是判斷網絡是否連接的代碼,能ping 通百度說明網絡已連接,通過QTable 顯示.

3.2.7 驅動詳細分類模塊主要功能及實施機制

內核中有成百上千個驅動程序,但這些驅動不是雜亂無章而是有規則分類的,此模塊包含108 類驅動程序的功能描述,便于用戶分類、查看和學習.用SQLite 數據庫存儲這108 類驅動程序的信息.圖6是驅動詳細分類模塊的數據庫設計.

圖6 驅動詳細分類模塊的數據庫設計

3.2.8 設置模塊主要功能及實施機制

設置模塊包含計算機信息和系統升級檢測兩個子模塊.其中升級檢測模塊,將系統的新版本放在服務器上,同時編寫一個JSON 文件,里面存放新舊版本的信息,包含版本號、程序下載地址、更新時間版本說明等,Qt 程序通過解析JSON 文件,比對版本號,確定是否有更新,彈出更新對話框,用戶選擇更新與否,此模塊用到了Qt 技術的網絡編程、JSON 解析、信號的自動連接等.計算機信息模塊通過system()調用、Linux管道機制實現對系統信息的獲取,包括計算機名稱、本地IP和用戶名、MAC 地址、CPU 信息、處理器個數、類型及版本等.圖7是計算機信息模塊設計圖.

圖7 計算機信息展示界面設計圖

4 關鍵技術分析與闡述

4.1 Qt的信號與槽機制

在系統設計中用到了Qt的信號和槽機制、事件機制、GUI 策略、數據處理等技術,最終完成驅動程序學習系統的設計.信號和槽機制是Qt的核心特征,可用于兩個對象之間的通信.當某個事件發生時比如點擊事件,會發出一個信號,當信號發出時,與之相連的槽函數會自動回調.圖8為Qt的信號和槽機制.

圖8 Qt的信號和槽機制

信號和槽機制的特點如下:

⑴一個信號可以和多個槽相連,多個信號也可以與一個槽相連;

⑵信號也可以連接到信號.當發出一個信號時,將觸發另一信號;

⑶一個類的信號可以和其他類的信號相連.

以下代碼是視頻學習模塊中請求網絡讀取數據的代碼.

代碼中connect(manager,SIGNAL(finished(QNetwork Reply*)),this,SLOT(replyFinished(QNetworkReply*)))將信號finished (QNetworkReply*)與槽replyFinished(QNetwo-rkReply*)相連,當觸發finish()信號是會自動回調replyFinished 槽.

4.2 Qt的事件機制

事件是可以被控件識別的操作,如按下確定按鈕、選擇某個單選按鈕或復選框.Qt 事件是一個QEvent對象,用于描述程序內部或外部發生的動作.Qt 事件產生的類型包括Qt 自身產生的事件、鍵盤鼠標事件、繪制事件等,目前處理event 最常用的方法是重新實現paintEvent()、mousePressEvent()和keyPressEvent()等事件處理函數.

下面代碼是視頻學習模塊鼠標點擊視頻列表選取視頻的mousePressEvent 事件處理函數.

void VedioSlider::mousePressEvent(QMouseEvent*ev)

{

//應先調用父類的鼠標點擊處理事件,這樣可以不影響拖動的情況

QSlider::mousePressEvent(ev);

//獲取鼠標的位置,這里并不能直接從ev 中取值

double pos=ev->pos().x()/ (double)width();

setValue(pos * (maximum()- minimum())+minimum());

//發送自定義的鼠標單擊信號

emit costomSliderClicked();

}

4.3 QT 多線程技術的應用

在數據庫查詢以及網絡編程模塊都用到了Qt的多線程技術,多線程技術可以輕松地開發可移植的多線程Qt 應用程序,可以充分利用多處理器的機器,也可以有效解決在不凍結一個應用程序界面的情況下執行一個耗時操作的問題.Qt 提供了與平臺無關的線程類,在系統中與線程相關的最重要的類是QThread類,該類提供了創建一個新線程以及控制線程運行的各種方法,它是所有線程類的基礎,該類提供了很多API 對線程進行操作,每一個QThread 對象都代表一個線程,同時QThread 類是最常用的Qt 多線程處理方法.Qt 還提供了QTConcurrent 模塊,QTConcurrent是高級API,該模塊中有很多高級函數用于處理一些常見的并行計算模式,無需使用低級線程原語,例如:互斥、讀寫鎖、等待條件或信號量.在驅動程序學習系統中在查詢數據庫操作時用到的多線程技術簡單,且并行處理計算量小,故采用QTread類即可.

如圖9所示是系統中驅動程序信息查詢、操作數據庫的多線程編程的流程圖.當用戶查詢某個驅動程序的具體信息時,進入Qt 數據庫入口,加載SQL 數據庫驅動,然連接數據庫,之后分有兩個分支,一個是Qt 主線程事件,另一個是數據查詢子線程,創建子線程QTread,重載QTread:run(),在run()函數中創建QSqlTableModel表格模型,查詢數據表,輸出到表格模型,然后根據用戶輸入的模塊名進行篩選查詢某個驅動程序的詳細信息,在主線程中調用子線程,執行mythread.start()函數,在Qt 窗口顯示.

圖9 多線程流程圖

4.4 系統運行效果

通過交叉編譯方式,使系統運行于X86、ARM、MIPS 三種平臺.當然也運行于Windows 平臺上.圖10是系統的登錄界面,圖11是系統主界面圖.

下面挑選部分功能模塊進行結果演示.圖12是視頻學習模塊,這個功能模塊包含驅動程序開發和案例的多個視頻,研發人員和用戶可以根據自身因素進行選擇性學習.

圖13是具體驅動模塊,包含200 多種常用驅動程序,每種驅動包含驅動程序名稱、文件路徑、功能描述、注冊函數、執行流程等詳細信息,用SQLTableModel表格模型、視圖顯示,輸入具體驅動程序名稱,就可以查詢驅動名稱對應的驅動程序的具體信息.

圖10 系統登錄界面

圖11 系統主界面

圖12 視頻學習模塊

圖13 具體驅動信息

圖14是系統設置模塊,此功能模塊包含計算機信息、系統更新兩個子模塊,點擊系統更新,就會彈出檢查更新提示,若檢測到新版本會有提示,用戶可以選擇去下載或者不更新.下載時通過代碼連接遠程服務器,更新的版本會放到服務器上.

圖14 系統設置

圖15是遠程文件下載和上傳模塊,輸入服務器地址、用戶名、密碼登錄到FTP 服務器,用戶可以看到遠程服務器上可見的目錄或文件,然后選擇下載.

圖15 遠程文件下載和上傳

5 總結

本文采用Qt的進程間通信技術、多線程技術、數據庫技術、網絡通信技術、多媒體技術、Linux 管道技術等,設計并實現了運行于麒麟操作系統下的內核驅動程序學習系統.在設計與實現中涉及有Qt和C++語言、軟件算法、Linux 操作系統命令、FTP 通信、TCP 網絡通信、計算機硬件系統架構等知識層面.經過測試,系統能夠穩定運行,用戶端界面效果良好.該系統主要用于國產麒麟系統,能體現出其巨大的價值,填補了驅動研究與學習、適配等方面的短板,用于企業將大大減少驅動的維護成本,減少新人的學習時間,降低系統的開發周期等,促進國產Linux 操作系統的普及與推廣.用于高校將有助于學生快速掌握驅動程序學習知識,深入了解驅動程序開發思路,掌握每種驅動程序的執行流程等,同時為國產操作系統儲備人才.當然此系統還存在一些潛在的不足,還需繼續改進、補充和完善,請批評指正.

猜你喜歡
功能模塊信號用戶
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
基于FPGA的多功能信號發生器的設計
電子制作(2018年11期)2018-08-04 03:25:42
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
基于ASP.NET標準的采購管理系統研究
軟件導刊(2016年9期)2016-11-07 21:35:42
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
輸電線路附著物測算系統測算功能模塊的研究
基于LabVIEW的力加載信號采集與PID控制
M市石油裝備公服平臺網站主要功能模塊設計與實現
石油知識(2016年2期)2016-02-28 16:20:16
主站蜘蛛池模板: 日韩AV无码免费一二三区| 女人18毛片水真多国产| 亚洲欧州色色免费AV| 婷婷六月激情综合一区| 亚洲国产综合精品中文第一| 大学生久久香蕉国产线观看| 国产一区二区三区在线无码| 亚洲国产中文在线二区三区免| 国产精品流白浆在线观看| 欧美一区二区福利视频| 四虎成人在线视频| 亚洲精品制服丝袜二区| 动漫精品啪啪一区二区三区| 色窝窝免费一区二区三区| 亚洲精品桃花岛av在线| 国产毛片不卡| 亚洲人成人伊人成综合网无码| 国产91丝袜在线观看| 91在线视频福利| 久久国产精品嫖妓| 99久久精品免费观看国产| 一级香蕉人体视频| 中文精品久久久久国产网址 | 九九久久精品免费观看| 国产网站一区二区三区| 成年女人a毛片免费视频| 伊人国产无码高清视频| 亚洲日韩日本中文在线| 亚洲侵犯无码网址在线观看| 色网站免费在线观看| 欧美www在线观看| 中文字幕亚洲精品2页| 高清无码不卡视频| 国产视频入口| 国产性生大片免费观看性欧美| 亚洲中文字幕国产av| 91福利免费| 国产成人亚洲毛片| 色婷婷成人| 成人午夜免费观看| 国产人成网线在线播放va| 亚洲男人天堂2018| 91丝袜乱伦| 国产91精选在线观看| 国产h视频免费观看| 一本无码在线观看| 久久精品丝袜高跟鞋| 欧美国产综合色视频| 视频二区国产精品职场同事| 国产免费一级精品视频 | 国产一级视频在线观看网站| 99re这里只有国产中文精品国产精品 | 免费一级毛片在线播放傲雪网| 午夜高清国产拍精品| 欧美国产日本高清不卡| 亚洲第一成年人网站| 日本精品中文字幕在线不卡| 毛片国产精品完整版| 国产精品久久国产精麻豆99网站| 尤物视频一区| 国产精品短篇二区| 97se亚洲| 热99精品视频| 久久99国产乱子伦精品免| 成人韩免费网站| 在线观看热码亚洲av每日更新| 国内熟女少妇一线天| 国产全黄a一级毛片| 色综合五月| 日韩a级毛片| 亚洲免费播放| 精品一区二区三区自慰喷水| 色妞www精品视频一级下载| 狠狠v日韩v欧美v| 久久永久精品免费视频| 国产经典在线观看一区| 国产色婷婷| 免费一看一级毛片| 色婷婷电影网| 欧美综合激情| 精品国产中文一级毛片在线看 | 一级不卡毛片|