亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于內(nèi)核調(diào)試與抽象精化的操作系統(tǒng)實(shí)驗(yàn)設(shè)計(jì)

        2019-08-24 08:57:46文艷軍李?yuàn)檴?/span>劉江潮
        計(jì)算機(jī)教育 2019年8期
        關(guān)鍵詞:精化實(shí)驗(yàn)設(shè)計(jì)內(nèi)核

        文艷軍,羅 宇,李?yuàn)檴?,劉江?/p>

        (國(guó)防科技大學(xué) 計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073)

        1 研究背景

        操作系統(tǒng)實(shí)驗(yàn)設(shè)計(jì)的一個(gè)難點(diǎn)問(wèn)題是如何使學(xué)生比較容易地掌握操作系統(tǒng)內(nèi)核的工作過(guò)程,從而真正弄懂內(nèi)核。目前學(xué)界的操作系統(tǒng)內(nèi)核實(shí)驗(yàn)設(shè)計(jì)主要有以下幾種做法。

        (1)要求學(xué)生從一個(gè)基本框架出發(fā),逐步開(kāi)發(fā)出一個(gè)基本可用的操作系統(tǒng),例如MIT的6.828課程使用JOS操作系統(tǒng),伯克利加州大學(xué)的CS162課程使用Pintos操作系統(tǒng),哈佛大學(xué)的CS161課程使用OS/161操作系統(tǒng),清華大學(xué)使用ucore操作系統(tǒng),浙江大學(xué)使用Lcore操作系統(tǒng)[1]等。

        (2)要求學(xué)生對(duì)一個(gè)已經(jīng)基本可用的操作系統(tǒng)進(jìn)行分析、改寫(xiě)或擴(kuò)充。例如MIT的6.828課程同時(shí)使用xv6操作系統(tǒng),荷蘭阿姆斯特丹Vrije大 學(xué) 的Andrew S.Tanenbaum使 用MINIX 3, 哈爾濱工業(yè)大學(xué)的李治軍等使用Linux 0.11操作系統(tǒng)[2],北京英真時(shí)代科技有限公司開(kāi)發(fā)的操作系統(tǒng)課程也使用Linux 0.11操作系統(tǒng)[3]。本教 學(xué)組也在Linux 0.11上開(kāi)發(fā)過(guò)一組內(nèi)核調(diào)試分析實(shí)驗(yàn)[4]。

        (3)要求學(xué)生對(duì)一個(gè)商用級(jí)別的操作系統(tǒng)進(jìn)行分析或改寫(xiě)。例如西安郵電大學(xué)的陳莉君等使用高版本Linux[5],以前也有一些學(xué)校使用Open Solaris和WRK[6]。典型做法是增加內(nèi)核模塊和驅(qū)動(dòng)程序等。

        上述探索有力地促進(jìn)了學(xué)生對(duì)操作系統(tǒng)內(nèi)核的掌握,成效顯著。與此同時(shí),降低難度與取得整體性認(rèn)識(shí)難以兩全。從基本框架出發(fā)寫(xiě)出一個(gè)可用操作系統(tǒng)難度大,尤其在開(kāi)始階段,需要首先掌握大量CPU編程細(xì)節(jié),導(dǎo)致啟動(dòng)門(mén)檻高,學(xué)習(xí)曲線陡峭。分析改寫(xiě)一個(gè)已經(jīng)基本可用的操作系統(tǒng)或者商用級(jí)操作系統(tǒng)又很難獲得整體性認(rèn)識(shí),因?yàn)橄到y(tǒng)已經(jīng)很復(fù)雜了:xv6有近1萬(wàn)行代碼,Linux 0.11有近15000行代碼,Linux 4.4則有近2000萬(wàn)行代碼。本教學(xué)組大規(guī)模使用調(diào)試手段分析內(nèi)核特定路徑,有助于降低難度并取得較好的整體性認(rèn)識(shí)。但在以前的設(shè)計(jì)中,對(duì)一條執(zhí)行路徑只分析一次,直接分析該路徑上詳細(xì)的狀態(tài)變化,一次暴露所有細(xì)節(jié)。這導(dǎo)致依然存在需要首先掌握大量CPU編程和操作系統(tǒng)設(shè)計(jì)細(xì)節(jié)、啟動(dòng)門(mén)檻高的問(wèn)題。

        抽象精化思想在程序分析和驗(yàn)證領(lǐng)域有廣泛應(yīng)用[7],基于內(nèi)核調(diào)試和抽象精化的操作系統(tǒng)實(shí)驗(yàn)設(shè)計(jì)方法的基本思想是:對(duì)每條內(nèi)核執(zhí)行路徑分析多遍,分析時(shí)不一次暴露所有細(xì)節(jié),而是進(jìn)行抽象,一開(kāi)始只觀察少量細(xì)節(jié),即作一個(gè)高層抽象,在后面再次分析時(shí)逐漸加入更多細(xì)節(jié),對(duì)抽象進(jìn)行精化、降低抽象程度,逐步貼近完整的復(fù)雜底層狀態(tài),見(jiàn)圖1。

        2 內(nèi)核執(zhí)行路徑及其調(diào)試

        內(nèi)核實(shí)驗(yàn)主要圍繞兩條內(nèi)核執(zhí)行路徑展開(kāi),其目的是使內(nèi)核執(zhí)行一些特定的功能模塊,滿足實(shí)驗(yàn)內(nèi)容需要。路徑1見(jiàn)圖2,修改了內(nèi)核main函數(shù)(部分),針對(duì)的是中斷與異常、進(jìn)程管理和內(nèi)存管理等內(nèi)核功能。按此路徑運(yùn)行時(shí),內(nèi)核會(huì)創(chuàng)建兩個(gè)進(jìn)程:0號(hào)進(jìn)程和1號(hào)進(jìn)程,分別循環(huán)輸出字符‘0’和字符‘1’。運(yùn)行時(shí),會(huì)先執(zhí)行0號(hào)進(jìn)程(圖2的軌跡‘1’),然后切換到1號(hào)進(jìn)程(軌跡‘2’),再切換回0號(hào)進(jìn)程(軌跡‘3’),最后在時(shí)鐘中斷處理時(shí)切換到1號(hào)進(jìn)程(軌跡‘4’)。這條路徑涉及段頁(yè)式內(nèi)存管理、用戶態(tài)與核心態(tài)的相互轉(zhuǎn)換、fork系統(tǒng)調(diào)用、時(shí)鐘中斷處理、進(jìn)程調(diào)度和進(jìn)程切換等知識(shí)點(diǎn)。

        圖2 內(nèi)核執(zhí)行路徑1

        路徑2見(jiàn)圖3,只修改了內(nèi)核init函數(shù),針對(duì)的是設(shè)備管理和文件系統(tǒng)等內(nèi)核功能。按此路徑運(yùn)行時(shí),內(nèi)核也會(huì)創(chuàng)建兩個(gè)進(jìn)程:0號(hào)進(jìn)程和1號(hào)進(jìn)程,0號(hào)進(jìn)程空轉(zhuǎn),1號(hào)進(jìn)程會(huì)執(zhí)行init函數(shù),先加載根文件系統(tǒng)(代碼塊‘1’),然后打開(kāi)控制臺(tái)終端(代碼塊‘2’),接著輸出提示信息并等待用戶輸入(代碼塊‘3’),再將文件/usr/root/hello.c的內(nèi)容讀出、顯示,并寫(xiě)到文件/usr/root/hello-new.c中(代碼塊‘4’),最后執(zhí)行同步操作,將修改過(guò)的內(nèi)存緩沖區(qū)內(nèi)容寫(xiě)入外存(代碼塊‘5’)。這條路徑涉及字符設(shè)備、塊設(shè)備和普通文件的打開(kāi)、關(guān)閉和讀寫(xiě)等知識(shí)點(diǎn),也在一定程度上涉及路徑1的知識(shí)點(diǎn)。

        實(shí)驗(yàn)時(shí),學(xué)生將沿著這兩條路徑對(duì)Linux內(nèi)核進(jìn)行調(diào)試,觀察CPU寄存器和內(nèi)存的狀態(tài)變化,并進(jìn)而對(duì)內(nèi)核進(jìn)行部分改寫(xiě)。我們建立了方便的實(shí)驗(yàn)環(huán)境,利用Bochs虛擬機(jī)軟件的調(diào)試功能,可以在Ubuntu中對(duì)內(nèi)核進(jìn)行源碼級(jí)(使用gdb)和匯編級(jí)調(diào)試(使用bochdbg)。

        圖3 內(nèi)核執(zhí)行路徑2

        3 基于抽象精化的內(nèi)核實(shí)驗(yàn)設(shè)計(jì)

        基于操作系統(tǒng)原理課程設(shè)計(jì)了5個(gè)內(nèi)核實(shí)驗(yàn),分別與教材[8]的第2、3、5、6、7章配套。在原理授課時(shí),同步講授實(shí)驗(yàn)原理,引導(dǎo)學(xué)生進(jìn)行調(diào)試分析,要求學(xué)生在課外對(duì)內(nèi)核進(jìn)行深入的調(diào)試分析和改寫(xiě),同步完成實(shí)驗(yàn)。這些實(shí)驗(yàn)的基本情況見(jiàn)表1。

        這些實(shí)驗(yàn)覆蓋了操作系統(tǒng)內(nèi)核的各主要模塊,每個(gè)實(shí)驗(yàn)的內(nèi)容包括調(diào)試分析和改寫(xiě)兩部分,具體見(jiàn)表2。

        三個(gè)實(shí)驗(yàn)的分析對(duì)象是內(nèi)核執(zhí)行路徑1,后兩個(gè)實(shí)驗(yàn)的分析對(duì)象是內(nèi)核執(zhí)行路徑2。

        正如前文所述,為了降低難度、使學(xué)習(xí)曲線更平滑,采用抽象精化思想來(lái)設(shè)計(jì)這些實(shí)驗(yàn)。在完成這些實(shí)驗(yàn)時(shí),需要學(xué)生關(guān)注的狀態(tài)信息是由少逐步變多的,調(diào)試時(shí)不用看懂所有細(xì)節(jié),只需弄懂要求的部分信息即可。具體而言,每個(gè)實(shí)驗(yàn)關(guān)注的狀態(tài)信息主要包括3類(lèi):CPU寄存器、操作系統(tǒng)內(nèi)核數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)內(nèi)核的函數(shù)調(diào)用事件,具體見(jiàn)表3。

        其中‘+’表示在前序?qū)嶒?yàn)關(guān)注狀態(tài)信息的基礎(chǔ)上再增加一些信息,當(dāng)然不一定所有前序信息都需要在本實(shí)驗(yàn)中觀察,但總體而言觀察的信息是遞增的。以CPU寄存器為例,4個(gè)特殊段寄存器(IDTR、GDTR、TR、LDTR)是在前3個(gè)實(shí)驗(yàn)中逐步引入的,其中涉及的復(fù)雜段頁(yè)式地址轉(zhuǎn)換過(guò)程被逐步介紹,難度得到分解。完成前3個(gè)實(shí)驗(yàn)后,X86 CPU的特殊寄存器就基本介紹完了。

        正是因?yàn)椴捎昧诉@種抽象精化的思想,復(fù)雜性被逐步引入,當(dāng)學(xué)生完成所有5個(gè)實(shí)驗(yàn)后,對(duì)Linux 0.11內(nèi)核的掌握已經(jīng)很深入了。

        4 教學(xué)實(shí)施效果

        表1 實(shí)驗(yàn)概況

        本實(shí)驗(yàn)方案在國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院2018年秋的操作系統(tǒng)原理課中進(jìn)行了實(shí)施,實(shí)驗(yàn)與原理課同步開(kāi)展。班上共27名學(xué)生,所有學(xué)生都達(dá)到了及格標(biāo)準(zhǔn),且優(yōu)秀和良好的學(xué)生占了絕大多數(shù)。

        表3 各實(shí)驗(yàn)關(guān)注的狀態(tài)信息

        此外,課程結(jié)束后進(jìn)行了匿名問(wèn)卷調(diào)查,收到關(guān)于實(shí)驗(yàn)難度的反饋25份,其中反映“實(shí)驗(yàn)容易,需要增加難度”的有1人,反映“實(shí)驗(yàn)難度適中,不用增加難度”的有21人,反映“實(shí)驗(yàn)難,應(yīng)該降低一些難度”的有3人。

        綜合來(lái)看,按照本實(shí)驗(yàn)設(shè)計(jì)方案,在保證較好的實(shí)驗(yàn)深度的同時(shí),內(nèi)核實(shí)驗(yàn)的難度得到了有效控制。

        同時(shí),該模式存在一些有待改進(jìn)的地方:部分能力強(qiáng)的學(xué)生希望提高內(nèi)核改寫(xiě)的規(guī)模和難度。可以考慮為這類(lèi)學(xué)生設(shè)計(jì)更具挑戰(zhàn)性的內(nèi)核實(shí)驗(yàn)。

        5 結(jié) 語(yǔ)

        這種基于調(diào)試分析和抽象精化的操作系統(tǒng)內(nèi)核實(shí)驗(yàn)設(shè)計(jì)方法,設(shè)計(jì)了一組Linux 0.11內(nèi)核調(diào)試分析與改寫(xiě)實(shí)驗(yàn),并在操作系統(tǒng)課中進(jìn)行了試驗(yàn),取得了良好效果,內(nèi)核實(shí)驗(yàn)的難度得到分解,啟動(dòng)門(mén)檻降低。后續(xù)工作將針對(duì)不同基礎(chǔ)的學(xué)生設(shè)計(jì)一些可選實(shí)驗(yàn),進(jìn)一步完善實(shí)驗(yàn)設(shè)計(jì)方案。

        猜你喜歡
        精化實(shí)驗(yàn)設(shè)計(jì)內(nèi)核
        萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
        不同的溫度
        有趣的放大鏡
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        哪個(gè)涼得快?
        無(wú)字天書(shū)
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        n-精化與n-互模擬之間相關(guān)問(wèn)題的研究
        n-精化關(guān)系及其相關(guān)研究
        電子世界(2017年2期)2017-02-17 00:54:00
        无码人妻久久一区二区三区app | 日韩精品一区二区三区免费观影 | 青青草原亚洲| 日日av拍夜夜添久久免费 | 男人天堂av在线成人av| 91麻豆精品激情在线观看最新| 国产黄片一区视频在线观看| 三级日本理论在线观看| 69精品人人人人| 久久久久无码国产精品不卡| 精品人妻免费看一区二区三区| 国产av熟女一区二区三区密桃| 免费人成年激情视频在线观看| 亚洲精品永久在线观看| 亚洲色成人WWW永久在线观看| 一区二区三区在线观看高清视频| 国产一品二品三品精品在线| 久久精品国产亚洲av香蕉| 国产精品无码专区av在线播放| 免费av片在线观看网站| 亚洲日产国无码| 日韩精品在线一二三四区| 在线观看热码亚洲av每日更新| 欧美a视频在线观看| 国内偷拍第一视频第一视频区 | 成人av一区二区亚洲精| 极品老师腿张开粉嫩小泬| 久久久久亚洲av无码专区体验| 国产真实伦视频在线视频| 精品亚洲一区中文字幕精品| 国产午夜成人av在线播放| 福利网址在线观看| 亚洲精品中文字幕乱码人妻| 久久一区二区国产精品| 国产午夜片无码区在线播放| 一本一道波多野结衣一区| 男人天堂AV在线麻豆| 亚洲精品在线视频一区二区| 久久久久久曰本av免费免费| 精品视频999| 午夜国产精品一区二区三区|