新四季網

一種進程上下文保存、篡改檢測方法及裝置的製作方法

2023-05-19 20:35:36 2

專利名稱:一種進程上下文保存、篡改檢測方法及裝置的製作方法
技術領域:
本發明涉及多進程作業系統技術領域,尤其涉及一種進程上下文保存、篡改檢測方法及裝置。
背景技術:
目前,大部分作業系統都支持多進程調度,例如windows系統和Iinux系統,支持多進程調度的作業系統調度的優點是,從用戶側來看,作業系統可以同時執行用戶發起的多個應用,比如在windows作業系統下,用戶可以同時進行上網、下載電影以及進行word編輯等多種應用。對於採用單核CPU的作業系統,在同一個時刻只能執行一個應用程式,為了讓CPU 能夠同時運行多個應用程式,就必須讓CPU在不同的時間段內,輪流的執行這多個應用程式,如圖1所示,在Iinux作業系統中,每0. 01秒從當前應用切換到另外一個應用,其中音樂播放、下載和word編輯三個應用輪流被CPU執行,由於切換時間足夠快,用戶感知不到當前執行的應用的切換,因此從用戶角度看,這3個應用同時運行。為了支持多進程的同時運行,作業系統必須支持多進程調度,調度的原理如圖2 所示,在時刻1,時刻2和時刻3需要由當前執行的進程A切換到進程B,在從進程A切換到進程B之前,作業系統需要將進程A的現場數據,即進程上下文進行保存,進程上下文保存完畢後,將當前執行的進程切換到進程B;當作業系統需要將當前執行的線程切換回進程A 時,首先獲得保存的進程A的進程上下文,並且恢復進程A的進程上下文,從而實現對進程 A從切換前的進程上下文繼續執行,如同進程A持續被執行一樣。一個進程的進程上下文包括進程的狀態、有關變量和數據結構的值、機器寄存器的值、進程控制塊PCB以及有關程序、數據等,這些信息都包含在進程上下文中,現有技術中,作業系統為每一個進程分配一個獨立的上下文存儲空間,進程上下文都保存在自身的上下文存儲空間內。然而,由於一些應用程式自身存在BUG,在執行的過程中將篡改其它進程的進程上下文的數據,導致其它進程在重新切換為當前執行的進程時,無法恢復到切換前的進程上下文,最終導致該進程運行異常,甚至可能導致整個系統異常。現有技術中,為了防止進程上下文被篡改,一般採用將系統分成內核態和應用態, 應用態的程序只能訪問應用態的空間,無法直接訪問內核態的空間,從而通過將進程上下文保存在內核態的空間中,使得其它應用程式無法直接訪問內核態的空間,也就無法篡改進程上下文。然而,這種方案只能防止應用態的程序篡改進程上下文,無法防止內核態的程序篡改進程上下文。並且,現有技術中,當進程上下文被篡改後,無法實現對進程上下文是否被篡改的檢測
發明內容
本發明實施例提供一種進程上下文保存、篡改檢測方法及裝置,用以解決現有技術中存在的無法檢測進程上下文是否被篡改的問題。本發明實施例提供一種進程上下文保存方法,包括當需要進行進程切換時,獲取當前執行的進程的進程上下文;將獲取的所述進程上下文分別保存到為當前執行的所述進程分配的至少兩個上下文存儲空間中。本發明實施例還提供一種進程上下文篡改檢測方法,包括從為指定進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的所述指定進程的進程上下文;當獲取的至少兩份所述指定進程的進程上下文相同時,確定保存的所述指定進程的進程上下文未被篡改;否則,確定保存的所述指定進程的進程上下文被篡改。本發明實施例還提供一種進程上下文保存裝置,包括第一獲取單元,用於當需要進行進程切換時,獲取當前執行的進程的進程上下文;保存單元,用於將獲取的所述進程上下文分別保存到為當前執行的所述進程分配的至少兩個上下文存儲空間中。本發明實施例還提供一種進程上下文篡改檢測裝置,包括第二獲取單元,用於從為指定進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的所述指定進程的進程上下文;檢測單元,用於當獲取的至少兩份所述指定進程的進程上下文相同時,確定保存的所述指定進程的進程上下文未被篡改;否則,確定保存的所述指定進程的進程上下文被篡改。本發明有益效果包括本發明實施例提供的方法中,為線程分配了至少兩個上下文存儲空間,在需要進行進程切換而對當前執行的進程的進程上下文進行保存時,是將獲取的該進程的進程上下文分別保存到為該進程分配的至少兩個上下文存儲空間中;從而使得在進行進程上下文篡改檢測時,通過從為該進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中, 分別獲取保存的該進程的進程上下文,共計獲取到至少兩份該指定進程的進程上下文,並比較獲取的至少兩份該進程的進程上下文是否相同,如果相同,確定未被篡改,如果不同, 確定被篡改,即實現了對進程上下文是否被篡改的檢測。


圖1為支持多進程的作業系統中多個應用程式之間切換的示意圖;圖2為支持多進程的作業系統中進行多進程調度的示意圖;圖3為本發明實施例提供的進程上下文保存方法的流程圖;圖4為本發明實施例提供的進程上下文篡改檢測方法的流程圖;圖5為本發明實施例1中提供的進程上下文篡改檢測方法的流程圖;圖6為現有技術中為進程分配的上下文存儲空間的示意圖7為本發明實施例2中為進程分配的上下文存儲空間的示意圖;圖8為本發明實施例2中進程初始化的處理流程圖;圖9為本發明實施例2中進程上下文保存的處理流程圖;圖10為本發明實施例2中進程上下文篡改檢測的處理流程圖;圖11為本發明實施例3中提供的進程上下文保存裝置的結構示意圖;圖12為本發明實施例3中提供的進程上下文篡改檢測裝置的結構示意圖。
具體實施例方式為了給出檢測進程上下文是否被篡改的實現方案,本發明實施例提供了一種進程上下文保存、篡改檢測方法及裝置,以下結合說明書附圖對本發明的優選實施例進行說明, 應當理解,此處所描述的優選實施例僅用於說明和解釋本發明,並不用於限定本發明。並且在不衝突的情況下,本申請中的實施例及實施例中的特徵可以相互組合。本發明實施例提供一種進程上下文保存方法,如圖3所示,包括步驟S301、當需要進行進程切換時,獲取當前執行的進程的進程上下文。步驟S302、將獲取的該進程上下文分別保存到為當前執行的該進程分配的至少兩個上下文存儲空間中。較佳的,為了當進程上下文被篡改時,實現對進程上下文的恢復,可以為該進程分配至少三個上下文存儲空間,並將獲取的該進程上下文分別保存到分配的這至少三個上下文存儲空間中。相應的,基於上述圖3所示的進程上下文保存方法,本發明實施例還提供一種進程上下文篡改檢測方法,如圖4所示,包括步驟S401、從為指定進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的該指定進程的進程上下文。步驟S402、當獲取的至少兩份該指定進程的進程上下文相同時,確定保存的該指定進程的進程上下文未被篡改;否則,確定保存的該指定進程的進程上下文被篡改。較佳的,在上述篡改檢測方法中,還可以通過進行篡改檢測的時機的選擇,實現當發生篡改時,確定是由哪一個進程的執行引起的該指定進程的進程上下文的篡改。較佳的,還可以通過從分配的至少三個上下文存儲空間中,獲取的至少三份進程上下文是否相同的比較,當發生篡改時,確定哪一份進程上下文被篡改了,以及當需要將該指定進程切換為當前執行的進程時,選擇哪一份進程上下文進行恢復。本發明實施例中所描述的進程,包括了輕量進程(lightweight processes),即通常所述的線程,下面結合附圖,用具體實施例對本發明提供的方法及裝置進行詳細描述。實施例1 本實施例1中以為指定進程分配三個上下文存儲空間,保存該指定進程的上下文為例,對本發明實施例提出的進程上下文篡改檢測方法進行詳細描述,如圖5所示,具體包括如下處理步驟步驟S501、確定出需要進行進程切換,即需要從當前執行的進程切換到下一個進程。步驟S502、針對需要進行篡改檢測的指定進程,從為該指定進程分配的三個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的指定進程的進程上下文,共計獲取三份該指定進程的進程上下文,為描述方便,分別將三個上下文存儲空間稱作第一上下文存儲空間,第二上下文存儲空間和第三上下文存儲空間,將這三個上下文存儲空間中保存的該指定進程的進程上下文,分別對應的稱作第一進程上下文,第二進程上下文和第三進程上下文。步驟S503、比較獲取的三份該指定進程的進程上下文是否相同,即比較三份進程上下文是否兩兩均相同,如果相同,進入步驟S504,否則,進入步驟S505。其它實施例中,如果是獲取兩份該指定進程的進程上下文,則僅比較這兩份進程上下文是否相同即可。步驟S504、確定在這三個進程上下文存儲空間中分別保存的三份進程上下文未被篡改。步驟S505、判斷三份該指定進程的進程上下文中,是否存在兩份進程上下文是相同的,且與第三份進程上下文不同,如果是,進入步驟S506,否則,即為三份進程上下文中每兩份進程上下文均不相同,進入步驟S507。步驟S506、確定保存的相同的兩份該指定進程的進程上下文未被篡改,以及確定保存的第三份該指定進程的進程上下文被篡改。例如,假設比較結果為,第一進程上下文與第二進程上下文相同,且第一進程上下文和第二進程上下文均與第三進程上下文不同,則確定第一進程上下文和第二進程上下文未被篡改,第三進程上下文被篡改。並且,由於進程上下文是否被篡改的檢測,是上述步驟S501中在每次確定需要進行進程切換時進行的,所以,當確定存在保存的進程上下文被篡改後,還可以進一步的確定被篡改的進程上下文是在當前執行的進程的執行過程中被篡改的,即是當前執行的進程引起了該指定進程的該進程上下文被篡改。步驟S507、當這三份該指定進程的進程上下文中每兩份進程上下文均不相同時, 確定這三份進程上下文中存在被篡改的進程上下文,但本步驟中無法確定出具體是哪一個上下文存儲空間中保存的進程上下文被篡改。同上述步驟S506,由於進程上下文是否被篡改的檢測,是上述步驟S501中在每次確定需要進行進程切換時進行的,所以,當確定存在保存的進程上下文被篡改後,還可以進一步的確定被篡改的進程上下文是在當前執行的進程的執行過程中被篡改的,即是當前執行的進程引起了該指定進程的該進程上下文被篡改。步驟S508、進一步的,當進行檢測的該指定線程,為即將需要切換為當前執行的進程時,需要在切換時恢復該指定進程的進程上下文。當在該指定進程的上下文存儲空間中保存的進程上下文均未被篡改時,即從上述步驟S504進入本步驟時,可以從這三份進程上下文中選擇其中之一進行恢復。當確定該指定進程的三個上下文存儲空間中保存的三份進程上下文中,兩份進程上下文未被篡改,第三份進程上下文被篡改時,即從上述步驟S506進入本步驟時,可以從相同的兩份進程上下文中選擇其中之一進行恢復。當作業系統中輪流執行的多個進程至少三個時,在每次需要進行進程切換時,針對非當前執行的進程的其它各進程,均可以採用上述圖5所示的篡改檢測方法進行進程上下文是否被篡改的檢測,以便及時的發現進程上下文是否被篡改,並且能夠在發生篡改時確定出是由當前執行的進程引起的。本發明實施例1中提供的進程上下文檢測方法中,通過對保存的三份進程上下文的比較,實現對進程上下文是否被篡改的檢測;並且,通過在確定需要進行進程切換時執行篡改檢測的處理流程,還能夠當進程上下文被篡改時,進一步的確定是在當前執行的進程的執行過程中被篡改的,從而能夠進一步的基於這一檢測結果對作業系統的性能進行進一步的完善;並且,當存在進程上下文被篡改,但還存在相同的兩份進程上下文時,可以通過選擇相同的兩份進程上下文之一進行恢復。實施例2 在目前的作業系統中,如圖6所示,針對一個進程,為其分配的上下文存儲空間包括兩部分一個是進程控制塊,用於保存進程上下文中的第一部分進程上下文,包括控制進程運行的一些控制信息,例如,進程標識符、進程當前運行狀態和進程優先級等,通過在其中保存進程的這些外部特徵,以描述進程的運動變化過程,從而使得系統利用進程控制塊中保存的控制信息對進程進行控制和管理;另一個是進程堆棧,用於保存進程上下文中的第二部分進程上下文,即除進程控制塊中保存的控制信息以外的其它進程上下文;並且,在進程控制塊中還保存有一個指針,指向為該進程分配的進程堆棧,以便在保存進程上下文時獲取到該進程堆棧。本發明實施例2中,基於目前作業系統中為進程分配的上下文存儲空間的方式, 提出如圖7所示的為進程分配的上下文存儲空間的方式,即為每個進程分配至少兩個進程控制塊和兩個進程堆棧,並且,至少兩個進程控制塊中一個為主進程控制塊,其餘為備份進程控制塊,至少兩個進程堆棧中一個為主進程堆棧,其餘為備份進程堆棧,並且,在主進程控制塊中保存有分別指向其它備份進程控制塊、主進程堆棧和其它備份進程堆棧的指針, 用於在保存和獲取進程上下文時獲取到對應的進程控制塊和進程堆棧。圖7中是以為一個進程分配三個進程塊和三個進程堆棧為例。基於圖7所示的為進程分配的上下文存儲空間的方式,提出如下進程初始化的處理流程,如圖8所示,包括步驟S801、當啟動一個新的進程時,為該進程分配一個主進程控制塊和一個主進程堆棧,還分配至少一個備份進程控制塊和至少一個備份進程堆棧,例如,分配兩個備份進程控制塊和兩個備份進程堆棧。步驟S802、初始化該主進程控制塊中保存的控制信息,包括指向備份進程控制塊和進程堆棧的指針信息,以及其它控制信息;並初始化主進程堆棧中的進程上下文。步驟S803、將主進程控制塊中保存的控制信息複製到備份進程控制塊中,並將主進程堆棧中保存的進程上下文複製到備份進程堆棧中。步驟S804、在完成該進程的上下文存儲空間的初始化後,將該進程放入到作業系統可執行的進程隊列中,等待作業系統的調度。基於圖7所示的為進程分配的上下文存儲空間的方式,在完成圖8所示的進程初始化後,提出如下進程上下文保存的處理流程,如圖9所示,包括步驟S901、當需要進行進程切換時,獲取當前執行的進程的進程上下文,同時還確定該進程對應的上下文存儲空間,包括主進程控制塊、備份進程控制塊、主進程堆棧和備份進程堆棧。步驟S902、將獲取的該進程的進程上下文中需要保存到進程堆棧中的進程上下文,保存到主進程堆棧中。步驟S903、根據進程的實際處理需要,修改主進程控制塊中保存的控制信息。步驟S904、將主進程控制塊中保存的控制信息複製到備份進程控制塊中,並將主進程堆棧中保存的進程上下文複製到備份進程堆棧中。在完成圖9所示的進程上下文保存的處理流程後,提出如下進程上下文篡改檢測的處理流程,如圖10所示,包括步驟S1001、確定出需要進行進程切換,即需要從當前執行的進程切換到下一個進程。步驟S1002、針對需要進行篡改檢測的指定進程,分別從為該指定進程分配的主進程控制塊、兩個備份進程控制塊、主進程堆棧和兩個備份進程堆棧中,獲取保存的該指定進程的進程上下文,步驟S1003、比較從三個進程控制塊中獲取的進程上下文是否相同,以及比較從三個進程堆棧中獲取的進程上下文是否相同,如果均相同,進入步驟S1004,否則,進入步驟 S1005。步驟S1004、確定在主進程控制塊、兩個備份進程控制塊、主進程堆棧和兩個備份進程堆棧中分別保存的該指定進程的進程上下文未被篡改。步驟S1005、本步驟具體執行如下三個處理流程之一第一個處理流程當三個進程控制塊中獲取的進程上下文存在不同,而三個進程堆棧中獲取的進程上下文相同時,本步驟中,判斷三個進程控制塊中獲取的進程上下文中, 是否存在兩份進程上下文是相同的,且與第三份進程上下文不同,如果是,進入步驟S1006, 否則,進入步驟S1007 ;第二個處理流程當三個進程控制塊中獲取的進程上下文相同,而三個進程堆棧中獲取的進程上下文存在不同時,本步驟中,判斷三個進程堆棧中獲取的進程上下文中,是否存在兩份進程上下文是相同的,且與第三份進程上下文不同,如果是,進入步驟S1006,否則,進入步驟S1007 ;第三個處理流程當三個進程控制塊中獲取的進程上下文存在不同,且三個進程堆棧中獲取的進程上下文也存在不同時,本步驟中,第一次判斷處理為,判斷三個進程控制塊中獲取的進程上下文中,是否存在兩份進程上下文是相同的,且與第三份進程上下文不同;還進行第二次判斷處理,判斷三個進程堆棧中獲取的進程上下文中,是否存在兩份進程上下文是相同的,且與第三份進程上下文不同,如果兩個判斷結果均為是,進入步驟S1006, 否則,進入步驟S1007。步驟S1006、當上述步驟S1005中執行第一個處理流程時,確定兩個進程控制塊中所保存的相同的進程上下文未被篡改,以及確定第三個進程控制塊中保存的第三份進程上下文被篡改。當上述步驟S1005中執行第二個處理流程時,確定兩個進程堆棧中所保存的相同的進程上下文未被篡改,以及確定第三個進程堆棧中保存的第三份進程上下文被篡改。當上述步驟S1005中執行第三個處理流程時,確定兩個進程控制塊中所保存的相同的進程上下文未被篡改,以及確定第三個進程控制塊保存的第三份進程上下文被篡改; 並確定兩個進程堆棧中所保存的相同的進程上下文未被篡改,以及確定第三個進程堆棧中保存的第三份進程上下文被篡改。步驟S1007、當上述步驟S1005中執行第一個處理流程時,確定三個進程控制塊中保存的三份進程上下文中存在被篡改的進程上下文,但本步驟中無法確定出具體是哪一個進程控制塊中保存的進程上下文被篡改。當上述步驟S1005中執行第二個處理流程時,確定三個進程堆棧中保存的三份進程上下文中存在被篡改的進程上下文,但本步驟中無法確定出具體是哪一個進程堆棧中保存的進程上下文被篡改。當上述步驟S1005中執行第三個處理流程時,如果第一次判斷處理的判斷結果為否,第二次判斷處理的判斷結果為是,則確定三個進程控制快中保存的三份進程上下文中存在被篡改的進程上下文,但本步驟中無法確定出具體是哪一個進程控制塊中保存的進程上下文被篡改;如果第一次判斷處理的判斷結果為是,第二次判斷處理的判斷結果為否,則確定三個進程堆棧中保存的三份進程上下文中存在被篡改的進程上下文,但本步驟中無法確定出具體是哪一個進程堆棧中保存的進程上下文被篡改;如果第一次判斷處理的判斷結果為否,第二次判斷處理的判斷結果也為否,則確定三個進程控制快中保存的三份進程上下文中存在被篡改的進程上下文,但本步驟中無法確定出具體是哪一個進程控制塊中保存的進程上下文被篡改,同時還確定三個進程控制快中保存的三份進程上下文中存在被篡改的進程上下文,但本步驟中無法確定出具體是哪一個進程控制塊中保存的進程上下文被篡改。步驟S1008、進一步的,當進行檢測的該指定線程,為即將需要切換為當前執行的進程時,需要在切換時恢復該指定進程的進程上下文。當在該指定進程的三個進程控制塊和三個進程堆棧中保存的進程上下文均未被篡改時,即從上述步驟S1004進入本步驟時,可以從這三個進程控制塊中選擇其中之一保存的進程上下文進行恢復,並從這三個進程堆棧中選擇其中之一保存的進程上下文進行恢
Μ. ο當從上述步驟S1006進入本步驟時,當上述步驟S1005中執行第一個處理流程時, 可以從兩個進程控制塊中所保存的相同的兩份進程上下文中選擇其中之一進行恢復,並從三個進程堆棧中選擇其中之一保存的進程上下文進行恢復;當上述步驟S1005中執行第二個處理流程時,可以從兩個進程堆棧中所保存的相同的兩份進程上下文中選擇其中之一進行恢復,並從三個進程控制塊中選擇其中之一保存的進程上下文進行恢復;當上述步驟S1005中執行第三個處理流程時,可以從兩個進程控制塊中所保存的相同的兩份進程上下文中選擇其中之一進行恢復,並從兩個進程堆棧中所保存的相同的兩份進程上下文中選擇其中之一進行恢復。實施例3:基於同一發明構思,根據本發明上述實施例提供的進程上下文保存方法,相應地, 本發明實施例3還提供了一種進程上下文保存裝置,其結構示意圖如圖11所示,具體包括第一獲取單元1101,用於當需要進行進程切換時,獲取當前執行的進程的進程上下文;保存單元1102,用於將獲取的所述進程上下文分別保存到為當前執行的所述進程分配的至少兩個上下文存儲空間中。較佳的,保存單元1102,具體用於將獲取的所述進程上下文中的第一部分進程上下文,分別保存到為當前執行的所述進程分配的主進程控制塊和備份進程控制塊中,以及將獲取的所述進程上下文中的第二部分進程上下文,分別保存到為當前執行的所述進程分配的主進程堆棧和備份進程堆棧中。實施例4:基於同一發明構思,根據本發明上述實施例提供的進程上下文篡改檢測方法,相應地,本發明實施例4還提供了一種進程上下文篡改檢測裝置,其結構示意圖如圖12所示, 具體包括第二獲取單元1201,用於分別從為指定進程分配的至少兩個上下文存儲空間中, 獲取保存的至少兩份所述指定進程的進程上下文;檢測單元1202,用於當獲取的至少兩份所述指定進程的進程上下文相同時,確定保存的所述指定進程的進程上下文未被篡改;否則,確定保存的所述指定進程的進程上下文被篡改。較佳的,還包括確定單元1203,用於在所述第二獲取單元獲取保存的所述指定進程的進程上下文之前,確定需要進行進程切換;檢測單元1202,具體用於確定保存的所述指定進程的進程上下文是在當前執行的進程的執行過程中被篡改。較佳的,第二獲取單元1201,具體用於分別從為指定進程分配的至少三個上下文存儲空間中,獲取保存的至少三份所述指定進程的進程上下文;檢測單元1202,具體用於當獲取的至少三份所述指定進程的進程上下文中,兩份進程上下文相同,且與第三份進程上下文不同時,確定保存的第三份所述指定進程的進程上下文被篡改。較佳的,還包括恢復單元1204,用於當獲取的至少三份所述指定進程的進程上下文中,兩份進程上下文相同,且與第三份進程上下文不同時,且當需要將所述指定進程切換為當前執行的進程時,選擇相同的兩份進程上下文之一進行恢復。較佳的,第二獲取單元1201,具體用於從為指定進程分配的主進程控制塊和備份進程控制塊中,分別獲取保存的所述指定進程的第一部分進程上下文,以及從為指定進程分配的主進程堆棧和備份進程堆棧中,獲取保存的所述指定進程的第二部分進程上下文;檢測單元1202,具體用於當獲取的至少兩份所述指定進程的所述第一部分進程上下文相同時,確定保存的所述指定進程的所述第一部分進程上下文未被篡改;否則,確定保存的所述指定進程的所述第一部分進程上下文被篡改;以及當獲取的至少兩份所述指定進程的所述第二部分進程上下文相同時,確定保存的所述指定進程的所述第二部分進程上下文未被篡改;否則,確定保存的所述指定進程的所述第二部分進程上下文被篡改。綜上所述,本發明實施例提供的方案,包括分別從為指定進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的該指定進程的進程上下文;並當獲取的至少兩份該指定進程的進程上下文相同時,確定保存的該指定進程的進程上下文未被篡改;否則,確定保存的該指定進程的進程上下文被篡改。採用本發明實施例提供的方案,實現了對進程上下文是否被篡改的檢測。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1.一種進程上下文保存方法,其特徵在於,包括當需要進行進程切換時,獲取當前執行的進程的進程上下文;將獲取的所述進程上下文分別保存到為當前執行的所述進程分配的至少兩個上下文存儲空間中。
2.如權利要求1所述的方法,其特徵在於,將獲取的所述進程上下文分別保存到為當前執行的所述進程分配的至少兩個上下文存儲空間中,具體包括將獲取的所述進程上下文中的第一部分進程上下文,分別保存到為當前執行的所述進程分配的主進程控制塊和備份進程控制塊中,以及將獲取的所述進程上下文中的第二部分進程上下文,分別保存到為當前執行的所述進程分配的主進程堆棧和備份進程堆棧中。
3.—種進程上下文篡改檢測方法,其特徵在於,包括從為指定進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的所述指定進程的進程上下文;當獲取的至少兩份所述指定進程的進程上下文相同時,確定保存的所述指定進程的進程上下文未被篡改;否則,確定保存的所述指定進程的進程上下文被篡改。
4.如權利要求3所述的方法,其特徵在於,在獲取保存的所述指定進程的進程上下文之前,還包括確定需要進行進程切換;確定保存的所述指定進程的進程上下文被篡改,具體為確定保存的所述指定進程的進程上下文是在當前執行的進程的執行過程中被篡改。
5.如權利要求3所述的方法,其特徵在於,從為指定進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的所述指定進程的進程上下文,具體為從為指定進程分配的至少三個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的所述指定進程的進程上下文;確定保存的所述指定進程的進程上下文被篡改,具體為當獲取的至少三份所述指定進程的進程上下文中,兩份進程上下文相同,且與第三份進程上下文不同時,確定保存的第三份所述指定進程的進程上下文被篡改。
6.如權利要求5所述的方法,其特徵在於,當獲取的至少三份所述指定進程的進程上下文中,兩份進程上下文相同,且與第三份進程上下文不同時,還包括當需要將所述指定進程切換為當前執行的進程時,選擇相同的兩份進程上下文之一進行恢復。
7.如權利要求3所述的方法,其特徵在於,從為指定進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的所述指定進程的進程上下文,具體包括從為指定進程分配的主進程控制塊和備份進程控制塊中,分別獲取保存的所述指定進程的第一部分進程上下文,以及從為指定進程分配的主進程堆棧和備份進程堆棧中,獲取保存的所述指定進程的第二部分進程上下文;當獲取的至少兩份所述指定進程的進程上下文相同時,確定保存的所述指定進程的進程上下文未被篡改;否則,確定保存的所述指定進程的進程上下文被篡改,具體包括當獲取的至少兩份所述指定進程的所述第一部分進程上下文相同時,確定保存的所述指定進程的所述第一部分進程上下文未被篡改;否則,確定保存的所述指定進程的所述第一部分進程上下文被篡改;以及當獲取的至少兩份所述指定進程的所述第二部分進程上下文相同時,確定保存的所述指定進程的所述第二部分進程上下文未被篡改;否則,確定保存的所述指定進程的所述第二部分進程上下文被篡改。
8.—種進程上下文保存裝置,其特徵在於,包括第一獲取單元,用於當需要進行進程切換時,獲取當前執行的進程的進程上下文;保存單元,用於將獲取的所述進程上下文分別保存到為當前執行的所述進程分配的至少兩個上下文存儲空間中。
9.如權利要求8所述的裝置,其特徵在於,所述保存單元,具體用於將獲取的所述進程上下文中的第一部分進程上下文,分別保存到為當前執行的所述進程分配的主進程控制塊和備份進程控制塊中,以及將獲取的所述進程上下文中的第二部分進程上下文,分別保存到為當前執行的所述進程分配的主進程堆棧和備份進程堆棧中。
10.一種進程上下文篡改檢測裝置,其特徵在於,包括第二獲取單元,用於從為指定進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的所述指定進程的進程上下文;檢測單元,用於當獲取的至少兩份所述指定進程的進程上下文相同時,確定保存的所述指定進程的進程上下文未被篡改;否則,確定保存的所述指定進程的進程上下文被篡改。
11.如權利要求10所述的裝置,其特徵在於,還包括確定單元,用於在所述第二獲取單元獲取保存的所述指定進程的進程上下文之前,確定需要進行進程切換;所述檢測單元,具體用於確定保存的所述指定進程的進程上下文是在當前執行的進程的執行過程中被篡改。
12.如權利要求10所述的裝置,其特徵在於,所述第二獲取單元,具體用於從為指定進程分配的至少三個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的所述指定進程的進程上下文;所述檢測單元,具體用於當獲取的至少三份所述指定進程的進程上下文中,兩份進程上下文相同,且與第三份進程上下文不同時,確定保存的第三份所述指定進程的進程上下文被篡改。
13.如權利要求12所述的裝置,其特徵在於,還包括恢復單元,用於當獲取的至少三份所述指定進程的進程上下文中,兩份進程上下文相同,且與第三份進程上下文不同時,且當需要將所述指定進程切換為當前執行的進程時,選擇相同的兩份進程上下文之一進行恢復。
14.如權利要求10所述的裝置,其特徵在於,所述第二獲取單元,具體用於從為指定進程分配的主進程控制塊和備份進程控制塊中,分別獲取保存的所述指定進程的第一部分進程上下文,以及從為指定進程分配的主進程堆棧和備份進程堆棧中,獲取保存的所述指定進程的第二部分進程上下文;所述檢測單元,具體用於當獲取的至少兩份所述指定進程的所述第一部分進程上下文相同時,確定保存的所述指定進程的所述第一部分進程上下文未被篡改;否則,確定保存的所述指定進程的所述第一部分進程上下文被篡改;以及當獲取的至少兩份所述指定進程的所述第二部分進程上下文相同時,確定保存的所述指定進程的所述第二部分進程上下文未被篡改;否則,確定保存的所述指定進程的所述第二部分進程上下文被篡改。
全文摘要
本發明公開了一種進程上下文保存、篡改檢測方法及裝置,包括從為指定進程分配的至少兩個上下文存儲空間中的每個上下文存儲空間中,分別獲取保存的該指定進程的進程上下文;並當獲取的至少兩份該指定進程的進程上下文相同時,確定保存的該指定進程的進程上下文未被篡改;否則,確定保存的該指定進程的進程上下文被篡改。採用本發明實施例提供的方案,實現了對進程上下文是否被篡改的檢測。
文檔編號G06F11/00GK102436405SQ201110260699
公開日2012年5月2日 申請日期2011年9月5日 優先權日2011年9月5日
發明者王龍順 申請人:北京星網銳捷網絡技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀