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

Windows進(jìn)程凍結(jié)與恢復(fù)方法及其實(shí)驗(yàn)教學(xué)探索

2009-08-28 09:09:14原倉(cāng)周王華鋒申雪萍
計(jì)算機(jī)教育 2009年14期
關(guān)鍵詞:進(jìn)程實(shí)驗(yàn)教學(xué)

原倉(cāng)周 王華鋒 申雪萍

摘要:本文在分析進(jìn)程凍結(jié)與恢復(fù)所涉及的相關(guān)知識(shí)點(diǎn)基礎(chǔ)上,給出了基于WRK(Windows Research Kernel)實(shí)現(xiàn)Windows進(jìn)程凍結(jié)與恢復(fù)的技術(shù)方案。通過(guò)將相關(guān)知識(shí)點(diǎn)按照相關(guān)性和難度分類,設(shè)計(jì)并實(shí)施了一種基于研究性學(xué)習(xí)法的教學(xué)方式,使學(xué)生變被動(dòng)學(xué)習(xí)為主動(dòng)學(xué)習(xí),提高了綜合分析能力和動(dòng)手能力,取得了滿意的教學(xué)效果。

關(guān)鍵詞:WRK;進(jìn)程;實(shí)驗(yàn)教學(xué)

中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B

1引言

在現(xiàn)代操作系統(tǒng)中,完整的進(jìn)程概念不僅表示一個(gè)運(yùn)行程序,實(shí)際上包括了處理器、內(nèi)存、文件、外設(shè)等程序運(yùn)行時(shí)可能涉及的各種“資源”,當(dāng)然也隱含了運(yùn)行中的程序如何與內(nèi)核“打交道”的相互調(diào)用問(wèn)題。因此,圍繞進(jìn)程的概念展開(kāi)實(shí)驗(yàn)內(nèi)容的安排有助于學(xué)生系統(tǒng)了解“進(jìn)程”在各實(shí)用操作系統(tǒng)中的具體實(shí)現(xiàn)方式,從抽象到具體,經(jīng)過(guò)理解消化后,再轉(zhuǎn)化為學(xué)生自己理解的“抽象”,最終達(dá)到系統(tǒng)化掌握各知識(shí)點(diǎn)的培養(yǎng)目標(biāo)。

將一個(gè)系統(tǒng)中的進(jìn)程凍結(jié)到外存,或通過(guò)網(wǎng)絡(luò)傳輸?shù)絼e的機(jī)器,然后在必要的時(shí)候再恢復(fù)其運(yùn)行,需要涉及到除進(jìn)程調(diào)度之外的幾乎所有操作系統(tǒng)核心知識(shí)點(diǎn),因此不僅適用于對(duì)“操作系統(tǒng)”課程的實(shí)驗(yàn)教學(xué),而且可應(yīng)用于進(jìn)程中間狀態(tài)保存、進(jìn)程在分布式環(huán)境中遷移以平衡負(fù)載等實(shí)際應(yīng)用,所以具有很好的教學(xué)和應(yīng)用研究?jī)r(jià)值。

將業(yè)界廣泛應(yīng)用的實(shí)用操作系統(tǒng)Solaris、Linux和Windows內(nèi)核應(yīng)用于“操作系統(tǒng)”課程實(shí)驗(yàn)已經(jīng)得到了國(guó)內(nèi)諸多知名高校的認(rèn)同。

由于Windows NT在最初設(shè)計(jì)時(shí)采用的就是適用于多CPU、大內(nèi)存的1對(duì)1線程模型,因此,盡管Linux和Solaris都在新版本中逐步向這一模型靠近,但在模型實(shí)現(xiàn)方面都沒(méi)有Windows清晰。

微軟推出的用于教學(xué)和科研目的的WRK(Windows Research Kernel),提供了大部分內(nèi)核源代碼,相應(yīng)配備的Windbg工具,以及配套教學(xué)資料,也為學(xué)習(xí)和研究Windows內(nèi)核提供了強(qiáng)有力的支持。

本文基于WRK及其相關(guān)的教學(xué)材料,通過(guò)將進(jìn)程凍結(jié)和恢復(fù)時(shí)需要解決的問(wèn)題按內(nèi)容和難度分類,設(shè)計(jì)了相關(guān)的實(shí)驗(yàn)?zāi)K和學(xué)習(xí)步驟,使學(xué)生通過(guò)研究性學(xué)習(xí)法完成力所能及的實(shí)驗(yàn)內(nèi)容,變被動(dòng)學(xué)習(xí)為主動(dòng)學(xué)習(xí),提高了綜合分析能力和動(dòng)手能力,取得了滿意的教學(xué)效果。

2技術(shù)方案的設(shè)計(jì)

要將一個(gè)已有的進(jìn)程凍結(jié),可以從用戶態(tài)應(yīng)用程序中調(diào)用系統(tǒng)提供的API完成,也可通過(guò)在內(nèi)核中添加自己的系統(tǒng)調(diào)用完成相應(yīng)功能。前者依賴于系統(tǒng)的提供的API,功能相對(duì)受限,實(shí)驗(yàn)難度相對(duì)容易控制,文獻(xiàn)[9]介紹了一種此類實(shí)現(xiàn)方法。我們選擇了后一種方案,相對(duì)來(lái)說(shuō)實(shí)現(xiàn)比較靈活,但對(duì)學(xué)生來(lái)說(shuō)實(shí)驗(yàn)工作量相對(duì)較大。

2.1進(jìn)程凍結(jié)涉及的內(nèi)容

進(jìn)程凍結(jié)時(shí)需要處理的內(nèi)容可分為兩大類:一類是進(jìn)程/線程自身特有的程序和數(shù)據(jù),不涉及別的進(jìn)程,因此只要按一定的格式保存到外存,然后釋放內(nèi)存資源即可。另一類是共享資源,包括內(nèi)核同步工具、共享數(shù)據(jù)等。對(duì)于這類數(shù)據(jù),需要根據(jù)其具體作用分析如何使進(jìn)程/線程與其“脫鉤”。“脫鉤”有兩個(gè)步驟,一是恢復(fù)時(shí)共享數(shù)據(jù)/對(duì)象的狀態(tài),是直接保存到時(shí)恢復(fù),還是到時(shí)根據(jù)具體情況創(chuàng)建一個(gè)新的對(duì)象然后設(shè)置成一定的狀態(tài);二是共享數(shù)據(jù)/對(duì)象的用戶數(shù)減1,用戶數(shù)為零時(shí)釋放資源。

第一類私有數(shù)據(jù)主要用于表示進(jìn)程和線程及其運(yùn)行上下文,包括EPROCESS、KPROCESS、PEB、ETHREAD、KTHREAD、TEB、VAD、頁(yè)表等數(shù)據(jù)結(jié)構(gòu),另外,還包括進(jìn)程各線程已經(jīng)運(yùn)行產(chǎn)生的相關(guān)中間數(shù)據(jù),如堆、棧、數(shù)據(jù)段、運(yùn)行環(huán)境等。如果啟用了交換功能,還要考慮進(jìn)程在交換空間的數(shù)據(jù)。

第二類共享數(shù)據(jù)主要包括進(jìn)程所用到的各種共享內(nèi)核對(duì)象,如session、mutex、socket等,也包括共享數(shù)據(jù),DLL映射等信息。這類信息都可通過(guò)第一類內(nèi)核對(duì)象中的指針找到。

2.2保存格式與恢復(fù)運(yùn)行

設(shè)計(jì)保存格式的主要目的是能夠在恢復(fù)時(shí)將當(dāng)初保存的數(shù)據(jù)“識(shí)別”出來(lái)。有兩種辦法。

第一種是沒(méi)有特別的格式表示,恢復(fù)程序按照保存數(shù)據(jù)結(jié)構(gòu)的順序依次讀出即可。這種方式的缺點(diǎn)的要求保存與恢復(fù)一一對(duì)應(yīng),只能一個(gè)寫(xiě)入程序?qū)σ粋€(gè)讀出程序。在學(xué)生一個(gè)人做嘗試實(shí)驗(yàn)時(shí)可這樣完成。

對(duì)于需要由多個(gè)同學(xué)協(xié)作完成的實(shí)驗(yàn),顯然不能采用以上方式。為此,我們?cè)O(shè)計(jì)了借鑒文件系統(tǒng)的實(shí)現(xiàn)方式,設(shè)計(jì)了一種“通用”的記錄格式。如圖1所示。

其中單元總長(zhǎng)度是整型,占4個(gè)字節(jié),表示一個(gè)數(shù)據(jù)單元的總的長(zhǎng)度;類型名表示本數(shù)據(jù)單元所存儲(chǔ)數(shù)據(jù)的類型,字符串,占10個(gè)字節(jié),它通常是結(jié)構(gòu)名稱,如EPROCESS、datapage(數(shù)據(jù)頁(yè))等。數(shù)據(jù)表示單元中要保存的數(shù)據(jù),實(shí)際長(zhǎng)度可變;數(shù)據(jù)長(zhǎng)度也是整型,占4個(gè)字節(jié),表示單元內(nèi)數(shù)據(jù)的長(zhǎng)度,與單元總長(zhǎng)度構(gòu)成一個(gè)校驗(yàn)關(guān)系,也起到隔離單元的作用。

對(duì)于結(jié)構(gòu)和內(nèi)核對(duì)象的恢復(fù),只要在識(shí)別出結(jié)構(gòu)和對(duì)象名稱后,申請(qǐng)一對(duì)應(yīng)結(jié)構(gòu),然后調(diào)用相應(yīng)結(jié)構(gòu)的restore方法即可實(shí)現(xiàn)恢復(fù)。

為了方便特定數(shù)據(jù)結(jié)構(gòu)的恢復(fù),針對(duì)每個(gè)類型的結(jié)構(gòu)編寫(xiě)統(tǒng)一的save和restore方法。

在單個(gè)結(jié)構(gòu)之上,還按照進(jìn)程創(chuàng)建函數(shù)CreateProcess中創(chuàng)建各結(jié)構(gòu)和對(duì)象的先后順序,定義了一套相關(guān)數(shù)據(jù)結(jié)構(gòu)創(chuàng)建的順序規(guī)則,這樣在保存和恢復(fù)時(shí)就確定了各單元數(shù)據(jù)中結(jié)構(gòu)和對(duì)象的對(duì)應(yīng)關(guān)系。

在這種情況下,對(duì)于由鏈表鏈接的多個(gè)元素,也無(wú)需特別說(shuō)明,只要查看鏈表元素前后元素的類型,即可確定是鏈表節(jié)點(diǎn),還是下一個(gè)元素。

3實(shí)驗(yàn)設(shè)計(jì)

因本實(shí)驗(yàn)內(nèi)容涉及知識(shí)面廣,且相互聯(lián)系比較緊湊,因此我們將其定位為“操作系統(tǒng)課程設(shè)計(jì)”的一個(gè)選擇。在6周左右的時(shí)間內(nèi),利用約40個(gè)小時(shí)左右的時(shí)間,完成相關(guān)系列實(shí)驗(yàn)。實(shí)驗(yàn)內(nèi)容按照從易到難的順序組織,開(kāi)始時(shí)的指導(dǎo)材料比較齊備,使學(xué)生易于上手,產(chǎn)生學(xué)習(xí)興趣后主要依靠分析和研究能力實(shí)現(xiàn)。具體實(shí)驗(yàn)內(nèi)容規(guī)劃如下。

(1) 為了使學(xué)生具體相應(yīng)Windows內(nèi)核基礎(chǔ),選擇設(shè)計(jì)了一些較為簡(jiǎn)練的材料,提供給學(xué)生閱讀。文獻(xiàn)[10]的1、2、3、6、7章是主要閱讀內(nèi)容。

(2) 利用CRK、TRK提供的相關(guān)材料,指導(dǎo)學(xué)生完成相關(guān)實(shí)驗(yàn)環(huán)境的搭建,練習(xí)使用Windbg,學(xué)會(huì)編寫(xiě)基本的系統(tǒng)調(diào)用。

(3) 分析CreateProcess,學(xué)習(xí)進(jìn)程創(chuàng)建基本過(guò)程,了解EPROCESS、KPROCESS、PEB、ETHREAD、KTHREAD、TEB、VAD、頁(yè)表等數(shù)據(jù)結(jié)構(gòu)。

(4) 嘗試一個(gè)最基本的進(jìn)程的相關(guān)私有數(shù)據(jù)結(jié)構(gòu)的保存。為了克服最初的困難,恢復(fù)時(shí)可利用CreateProcess創(chuàng)建相關(guān)結(jié)構(gòu)后,再嘗試以保存的數(shù)據(jù)將相關(guān)結(jié)構(gòu)和數(shù)據(jù)替換后看能否繼續(xù)正確運(yùn)行。

(5) 拋開(kāi)CreateProcess,看恢復(fù)后能否繼續(xù)運(yùn)行。

(6) 在具備了以上基本技能后,可依次展開(kāi)以下實(shí)驗(yàn):

① 實(shí)現(xiàn)使用了堆的進(jìn)程的保存和恢復(fù)。

② 實(shí)現(xiàn)使用了文件的進(jìn)程的保存和恢復(fù)。

③ 實(shí)現(xiàn)使用了信號(hào)量的進(jìn)程的保存和恢復(fù)。

④ 實(shí)現(xiàn)使用了共享數(shù)據(jù)的進(jìn)程的保存和恢復(fù)。

⑤ 實(shí)現(xiàn)多線程進(jìn)程的保存和恢復(fù)。

4實(shí)施方法與效果

考慮到實(shí)驗(yàn)的知識(shí)面廣度和難度,以及Windows內(nèi)核分析資料相對(duì)比較缺乏的實(shí)際情況,為便于討論和研究,采用了團(tuán)隊(duì)的實(shí)驗(yàn)形式。

每個(gè)團(tuán)隊(duì)3~5人,除基礎(chǔ)實(shí)驗(yàn)環(huán)境要求每個(gè)人都必要熟悉外,關(guān)于最簡(jiǎn)單進(jìn)程的保存和存儲(chǔ)采用了分塊的形式。比如,4人的小組可一人負(fù)責(zé)進(jìn)程中間數(shù)據(jù)的保存與恢復(fù),一人負(fù)責(zé)分析DLL機(jī)制并實(shí)現(xiàn)其描述方法,一人負(fù)責(zé)PEB相關(guān)內(nèi)核對(duì)象的分析與實(shí)現(xiàn),一人負(fù)責(zé)TEB中相關(guān)內(nèi)核對(duì)象的分析與實(shí)現(xiàn)。

在學(xué)習(xí)方法方面,對(duì)于入門級(jí)的內(nèi)容,借用CRK、TRK以及自己整理的相關(guān)文檔,提供詳細(xì)的指導(dǎo)材料,而對(duì)于入門之后的內(nèi)容,則主要采用研究性學(xué)習(xí)法,只提供實(shí)驗(yàn)的目標(biāo)及簡(jiǎn)單的分析思路,具體解決方案則需要學(xué)生通過(guò)理解理論課上的內(nèi)容加上對(duì)WRK相關(guān)源代碼的分析來(lái)自己尋找答案。對(duì)于學(xué)習(xí)中的問(wèn)題和困難,每周固定2~3個(gè)小時(shí)可與任課教師或助教進(jìn)行討論。

在項(xiàng)目進(jìn)行過(guò)程中,允許學(xué)生根據(jù)自身的條件選擇其他實(shí)驗(yàn),以避免由于難度等問(wèn)題產(chǎn)生的抵觸情緒。減員多的小組可考慮并組。

實(shí)施結(jié)果表明,本實(shí)驗(yàn)的內(nèi)容和實(shí)施方式在調(diào)動(dòng)學(xué)習(xí)興趣,提高學(xué)習(xí)主動(dòng)性方面效果明顯。一些在其他課程學(xué)習(xí)中表現(xiàn)一般的同學(xué),在本實(shí)驗(yàn)學(xué)習(xí)中表現(xiàn)優(yōu)秀。對(duì)于選擇了本實(shí)驗(yàn)并堅(jiān)持完成了的同學(xué),在期末筆試中成績(jī)幾乎全部為優(yōu)秀。

實(shí)施過(guò)程中,也有些同學(xué)反映分析工作量太大,精力不夠從而要求調(diào)換為其他實(shí)驗(yàn)內(nèi)容。針對(duì)這種情況,需要考慮如何通過(guò)提供書(shū)面或課堂的指導(dǎo),適當(dāng)降低分析研究的工作量,以使實(shí)驗(yàn)適應(yīng)盡量多學(xué)生的能力。

5結(jié)束語(yǔ)

WRK的出現(xiàn),使得我們有機(jī)會(huì)將Windows NT的典型1對(duì)1線程模型以實(shí)驗(yàn)的方式應(yīng)用到對(duì)進(jìn)程概念的理解上來(lái)。本文基于這一思想在WRK上設(shè)計(jì)并實(shí)施了一套進(jìn)程的保存和恢復(fù)實(shí)驗(yàn)。

該實(shí)驗(yàn)采用研究性學(xué)習(xí)的方式克服實(shí)用操作系統(tǒng)知識(shí)點(diǎn)繁雜的困難,采用分層的方式解決實(shí)驗(yàn)難度較大的問(wèn)題。實(shí)際實(shí)施過(guò)程表明本實(shí)驗(yàn)達(dá)到了滿意的效果。

參考文獻(xiàn):

[1] 邱毓蘭,劉智滿,王卓立,等. Linux操作系統(tǒng)環(huán)境中的進(jìn)程遷移算法研究[J]. 武漢大學(xué)學(xué)報(bào):自然科學(xué)版,1999,45(03): 276-278.

[2] 肖紅,邱毓蘭,彭德純. 分布式計(jì)算系統(tǒng)中進(jìn)程遷移的方法[J]. 軟件學(xué)報(bào),1994,5(2):29-36.

[3] 陳向群. 探索操作系統(tǒng)實(shí)踐教學(xué)[J].計(jì)算機(jī)教育,2008(17):45-47.

[4] 羅宇,張穎蓓,葉常春. 本科操作系統(tǒng)課程設(shè)置及教學(xué)體會(huì)[J]. 計(jì)算機(jī)教育,2006(1):39-40.

[5] 宋廣華,李善平,鄭扣根. 邊學(xué)邊干:操作系統(tǒng)課程教學(xué)改革的探索與實(shí)踐[J]. 計(jì)算機(jī)教育,2006(7):27-29.

[6] 婁久,李秀坤,李治軍. 操作系統(tǒng)實(shí)驗(yàn)課教學(xué)內(nèi)容與模式探討[J]. 計(jì)算機(jī)教育,2007(2):45-47.

[7] Abraham Silberschatz,Peter Baer Galvin,Greg Gagne. 操作系統(tǒng)概念(影印版)[M]. 6版. 北京:高等教育出版社,2005: 133-145.

[8] 彭敏,何炎祥. 基于WRK的Windows操作系統(tǒng)原理實(shí)驗(yàn)教學(xué)探索[J]. 計(jì)算機(jī)教育,2008(20):38-40.

[9] Hengming Zou. Windows Curriculum at SJTU[C]. Asia Pacific Windows Core Workshop. Beijing,China. March,2009.

[10] Mark Russinovich,David Solomon. Microsoft Windows Internals [M]. Microsoft Press. 2005.

[11] 王春梅,陳慶燕. 研究性學(xué)習(xí)法在操作系統(tǒng)實(shí)驗(yàn)教學(xué)中的應(yīng)用[J]. 福建電腦,2008(06):207,191.

猜你喜歡
進(jìn)程實(shí)驗(yàn)教學(xué)
關(guān)于基礎(chǔ)教育階段實(shí)驗(yàn)教學(xué)的幾點(diǎn)看法
小議初中化學(xué)演示實(shí)驗(yàn)教學(xué)
甘肅教育(2020年4期)2020-09-11 07:42:36
電容器的實(shí)驗(yàn)教學(xué)
物理之友(2020年12期)2020-07-16 05:39:20
對(duì)初中化學(xué)實(shí)驗(yàn)教學(xué)的認(rèn)識(shí)和體會(huì)
甘肅教育(2020年8期)2020-06-11 06:10:04
債券市場(chǎng)對(duì)外開(kāi)放的進(jìn)程與展望
幾何體在高中數(shù)學(xué)實(shí)驗(yàn)教學(xué)中的應(yīng)用
基于云計(jì)算的計(jì)算機(jī)實(shí)驗(yàn)教學(xué)探討
我國(guó)高等教育改革進(jìn)程與反思
Linux僵死進(jìn)程的產(chǎn)生與避免
男女平等進(jìn)程中出現(xiàn)的新矛盾和新問(wèn)題
主站蜘蛛池模板: 国产亚洲欧美另类一区二区| 亚洲精品无码高潮喷水A| 国产精品自在在线午夜区app| 亚洲AV永久无码精品古装片| 制服丝袜 91视频| 波多野结衣视频一区二区| 国产乱论视频| 毛片免费视频| 18禁影院亚洲专区| 在线观看亚洲人成网站| 91小视频在线| 国产成人综合亚洲欧美在| 国产精品女同一区三区五区| 免费看a级毛片| 亚洲精品久综合蜜| 性欧美久久| 黄色网页在线观看| 无码专区第一页| 精品福利视频网| 永久成人无码激情视频免费| 国产迷奸在线看| 一本色道久久88| 亚洲成肉网| 91青青在线视频| 欧美另类一区| 国产成人精品第一区二区| 亚洲大学生视频在线播放| 国产主播喷水| av在线人妻熟妇| 亚洲精品午夜天堂网页| 性色一区| 9久久伊人精品综合| 国产在线专区| 国产成人免费手机在线观看视频| 福利在线一区| 国产人人射| 欧美成人精品一级在线观看| 丰满少妇αⅴ无码区| 国产午夜一级淫片| 操美女免费网站| 九九热精品视频在线| 国产白浆在线| 亚洲无码电影| 国产97公开成人免费视频| 狠狠色综合久久狠狠色综合| 人妻无码一区二区视频| 欧美无遮挡国产欧美另类| 一级毛片免费高清视频| 91色在线观看| 日本一区二区三区精品视频| 国产午夜看片| 欧美日韩精品一区二区视频| 亚洲精品无码抽插日韩| 日韩毛片基地| 亚洲精品男人天堂| 18禁黄无遮挡网站| 亚洲成aⅴ人在线观看| 欧美一区福利| 国产99视频精品免费观看9e| 午夜欧美在线| 免费看a级毛片| 午夜不卡视频| 97免费在线观看视频| 欧美综合中文字幕久久| 亚洲无码熟妇人妻AV在线| 丁香亚洲综合五月天婷婷| 成人免费视频一区| 小说区 亚洲 自拍 另类| 精品無碼一區在線觀看 | 97青草最新免费精品视频| 91欧美亚洲国产五月天| 色九九视频| 亚洲熟女偷拍| 久久semm亚洲国产| 91在线视频福利| 少妇高潮惨叫久久久久久| 日本五区在线不卡精品| 91精品国产自产在线老师啪l| 不卡午夜视频| 成人一级免费视频| 自慰网址在线观看| 欧美专区日韩专区|