當前位置:首頁(yè) > 問(wèn)答 > 正文內容

[技術(shù)前沿]用虛擬技術(shù)實(shí)現用戶(hù)態(tài)調試內核程序[已扎口]

一沫陽(yáng)光6年前 (2019-03-22)問(wèn)答105
印刷廠(chǎng)直印●彩頁(yè)1000張只需要69元●名片5元每盒-更多報價(jià)?聯(lián)系電話(huà):138-1621-1622(微信同號)

虛擬技術(shù)是一種理念,虛擬機是這種理念的具體實(shí)現。在虛擬機中,我們可以模擬一定的軟硬件環(huán)境,并在該模擬環(huán)境中運行程序。vmware就是虛擬機的杰出代表,其偉大我不再贅言。但使用vmware調試內核程序時(shí),存在以下不方便的地方:

  1、一旦內核崩潰,仍然需要漫長(cháng)的時(shí)間重啟系統,頻繁重啟將減緩研發(fā)進(jìn)程,并嚴重挫傷開(kāi)發(fā)人員的工作熱情。

  2、跟蹤內核程序的運行不方便,雖然有kgdb、kdb等輔助工具,效果都不太理想。

  3、最重要的一點(diǎn),無(wú)法實(shí)現調試和測試自動(dòng)化,這一點(diǎn)在調試網(wǎng)絡(luò )程序時(shí)尤其明顯。

  針對以上問(wèn)題,我們提出了微虛擬機的概念,通過(guò)微虛擬機運行我們要調試的內核程序,由于微虛擬機是自己開(kāi)發(fā)的,可以實(shí)現全過(guò)程的跟蹤,因此可以達到更好的調試效果。同時(shí)由于是一款輕量級的虛擬機,不需要同過(guò)多的硬件打交道,啟動(dòng)和運行十分迅速。

  下面是微虛擬機的三個(gè)設計目標:

  1、運行一個(gè)簡(jiǎn)單的操作系統內核(僅包含網(wǎng)絡(luò )相關(guān)的代碼及必要的支撐代碼),并在這個(gè)內核上運行我們要調試的內核程序。

  2、僅模擬網(wǎng)卡和時(shí)鐘兩種硬件。其中時(shí)鐘不依賴(lài)真實(shí)的系統時(shí)鐘,完全由軟件模擬。

  3、不但要虛擬軟件和硬件環(huán)境,還要能虛擬數據。即允許通過(guò)配置文件配置網(wǎng)卡收發(fā)的數據,以實(shí)現調試和測試的自動(dòng)化。

  為達到以上三個(gè)目標,必須模擬操作系統和硬件之間的調用接口,由于僅需要模擬網(wǎng)卡和時(shí)鐘,因此大大減輕了這部分工作。此外,我們?yōu)榱思涌靻?dòng)速度和精簡(jiǎn)硬件環(huán)境,只運行操作系統的部分內核,因此還要對另一部分沒(méi)有運行但還需要的內核進(jìn)行模擬,如磁盤(pán)讀寫(xiě)等。

  除了模擬軟硬件環(huán)境外,最關(guān)鍵的是要模擬各種中斷,中斷是推動(dòng)內核運行的動(dòng)力,驅動(dòng)程序就是運行在中斷環(huán)境下。眾所周知,在中斷環(huán)境下運行的代碼是不允許被打斷的,因此很難用純軟件的方式來(lái)模擬,考慮到我們的微虛擬機只是為了更方便的開(kāi)發(fā)特定的安全產(chǎn)品,因此可以適當作一些變通,綜合使用原子操作、鎖、進(jìn)程優(yōu)先級、內存屏障等技術(shù)來(lái)模擬,就可以滿(mǎn)足需求了。

  模擬了硬件接口和中斷之后,就可以運行我們的微虛擬機了。但在運行我們的內核程序之前,還有一個(gè)工作要做,就是裁減操作系統內核。這里的裁減不是通過(guò)make?menuconfig進(jìn)行裁減,而是代碼級的裁減,事實(shí)上,這一步驟是最無(wú)聊的。為了能讓內核順利的運行在我們簡(jiǎn)陋的“硬件”之上,需要去除不需要的代碼,僅保留基本的網(wǎng)絡(luò )功能所需的代碼,這個(gè)過(guò)程需要的是耐心和精力。

  經(jīng)過(guò)數周的折騰,經(jīng)過(guò)裁減的內核終于在微虛擬機上成功啟動(dòng)了,離成功之差最后一步了。

  寫(xiě)一個(gè)簡(jiǎn)單的內核程序,激動(dòng)人心的“hello?world”終于出現在屏幕上。

  作為一個(gè)虛擬機,我們的微虛擬機還很不完善,配置也不友好,甚至需要在使用過(guò)程中隨時(shí)進(jìn)行調整和修改,但作為一個(gè)開(kāi)發(fā)內核程序的輔助手段,已經(jīng)工作的足夠好了,在很多方面甚至超過(guò)了vmware之類(lèi)的大型軟件(設計目標不同)。事實(shí)上,正是由于這個(gè)微虛擬機的使用,極大加快了安普科技的金甲Web防火墻和金甲應用安全網(wǎng)關(guān)的開(kāi)發(fā)進(jìn)度,在調試時(shí),讓我們可以跟蹤程序的每一個(gè)細節,從而快速找到BUG,真正的實(shí)惠又好用。

021yin.com /tech_vm.htm

收藏0

發(fā)表評論

訪(fǎng)客

看不清,換一張

◎歡迎參與討論,請在這里發(fā)表您的看法和觀(guān)點(diǎn)。
中文字幕在线永久91_国产一级AV不卡毛片_亚洲日本中文字幕在线四区_日韩黄片在线大全