欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

多核處理器系統(tǒng)、監(jiān)視控制方法以及監(jiān)視控制程序的制作方法

文檔序號:6352448閱讀:288來源:國知局

專利名稱::多核處理器系統(tǒng)、監(jiān)視控制方法以及監(jiān)視控制程序的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及控制針對裝置的監(jiān)視的多核處理器系統(tǒng)、監(jiān)視控制方法以及監(jiān)視控制程序。
背景技術(shù)
:從以往,作為提高計算機系統(tǒng)的可靠性的技術(shù)之一,公開有檢查點一再啟動(checkpoint-restart)這樣的技術(shù)(例如,參照下述非專利文獻(xiàn)I。)。該技術(shù)是定期地對各個應(yīng)用程序或系統(tǒng)整體的狀態(tài)信息進(jìn)行備份,在故障產(chǎn)生時回滾到備份系統(tǒng)的狀態(tài)的時刻重新開始執(zhí)行的方法。這里所謂的狀態(tài)信息是指包含存儲器的內(nèi)容、處理器內(nèi)的寄存器信息的信息。非專利文獻(xiàn)I的技術(shù)是以在大型設(shè)備的領(lǐng)域中計算需要數(shù)日的高度模擬(simulation)處理中產(chǎn)生了故障的情況下,即使不從頭開始重新執(zhí)行處理也能夠解決問題的方式而設(shè)計出的技術(shù)。因此同時運轉(zhuǎn)的應(yīng)用程序是一個,通過檢查點一再啟動使各個應(yīng)用程序高可靠化。在近些年,在嵌入系統(tǒng)中,也進(jìn)行像汽車的控制那樣的希望得到高度可靠性的處理,這樣的系統(tǒng)為了避免故障產(chǎn)生時不能長時間控制的狀態(tài),通過非專利文獻(xiàn)I的技術(shù)能夠在故障產(chǎn)生后立即復(fù)原處理。在將非專利文獻(xiàn)I的技術(shù)應(yīng)用到嵌入系統(tǒng)中的情況下,在嵌入系統(tǒng)中多個應(yīng)用程序聯(lián)合動作,所以按照對聯(lián)合的全部應(yīng)用程序進(jìn)行檢查點一再啟動的方式來進(jìn)行設(shè)定,所以降低開發(fā)效率。另外,嵌入系統(tǒng)與大型機相比CPU數(shù)量、存儲量少,所以在將非專利文獻(xiàn)I的技術(shù)應(yīng)用到嵌入系統(tǒng)的情況下,通過OS等對嵌入系統(tǒng)整體進(jìn)行檢查點一再啟動。另外,作為安裝多個CPU的多核處理器系統(tǒng)中故障產(chǎn)生時的技術(shù),例如,公開有在將線程的執(zhí)行信息儲存到存儲器,在某個CPU中產(chǎn)生了故障的情況下,以其他的CPU來代替處理的技術(shù)(例如,參照下述專利文獻(xiàn)I。)。另外,作為其它的技術(shù),公開有利用監(jiān)視裝置來集中監(jiān)視正在執(zhí)行的各處理的狀態(tài)的技術(shù)(例如,參照下述專利文獻(xiàn)2。)。若使用非專利文獻(xiàn)I的技術(shù)和專利文獻(xiàn)2的技術(shù)應(yīng)用到多核處理器系統(tǒng)的故障產(chǎn)生時的復(fù)原處理中,則成為特定的CPU進(jìn)行保存多核處理器系統(tǒng)整體的狀態(tài)信息的處理的技術(shù)(以下,稱為“現(xiàn)有技術(shù)I”。)。通過應(yīng)用現(xiàn)有技術(shù)1,多核處理器系統(tǒng)能夠在故障產(chǎn)生時使用保存的狀態(tài)信息來復(fù)原狀態(tài)。專利文獻(xiàn)專利文獻(xiàn)1:日本特開2006-139621號公報專利文獻(xiàn)2:日本特開2008-310632號公報非專利文獻(xiàn)非專利文獻(xiàn)1:“ASurveyofCheckpoint/RestartImplementations,,=online],2010年8月24日檢索,網(wǎng)絡(luò)<URL:https://ftg.1bl.gov/CheckpointRestart/Pubs/checkpointSurvey一020724b.pdf>然而,在上述的現(xiàn)有技術(shù)中,在現(xiàn)有技術(shù)I所涉及的技術(shù)中,存在如下問題,在保存狀態(tài)信息時,為了不變更狀態(tài)而必須停止處理,停止的結(jié)果就是不能進(jìn)行任何處理,所以浪費CPU的處理能力。具體而言,若嵌入系統(tǒng)是安裝一個CPU的單核處理器,則同時只能進(jìn)行一個處理,所以在狀態(tài)信息的保存過程中不能夠執(zhí)行應(yīng)用程序,所以在CPU的處理能力中不存在空閑。但是,若嵌入系統(tǒng)是多核心處理器,則在一個CPU進(jìn)行狀態(tài)信息的保存的期間,其他的(PU不能持續(xù)執(zhí)行應(yīng)用程序從而不能夠進(jìn)行任何處理,所以存在浪費處理能力的問題。
發(fā)明內(nèi)容本發(fā)明為了消除上述現(xiàn)有技術(shù)的問題點,其目的在于提供在特定的核保存狀態(tài)信息期間,其他的核能夠持續(xù)進(jìn)行處理的多核處理器系統(tǒng)、監(jiān)視控制方法以及監(jiān)視控制程序。為了解決上述的課題并實現(xiàn)目的,公開的多核處理器系統(tǒng)當(dāng)檢測出進(jìn)程在多個核中被執(zhí)行這一情況時,生成對表示進(jìn)程的執(zhí)行狀態(tài)和進(jìn)程內(nèi)的各監(jiān)視對象線程的執(zhí)行狀態(tài)的狀態(tài)信息進(jìn)行保存的特定線程。根據(jù)本多核處理器系統(tǒng)、監(jiān)視控制方法以及監(jiān)視控制程序,起到在特定的核保存狀態(tài)信息期間,其他的核能夠持續(xù)處理,能夠提高處理能力,并實現(xiàn)無停止動作這樣的效果O圖1是表示實施方式所涉及的多核處理器系統(tǒng)100的硬件的框圖。圖2是表示本實施方式的各CPU和進(jìn)程的執(zhí)行狀態(tài)的概要的說明圖。圖3是表示多核處理器系統(tǒng)100的功能的框圖。圖4是表示正常時監(jiān)視線程保存狀態(tài)信息的定時的說明圖。圖5是表示故障產(chǎn)生時多核處理器系統(tǒng)100的動作的說明圖。圖6是表示故障產(chǎn)生時可持續(xù)的進(jìn)程的概要的說明圖。圖7是表示監(jiān)視線程211保存狀態(tài)信息215的概要的說明圖。圖8是表示監(jiān)視線程211復(fù)原使用了狀態(tài)信息215的狀態(tài)的概要的說明圖。圖9是表示OS內(nèi)部的功能的說明圖。圖10是表示進(jìn)程用區(qū)域的存儲內(nèi)容的生成例的說明圖。圖11是表示由OS進(jìn)行的事件處理的流程圖(其I)。圖12是表不由OS進(jìn)行的事件處理的流程圖(其2)。圖13是表示監(jiān)視線程的動作的流程圖(其I)。圖14是表示監(jiān)視線程的動作的流程圖(其2)。具體實施例方式以下參照附圖,對本發(fā)明所涉及的多核處理器系統(tǒng)、監(jiān)視控制方法以及監(jiān)視控制程序的優(yōu)選實施方式進(jìn)行詳細(xì)說明。(多核處理器系統(tǒng)100的硬件)圖1是表示實施方式所涉及的多核處理器系統(tǒng)100的硬件的框圖。在圖1中,多核處理器系統(tǒng)100包含安裝多個CPU的CPUslOl、ROM(Read-OnlyMemory:只讀存儲器)102JPRAM(RandomAccessMemory:隨機存儲器)103。另外,多核處理器系統(tǒng)100包含閃存R0M104、閃存ROM控制器105、和閃存R0M106。另外,多核處理器系統(tǒng)100作為與用戶、其他設(shè)備的輸入輸出裝置包含顯示器107、I/F(Interface:接口)108、和鍵盤109。另外,各部分別通過總線110連接。這里,CPUsIOI管理多核處理器系統(tǒng)100整體的控制。CPUslOl是指并列連接了單核處理器而成的全部CPU。CPUslOl包含CPU#OCPU#3。另外,CPUslOl也可以包含至少2個以上的CPU。CPU#OCPU#3分別具有專用的高速緩沖存儲器。另外,所謂的多核處理器系統(tǒng),是包含安裝了多個核的處理器的計算機系統(tǒng)。若安裝了多個核,則可以是安裝了多個核而成的單一處理器,也可以是并列有單核處理器的處理器組。此外,在本實施方式中,列舉并列有作為單核處理器的CPU的方式為例進(jìn)行說明。R0M102存儲有啟動程序等程序。RAM103作為CPUslOl的工作區(qū)域被使用。閃存R0M104存儲有OS(OperatingSystem:操作系統(tǒng))等系統(tǒng)軟件、應(yīng)用程序軟件等。例如,在更新OS的情況下,多核處理器系統(tǒng)100通過I/F108接收新的OS,并將儲存在閃存R0M104中的舊的OS更新為接收到的新的OS。閃存ROM控制器105根據(jù)CPUslOl的控制來控制數(shù)據(jù)對閃存R0M106的讀/寫。閃存R0M106存儲以在閃存ROM控制器105的控制下寫入的數(shù)據(jù)。作為數(shù)據(jù)的具體例是使用多核處理器系統(tǒng)100的用戶通過I/F108獲取的圖像數(shù)據(jù)、視頻數(shù)據(jù)等。閃存R0M106例如能夠采用存儲卡、SD卡等。顯示器107除了顯示光標(biāo)、圖標(biāo)或者工具箱以外,還顯示文件、圖像、功能信息等數(shù)據(jù)。該顯示器107例如能夠采用TFT液晶顯示器等。I/F108通過通信線路與LAN(LocalAreaNetwork:局域網(wǎng))、WAN(WideAreaNetwork:廣域網(wǎng))、因特網(wǎng)等網(wǎng)絡(luò)111連接,經(jīng)由該網(wǎng)絡(luò)111與其他的裝置連接。并且,I/F108管理網(wǎng)絡(luò)111和內(nèi)部的接口,控制來自外部裝置的數(shù)據(jù)的輸入輸出。在I/F108中例如能夠采用調(diào)制解調(diào)器、LAN適配器等。鍵盤109具備用于輸入數(shù)字、各種指示等的鍵,進(jìn)行數(shù)據(jù)的輸入。另外,鍵盤109也可以是觸摸面板式的輸入墊、數(shù)字鍵盤等。圖2是表示本實施方式中的各CPU和進(jìn)程的執(zhí)行狀態(tài)的概要的說明圖。圖2所示的多核處理器系統(tǒng)100執(zhí)行進(jìn)程210、進(jìn)程220、進(jìn)程230這3個進(jìn)程。進(jìn)程210進(jìn)程230將特定的服務(wù)提供給用戶。例如,進(jìn)程210是提供Web服務(wù)的Web瀏覽器進(jìn)程,進(jìn)程220是再生流動態(tài)圖像的同態(tài)圖像再生進(jìn)程。進(jìn)程210進(jìn)程230為了將特定的服務(wù)提供給用戶,按照成為程序執(zhí)行單位的各個線程劃分功能,提供一個服務(wù)。例如,Web瀏覽器進(jìn)程具有以下3個線程。第一個線程是根據(jù)HTTP(HyperTextTransferProtocol:超級文本傳輸協(xié)議)協(xié)議收發(fā)數(shù)據(jù)的線程。接著,第二個線程是解析接收到的HTML(HyperTextMarkupLanguage:超文本標(biāo)記語言)數(shù)據(jù)的線程。最后,第三個線程是使用解析后的結(jié)果來顯示HTML數(shù)據(jù)的線程。在線程的狀態(tài)中,有執(zhí)行狀態(tài)、可執(zhí)行狀態(tài)和等待狀態(tài),以下,將執(zhí)行狀態(tài)和可執(zhí)行狀態(tài)組合稱為“運轉(zhuǎn)狀態(tài)”。OS具有基于分時、或者優(yōu)先級順序這樣的OS的調(diào)度策略,將處于運轉(zhuǎn)狀態(tài)的線程分配給CPU的選擇線程的功能,將線程分配給CPU并加以執(zhí)行。已執(zhí)行的線程是執(zhí)行狀態(tài)的線程,未分配給CPU的線程是可執(zhí)行狀態(tài)的線程。另外,等待狀態(tài)的線程是由于I/O的響應(yīng)等待、或者執(zhí)行作為OS的待機命令的sleep(休眠)指令等因某些理由而暫時不能執(zhí)行的狀態(tài)的線程。在等待狀態(tài)的線程中,將不能執(zhí)行的狀態(tài)被消除從而從等待狀態(tài)遷移到運轉(zhuǎn)狀態(tài)的情況稱為“起動”。另外,所謂的進(jìn)程,是OS中的管理單位,多個線程能屬于一個進(jìn)程。屬于同一進(jìn)程的線程能夠共享存儲器等OS所管理的計算機資源。另一方面,屬于不同進(jìn)程的線程彼此不能共享資源,例如不能參照不同進(jìn)程的存儲器的內(nèi)容。像這樣,計算機資源按照每個進(jìn)程是獨立的,能夠按照每個進(jìn)程來保存狀態(tài)信息。另外,進(jìn)程210進(jìn)程230具有作為本實施方式的特征的監(jiān)視線程。具體而言,進(jìn)程210包含監(jiān)視線程211、和線程212線程214。進(jìn)程220包含監(jiān)視線程221、和線程222、線程223。進(jìn)程230包含監(jiān)視線程231、和線程232線程235。另外,作為CPU#OCPU#3中的進(jìn)程210進(jìn)程230的線程的分配,CPU#O被分配監(jiān)視線程211、線程222、線程232。而且CPU#O利用OS#O的功能,根據(jù)被分配的線程的優(yōu)先級來執(zhí)行監(jiān)視線程211、線程222、線程232。同樣,CPU#I被分配線程212、監(jiān)視線程221、線程233。CPU#2被分配線程213、線程234、線程235。CPU#3被分配線程214、線程223、監(jiān)視線程231。這樣,多核處理器系統(tǒng)100中,分配有監(jiān)視線程的CPU不分配同一進(jìn)程內(nèi)的其他線程。此外,監(jiān)視線程是在進(jìn)程生成時由生成進(jìn)程的CPU生成。監(jiān)視線程定期被執(zhí)行,將自身所屬的進(jìn)程內(nèi)的監(jiān)視線程以外的線程作為監(jiān)視對象線程,將監(jiān)視對象線程的狀態(tài)信息保存到RAM103中。此外,監(jiān)視對象線程可以是自身所屬的進(jìn)程內(nèi)的監(jiān)視線程以外的所有線程,也可以是一部分線程。以下,在僅記述為線程的情況下,該線程是監(jiān)視對象線程。例如,監(jiān)視線程211在進(jìn)程210用區(qū)域內(nèi)生成狀態(tài)信息215并保存到RAM103。同樣,監(jiān)視線程221在進(jìn)程220用區(qū)域內(nèi)生成狀態(tài)信息224并保存到RAM103。同樣,在圖2中未圖示,但監(jiān)視線程231也在進(jìn)程230用區(qū)域內(nèi)生成狀態(tài)信息并保存到RAM103。具體而言,狀態(tài)信息為線程的執(zhí)行狀態(tài),是包含了從初始數(shù)據(jù)發(fā)生了變更的數(shù)據(jù)和數(shù)據(jù)的地址的數(shù)據(jù)。另外,線程執(zhí)行中的CPU的寄存器的值也包含于狀態(tài)信息。并且,作為進(jìn)程的執(zhí)行狀態(tài),進(jìn)程整體的狀態(tài)變更了的情況也包含于狀態(tài)信息。作為變更進(jìn)程整體的狀態(tài)的情況,例如,在進(jìn)程的優(yōu)先級、進(jìn)程所確保的存儲量等發(fā)生變更了的情況下,包含于狀態(tài)信息。監(jiān)視線程211將狀態(tài)信息215保存到RAM103,由此來保存進(jìn)程210的狀態(tài)和線程212線程214的狀態(tài)。同樣,監(jiān)視線程221將狀態(tài)信息224保存到RAM103,由此來保存進(jìn)程220的狀態(tài)、和線程222、線程223的狀態(tài)。(多核處理器系統(tǒng)100的功能)接下來,對多核處理器系統(tǒng)100的功能進(jìn)行說明。圖3是表示多核處理器系統(tǒng)100的功能的框圖。在圖3中,對與監(jiān)視線程有關(guān)的功能進(jìn)行說明。多核處理器系統(tǒng)100包含檢測部301、生成部302、設(shè)定部303、通知部304、保存部305、復(fù)原部306、保存部307、和復(fù)原部308。成為該控制部的功能(檢測部301復(fù)原部308),通過CPU#OCPU#3中任意的CPU執(zhí)行存儲在存儲裝置中的程序,來實現(xiàn)該功能。所謂的存儲裝置具體而言,例如是圖1所示的R0M102、RAM103、閃存R0M104、閃存R0M106等。另外,在圖3中,檢測部301復(fù)原部306作為CPU#O的功能被圖示,但也可以是CPU#ICPU#3的功能。例如,在CPU#I所執(zhí)行的進(jìn)程中產(chǎn)生了進(jìn)程220的啟動請求的情況下,CPU#I生成進(jìn)程220,并作為CPU#I的功能執(zhí)行檢測部301。另外,保存部305和復(fù)原部306是包含于監(jiān)視線程211中的功能,在以CPU#O以外的其他的CPU執(zhí)行監(jiān)視線程的情況下,也可以是其他CPU的功能。例如,保存部307和復(fù)原部308是包含于由CPU#I執(zhí)行的監(jiān)視線程221的功能。檢測部301具有檢測進(jìn)程在多個核中被執(zhí)行的情況的功能。作為執(zhí)行進(jìn)程的情況,例如檢測部301也可以檢測進(jìn)程被生成并被執(zhí)行的情況?;蛘?,在所生成的進(jìn)程被執(zhí)行并且在由用戶等接受到請求狀態(tài)信息的保存開始之后再次開始執(zhí)行的情況下,也可以檢測為進(jìn)程被執(zhí)行的情況。具體而言,檢測部301檢測出執(zhí)行進(jìn)程210。此外,被檢測出這樣的信息被存儲在檢測部301所作用的CPU的寄存器、高速緩沖存儲器、RAM103等存儲區(qū)域。生成部302具有如下功能:在由檢測部301檢測出進(jìn)程被執(zhí)行的情況下,生成對表示進(jìn)程的執(zhí)行狀態(tài)和進(jìn)程內(nèi)的各監(jiān)視對象線程的執(zhí)行狀態(tài)的狀態(tài)信息進(jìn)行保存的特定線程。所謂的特定線程是監(jiān)視線程。例如,在檢測出進(jìn)程210被執(zhí)行的情況下,生成部302生成對表示進(jìn)程210的執(zhí)行狀態(tài)和成為監(jiān)視對象線程的線程212線程214的執(zhí)行狀態(tài)的狀態(tài)信息215進(jìn)行保存的監(jiān)視線程211。此外,監(jiān)視線程被生成這樣的信息被存儲在生成部302發(fā)揮作用的CPU的寄存器、高速緩沖存儲器、RAM103等存儲區(qū)域。設(shè)定部303具有將執(zhí)行由生成部302生成的特定線程的核設(shè)定為與執(zhí)行監(jiān)視對象線程的核不同的核的功能。例如,設(shè)定部303將執(zhí)行監(jiān)視線程211的CPU設(shè)定為與執(zhí)行線程212線程214的CPU#ICPU#3不同的CPU#O。另外,在生成監(jiān)視線程的時刻由所有的CPU執(zhí)行監(jiān)視對象線程的情況下,設(shè)定部303也可以移行(migration)幾個監(jiān)視對象線程,準(zhǔn)備未執(zhí)行監(jiān)視對象線程的CPU。此外,執(zhí)行監(jiān)視線程的CPU的信息被存儲在設(shè)定部303發(fā)揮作用的CPU,或者執(zhí)行監(jiān)視線程的CPU的寄存器、高速緩沖存儲器、RAM103等存儲區(qū)域。通知部304具有如下功能:從檢測出重新啟動已完成的核的核向從多個核中除了重新啟動已完成的核的其他核,通知使進(jìn)程以及各監(jiān)視對象線程朝向保存狀態(tài)信息的時刻的狀態(tài)復(fù)原的復(fù)原請求。另外,在多個核中任意的核已完成重新啟動的情況下執(zhí)行通知部304。此外,檢測出重新啟動已完成的核的核可以是完成了重新啟動的核自身,也可以是完成了重新啟動的核以外的核。例如,在CPU#I中完成了重新啟動的情況下,通知部304向除去CPU#I以外的CPU#OXPU#2,CPU#3通知使進(jìn)程210以及線程212線程214朝向信息215被保存狀態(tài)的時刻的狀態(tài)復(fù)原的復(fù)原請求。此外,在接受到復(fù)原請求的CPU#OXPU#2,CPU#3中,進(jìn)行復(fù)原的是執(zhí)行監(jiān)視線程的CPU#O。另外,通知部304也可以從檢測出在重新啟動已完成的核中產(chǎn)生了成為進(jìn)行重新啟動的原因的故障的核,向多個核中至少除了產(chǎn)生了故障的核以外的其他核,通知各監(jiān)視對象線程的停止請求。例如,通知部304從檢測出在CPU#I產(chǎn)生了故障的CPU#0,至少向CPU#O、CPU#2、CPU#3,通知線程212線程214的停止請求。另外,通知部304也可以將某個CPU重新啟動已完成的情況通知給CPUslOl中重新啟動已完成的CPU以外的其他CPU。以其他的CPU執(zhí)行的監(jiān)視線程在接受到重新啟動完成的通知的情況下也可以復(fù)原進(jìn)程以及監(jiān)視對象線程的狀態(tài)。同樣,通知部304也可以將某個CPU產(chǎn)生了故障的情況通知給CPUslOl中至少產(chǎn)生了故障的CPU以外的其他CPU。以其他CPU執(zhí)行的監(jiān)視線程在接受到故障產(chǎn)生的通知的情況下也可以進(jìn)行監(jiān)視對象線程的停止。保存部305、保存部307具有保存表示進(jìn)程的執(zhí)行狀態(tài)和進(jìn)程內(nèi)的各監(jiān)視對象線程的執(zhí)行狀態(tài)的狀態(tài)信息的功能。例如,保存部305保存表示進(jìn)程210的執(zhí)行狀態(tài)和成為監(jiān)視對象線程的線程212線程214的執(zhí)行狀態(tài)的狀態(tài)信息215。此外,保存部305、保存部307在使監(jiān)視線程定期起動的情況下發(fā)揮作用。復(fù)原部306、復(fù)原部308具有在由通知部304通知了復(fù)原請求的情況下,將進(jìn)程以及各監(jiān)視對象線程復(fù)原到狀態(tài)信息被保存的時刻的狀態(tài)的功能。例如,復(fù)原部306將進(jìn)程210和成為監(jiān)視對象線程的線程212線程214復(fù)原到狀態(tài)信息215被保存的狀態(tài)。另外,復(fù)原部306、復(fù)原部308也可以在由通知部304通知了停止請求以及復(fù)原請求的情況進(jìn)行復(fù)原。圖4是表示正常時監(jiān)視線程保存狀態(tài)信息的定時的說明圖。從時刻t0到時刻tl,CPU#O執(zhí)行線程222,CPU#I執(zhí)行線程212和線程233,CPU#2執(zhí)行線程213,CPU#3執(zhí)行線程223和線程214。在時刻tl的時刻,若CPU#O執(zhí)行監(jiān)視線程211,則利用監(jiān)視線程211的功能,CPU#O使以CPU#2正在執(zhí)行的線程213和以CPU#3正在執(zhí)行的線程214停止。在線程213和線程214停止后,利用監(jiān)視線程211的功能,CPU#O獲取從時刻t0到時刻tl執(zhí)行的進(jìn)程210內(nèi)的線程212線程214所寫入的數(shù)據(jù)的差值,并進(jìn)行保存。另外,從時亥Ijtl到時亥Ijt2,CPU#O執(zhí)行監(jiān)視線程211,CPU#I執(zhí)行線程233,CPU#2執(zhí)行線程234,CPU#3執(zhí)行線程223。在時刻t2的時刻,若CPU#3執(zhí)行監(jiān)視線程231,則利用監(jiān)視線程231的功能,CPU#3使以CPU#I正在執(zhí)行的線程233和以CPU#2正在執(zhí)行的線程234停止。在線程233和線程234停止后,利用監(jiān)視線程231的功能,CPU#3獲取從時刻t0到時刻t2執(zhí)行的進(jìn)程230內(nèi)的線程233、線程234所寫入的數(shù)據(jù)的差值,并進(jìn)行保存。另外,從時亥Ijt2到時亥Ijt3,CPU#O執(zhí)行線程222,CPU#I執(zhí)行線程212,CPU#2執(zhí)行線程213,CPU#3執(zhí)行監(jiān)視線程231。在時刻t3的時刻,若CPU#I執(zhí)行監(jiān)視線程221,則利用監(jiān)視線程221的功能,CPU#I使以CPU#O正在執(zhí)行的線程222停止。在線程222停止后,利用監(jiān)視線程221的功能,CPU#I獲取從時刻t0到時刻t3執(zhí)行的進(jìn)程220內(nèi)的線程222、線程223所寫入的數(shù)據(jù)的差值,并進(jìn)行保存。另外,從時刻t3到時刻t4,CPU#O執(zhí)行線程232和線程222,CPU#I執(zhí)行監(jiān)視線程221、線程212和線程233。并且,CPU#2執(zhí)行線程213和線程235,CPU#3執(zhí)行線程214和線程223。在時刻t4的時刻,若CPU#O執(zhí)行監(jiān)視線程211,則利用監(jiān)視線程211的功能,CPU#O使以CPU#3正在執(zhí)行的線程214停止。在線程214停止后,利用監(jiān)視線程211的功能,CPU#O獲取從時刻t2到時刻t4執(zhí)行的進(jìn)程210內(nèi)的線程212線程214所寫入的數(shù)據(jù)的差值,并進(jìn)行保存。同樣,在時刻t5的時刻,利用監(jiān)視線程231的功能CPU#3獲取從時刻t3到時刻t5執(zhí)行的進(jìn)程230內(nèi)的線程232、線程233、線程235所寫入的數(shù)據(jù)的差值,并進(jìn)行保存。另夕卜,在時刻t6的時刻,利用監(jiān)視線程221的功能CPU#I獲取從時刻t3到時刻t5執(zhí)行的進(jìn)程220內(nèi)的線程222、線程223所寫入的數(shù)據(jù)的差值,并進(jìn)行保存。這樣,即使監(jiān)視線程正在保存,其他的進(jìn)程內(nèi)的線程也能夠執(zhí)行,所以能夠有效地利用CPU的處理能力。另外,監(jiān)視線程被OS自動地插入,所以也可以不改變各進(jìn)程的程序。圖5是表示故障產(chǎn)生時的多核處理器系統(tǒng)100的動作的說明圖。在圖5所示的多核處理器系統(tǒng)100中,假定在圖4的時刻tl在CPU#I中產(chǎn)生了故障的情況。若在時刻tl在CPU#I中產(chǎn)生故障,則CPU#O通過接受到故障產(chǎn)生的通知的監(jiān)視線程211,使線程213、線程214停止。并且,CPU#3通過監(jiān)視線程231,使線程232線程235停止。此外,對于故障產(chǎn)生時的線程停止的概要,在圖6中后述。從時刻tl到CPU#I重新啟動完成的時刻t2,CPU#O執(zhí)行線程222,CPU#3執(zhí)行線程223。CPU#2由于不存在能夠執(zhí)行的線程,所以暫停。在時刻t2,若CPU#I的重新啟動完成,則利用以重新啟動完成模式起動的監(jiān)視線程211、監(jiān)視線程231進(jìn)行進(jìn)程210、進(jìn)程230的復(fù)原。具體而言,監(jiān)視線程211進(jìn)行線程212線程214的復(fù)原,監(jiān)視線程231進(jìn)行線程232線程235的復(fù)原。另外,產(chǎn)生了故障的CPU#I參照其他的OS的管理信息,根據(jù)正在運轉(zhuǎn)著的進(jìn)程、和分配到其他的OS的監(jiān)視線程的一覽表,判斷出在進(jìn)程220中不存在監(jiān)視線程,并生成監(jiān)視線程221。另外,在時刻t3,若CPU#O檢測出與監(jiān)視線程211的復(fù)原處理相比線程222的優(yōu)先級高,則使監(jiān)視線程211退避,執(zhí)行線程222。像這樣,若線程的優(yōu)先級高則也可以中斷進(jìn)復(fù)原處理。若在時刻t4進(jìn)程230的復(fù)原完成,則線程232線程235成為能夠執(zhí)行。CPU#OCPU#3在線程232線程235和其他的能夠執(zhí)行的線程中,基于優(yōu)先級等來執(zhí)行線程。具體而言,CPU#O從時刻t3開始接著執(zhí)行線程222,CPU#I執(zhí)行線程233,CPU#2執(zhí)行線程234,CPU#3執(zhí)行線程223。接下來,若在時刻t5進(jìn)程210的復(fù)原完成,則線程212線程214成為能夠執(zhí)行。CPU#OCPU#3在線程212線程214和其他的能夠執(zhí)行的線程中,基于優(yōu)先級等來執(zhí)行線程。具體而言,CPU#O執(zhí)行線程232,CPU#2從時刻t4開始接著執(zhí)行線程234,CPU#3從時刻t4開始接著執(zhí)行線程223。另外,在圖5中,執(zhí)行監(jiān)視線程211的CPU#O進(jìn)行進(jìn)程210的復(fù)原處理,執(zhí)行監(jiān)視線程231的CPU#3進(jìn)行進(jìn)程230的復(fù)原處理。這樣,若多核處理器系統(tǒng)100使分配有監(jiān)視線程的CPU分散,則能使故障產(chǎn)生時的復(fù)原處理不集中到一個CPU中,而是分散到各CPU。圖6是表示在故障產(chǎn)生時可持續(xù)的進(jìn)程的概要的說明圖。在圖6中,假定在CPU#I中產(chǎn)生了故障的情況。若在CPU#I中產(chǎn)生故障,則進(jìn)程內(nèi)的監(jiān)視線程停止其他的線程。接著,在CPU#I重新啟動完成后,監(jiān)視線程進(jìn)行復(fù)原處理。具體而言,CPU#O通過監(jiān)視線程211使線程213、線程214停止。并且,CPU#3通過監(jiān)視線程231,使線程232、線程234、線程235停止。進(jìn)程220的線程222和線程223也可以不進(jìn)行復(fù)原處理,而是可持續(xù)的。像這樣,一部分進(jìn)程能夠不進(jìn)行復(fù)原動作而持續(xù)動作。所謂的一部分進(jìn)程是在產(chǎn)生了故障的CPU中分配有監(jiān)視線程的進(jìn)程。例如,作為與圖6所示的例子不同的例子,在CPU#O中產(chǎn)生了故障的情況,進(jìn)程210的線程212線程214可持續(xù)動作。圖7是表示監(jiān)視線程211保存狀態(tài)信息215的概要的說明圖。在R0M102中,儲存有OS#O訪問的管理信息初始值701、進(jìn)程210用加載模塊。在進(jìn)程210用加載模塊的內(nèi)部,儲存有進(jìn)程210的初始數(shù)據(jù)702。此外,管理信息初始值701和進(jìn)程210用加載模塊也可以儲存在RAM103、閃存R0M104等中。接下來,在RAM103中,確保進(jìn)程210用區(qū)域,在進(jìn)程210用區(qū)域的內(nèi)部,儲存有OS管理信息703、數(shù)據(jù)704、狀態(tài)信息215。OS管理信息703儲存有OS#I所管理的進(jìn)程的管理信息、線程的管理信息。數(shù)據(jù)704儲存有線程212線程214所訪問的數(shù)據(jù)。此外,管理信息初始值701數(shù)據(jù)704在圖10中詳細(xì)敘述。利用監(jiān)視線程211的功能CPU#O參照管理信息初始值701、初始數(shù)據(jù)702、0S管理信息703、和數(shù)據(jù)704,輸出狀態(tài)信息215,并儲存到RAM103。具體而言,CPU#O對初始數(shù)據(jù)702和數(shù)據(jù)704進(jìn)行比較,在數(shù)據(jù)704從初始數(shù)據(jù)702發(fā)生了變更的情況下,向狀態(tài)信息215輸出。同樣,CPU#O對管理信息初始值701和OS管理信息703進(jìn)行比較,在OS管理信息703從管理信息初始值701發(fā)生了變更的情況下,向狀態(tài)信息215輸出。圖8是表示監(jiān)視線程211使用了狀態(tài)信息215的狀態(tài)的復(fù)原的概要的說明圖。假定在除了CPU#O以外的CPU#ICPU#3中任意的CPU中產(chǎn)生故障,產(chǎn)生故障的CPU的重新啟動已完成的情況。此時,利用監(jiān)視線程211的功能CPU#O參照管理信息初始值701、初始數(shù)據(jù)702和狀態(tài)信息215,更新OS管理信息703和數(shù)據(jù)704。具體而言,CPU#O根據(jù)初始數(shù)據(jù)702和狀態(tài)信息215,將線程212線程214所訪問的數(shù)據(jù)704回滾(rollback)到狀態(tài)信息215被保存的時刻的狀態(tài)。同樣,CPU#O根據(jù)管理信息初始值701和狀態(tài)信息215將進(jìn)程210的狀態(tài)回滾到狀態(tài)信息215被保存的時刻的狀態(tài)。此外,在圖7和圖8中說明的進(jìn)程的管理信息以及線程的管理信息的獲取、復(fù)原中,也存在請求特別權(quán)限的情況。在這樣的情況下,多核處理器系統(tǒng)100在監(jiān)視線程被生成時,將特別權(quán)限賦予至監(jiān)視線程。圖9是表示OS內(nèi)部的功能的說明圖。在圖9中,以O(shè)S#0為例進(jìn)行說明。OS#O以外的OS#IOS#3也具有相同的功能。在圖3中,對與監(jiān)視線程有關(guān)的功能進(jìn)行了說明,但在圖9中,對與進(jìn)程和線程整體有關(guān)的功能進(jìn)行說明。OS#O包含進(jìn)程生成部901、進(jìn)程管理部902、監(jiān)視線程功能部903、主線程生成部904、線程生成部905、線程管理部906、和調(diào)度部907。另外,監(jiān)視線程功能部903包含檢測部301、生成部302、管理部908、設(shè)定部303,并且,管理部908包含通知部304。另外,在RAM103中,確保有OS#O用區(qū)域、和進(jìn)程210進(jìn)程230用的區(qū)域。在圖9中,在進(jìn)程210進(jìn)程230用的區(qū)域中,以進(jìn)程210用區(qū)域為代表而顯示。OS#O用區(qū)域儲存有進(jìn)程一覽表909、線程一覽表910、監(jiān)視線程一覽表911。如圖7所示,進(jìn)程210用區(qū)域儲存有OS管理信息703、數(shù)據(jù)704、和狀態(tài)信息215。并且,OS管理信息703儲存有進(jìn)程管理信息912、和線程管理信息913。進(jìn)程生成部901具有接受來自用戶、進(jìn)程的請求,生成新進(jìn)程的功能。例如,在OS#O是Linux(注冊商標(biāo))的情況下,進(jìn)程生成部901根據(jù)來自init進(jìn)程的請求生成進(jìn)程。此外,生成的進(jìn)程儲存到進(jìn)程一覽表909。另外,進(jìn)程生成部901在RAM103上確保生成的進(jìn)程用的數(shù)據(jù)區(qū)域。進(jìn)程管理部902具有管理由進(jìn)程生成部901生成的進(jìn)程的功能。具體而言,進(jìn)程管理部902將進(jìn)程的優(yōu)先級、進(jìn)程所確保的內(nèi)存大小、對生成的進(jìn)程的自變量等信息儲存為進(jìn)程管理信息912。監(jiān)視線程功能部903是針對監(jiān)視線程的功能組。具體而言,監(jiān)視線程功能部903利用檢測部301檢測出進(jìn)程被生成這一情況,并生成監(jiān)視線程。接下來,監(jiān)視線程功能部903利用設(shè)定部303設(shè)定監(jiān)視線程的分配目的地CPU,利用通知部304向監(jiān)視線程通知指示。主線程生成部904具有在由進(jìn)程生成部901生成進(jìn)程的情況下,從程序代碼的開始位置生成主線程的功能。存在于程序代碼的開始位置的是例如main()函數(shù)的前端?;蛘撸羰荳indows(注冊商標(biāo)),則是WinMain()函數(shù)的前端。主線程生成部904以根據(jù)上述的函數(shù)開始主線程的執(zhí)行的方式進(jìn)行設(shè)定。線程生成部905具有生成線程的功能。例如,線程生成部905在由主線程發(fā)行新的線程的生成請求的情況下,生成線程。此外,以監(jiān)視線程功能部903的生成部302、主線程生成部904、線程生成部905生成的線程被儲存到線程一覽表910。線程管理部906具有管理生成的線程的功能。例如,線程管理部906判斷生成的線程屬于哪個進(jìn)程,并將生成的線程儲存為相應(yīng)的進(jìn)程用數(shù)據(jù)區(qū)域內(nèi)的線程管理信息913。具體地,作為管理的信息,線程管理部906將線程是運轉(zhuǎn)狀態(tài)還是等待狀態(tài)這樣的值、線程的優(yōu)先級、線程所確保的內(nèi)存大小、對生成的線程的自變量等信息,儲存為線程管理信息913。調(diào)度部907具有將設(shè)定了分配目的地CPU的線程組,基于優(yōu)先級、分時等分配給CPU的功能。具體而言,調(diào)度部907基于優(yōu)先級、分時等將設(shè)定為分配給CPU#0的監(jiān)視線程211、線程222、線程232依次分配給CPU。管理部908具有管理監(jiān)視線程的功能。具體而言,管理部908將由生成部302生成的監(jiān)視線程儲存到監(jiān)視線程一覽表911。并且,管理部908對儲存到監(jiān)視線程一覽表911中的監(jiān)視線程,由通知部304通知狀態(tài)信息的復(fù)原的指示。進(jìn)程一覽表909、線程一覽表910、監(jiān)視線程一覽表911分別是儲存進(jìn)程、線程、監(jiān)視線程的一覽表。具體而言,儲存有針對進(jìn)程、線程、監(jiān)視線程的指針。進(jìn)程管理信息912是進(jìn)程的優(yōu)先級、進(jìn)程所確保的內(nèi)存大小、對生成的進(jìn)程的自變量等信息。這些信息也可能會在進(jìn)程執(zhí)行的中途發(fā)生變更。例如,假定進(jìn)程210是提供Web服務(wù)的Web瀏覽器進(jìn)程,由使用者等進(jìn)行多個Web頁的閱覽請求,而在預(yù)先確保的內(nèi)存容量中不能閱覽多個Web頁的情況。此時,多核處理器系統(tǒng)100擴(kuò)展進(jìn)程210的內(nèi)存容量。在內(nèi)存容量的擴(kuò)展成功的情況下,多核處理器系統(tǒng)100將擴(kuò)展的內(nèi)存大小寫入進(jìn)程管理信息912。線程管理信息913是線程是運轉(zhuǎn)狀態(tài)還是等待狀態(tài)這樣的值、線程的優(yōu)先級、線程確保的內(nèi)存大小、對生成的線程的自變量等信息。這些信息與進(jìn)程管理信息912相同,可能在執(zhí)行時會發(fā)生變更。例如,在變更了線程的優(yōu)先級、確保的內(nèi)存大小的情況下,多核處理器系統(tǒng)100將變更后的值寫入線程管理信息913。圖10是表示進(jìn)程用區(qū)域的存儲內(nèi)容的生成例的說明圖。在圖10中,表示生成進(jìn)程210用區(qū)域的情況。進(jìn)程210用加載模塊是通過執(zhí)行而生成進(jìn)程的執(zhí)行文件。在進(jìn)程210用加載模塊中,在圖7所示的初始數(shù)據(jù)702以外,儲存有進(jìn)程信息1001、程序代碼1002。在進(jìn)程信息1001中,包含內(nèi)存大小、區(qū)域配置信息、程序開始位置等。在程序代碼1002中,儲存將程序源碼轉(zhuǎn)換為機器語言的代碼。例如,若進(jìn)程210用加載模塊是ELF(ExecutableandLinkableFormat:可執(zhí)行文件和鏈接格式)格式,則進(jìn)程信息1001儲存在ELF標(biāo)題等標(biāo)題部分。同樣,程序代碼1002儲存在.text段,初始數(shù)據(jù)702儲存在.data段。另外,在R0M102中,作為OS用數(shù)據(jù)的一部分,儲存有監(jiān)視線程用加載模塊。監(jiān)視線程用加載模塊為從各進(jìn)程能夠利用的共享程序庫。在監(jiān)視線程用加載模塊中,儲存有共享程序庫信息1003、監(jiān)視線程程序代碼1004、監(jiān)視線程初始數(shù)據(jù)1005。儲存在共享程序庫信息1003中的內(nèi)容與進(jìn)程信息1001相同。具體而言,在共享程序庫信息1003中,儲存監(jiān)視線程的內(nèi)存大小、區(qū)域配置信息、程序開始位置等。在監(jiān)視線程程序代碼1004中,儲存將與監(jiān)視線程對應(yīng)的程序源碼轉(zhuǎn)換成機器語言的代碼。在監(jiān)視線程初始數(shù)據(jù)1005中,儲存有監(jiān)視線程的初始值。此外,若共享程序庫用加載模塊也是上述的ELF格式,則共享程序庫信息1003儲存在ELF標(biāo)題等的標(biāo)題部分。同樣,監(jiān)視線程程序代碼1004儲存在.text段,監(jiān)視線程初始數(shù)據(jù)1005儲存在.data段。參照初始數(shù)據(jù)702、進(jìn)程信息1001監(jiān)視線程初始數(shù)據(jù)1005,進(jìn)程生成部901在進(jìn)程210用區(qū)域中展開。具體而言,進(jìn)程生成部901將程序代碼1002在RAM103上的程序代碼1006中展開,將初始數(shù)據(jù)702在RAM103上的數(shù)據(jù)704中展開。同樣,進(jìn)程生成部901將監(jiān)視線程程序代碼1004在RAM103上的監(jiān)視線程程序代碼1007中展開,將監(jiān)視線程初始數(shù)據(jù)1005在RAM103上的監(jiān)視線程數(shù)據(jù)1008中展開。在監(jiān)視線程數(shù)據(jù)1008的內(nèi)部,確保保存狀態(tài)信息215的保存區(qū)域1009。使用圖9所示的功能組和圖10所示的進(jìn)程用區(qū)域,多核處理器系統(tǒng)100進(jìn)行狀態(tài)"[目息的保存處理和復(fù)原處理。利用圖11、圖12表不由OS進(jìn)行的事件處理,利用圖13、圖14進(jìn)行由監(jiān)視線程進(jìn)行的保存處理和復(fù)原處理的說明。由監(jiān)視線程進(jìn)行的保存處理和復(fù)原處理通過OS進(jìn)行向事件處理內(nèi)部的監(jiān)視線程的通知來執(zhí)行。圖11是表示由OS進(jìn)行的事件處理的流程圖(其I)。由OS進(jìn)行的事件處理也能夠以CPU#0CPU#3中任意的CPU執(zhí)行,在圖11、圖12中,假定利用OS#0的功能由CPU#0執(zhí)行。另外,在圖11中,在由OS進(jìn)行的事件處理中,對生成新進(jìn)程的事件和設(shè)定線程分配目的地CPU的事件進(jìn)行說明。CPU#0確認(rèn)產(chǎn)生的事件種類(步驟S1101)。例如,CPU#0從儲存在事件隊列的消息中,獲取最早的消息。在事件是生成新進(jìn)程的情況下(步驟SllOl:生成新進(jìn)程),CPU#0生成主線程(步驟S1102)。在生成主線程后,CPU#0生成監(jiān)視線程(步驟S1103)。在生成監(jiān)視線程后,CPU#0設(shè)定監(jiān)視線程的分配目的地CPU(步驟S1104)。例如,CPU#0生成包含指向生成的監(jiān)視線程的指針和表示設(shè)定線程分配目的地CPU的事件ID的消息,儲存到事件隊列。獲取到所儲存的消息的結(jié)果,通過由CPU#0執(zhí)行步驟SI106步驟SI108的處理,能夠設(shè)定監(jiān)視線程的分配目的地CPU。接下來,CPU#0設(shè)定主線程的分配目的地CPU(步驟S1105),移至步驟SllOl的處理。此外,設(shè)定了分配目的地CPU的主線程和監(jiān)視線程被設(shè)定為從各個程序的開始位置開始執(zhí)行,而成為運轉(zhuǎn)狀態(tài)。同時,監(jiān)視線程的分配的目的地CPU向自身的OS內(nèi)的監(jiān)視線程一覽表登錄監(jiān)視線程的識別信息,例如指向監(jiān)視線程的指針。此外,監(jiān)視線程的動作的詳細(xì)內(nèi)各在圖13、圖14中后述。在事件是設(shè)定線程分配目的地CPU的情況下(步驟SllOl:設(shè)定線程分配目的地CPU),CPU#0判斷設(shè)定分配目的地CPU的線程是否是監(jiān)視線程(步驟S1106)。在是監(jiān)視線程的情況下(步驟S1106是”),CPU#O從全部的CPU即CPU#OCPU#3,設(shè)定分配目的地CPU(步驟SI107)。此外,在步驟SI107的處理中,CPU#0也可以設(shè)定為將監(jiān)視線程分配到全部的CPU中監(jiān)視線程的分配數(shù)量最少的CPU中。由此,多核處理器系統(tǒng)100能夠使各CPU分散執(zhí)行故障產(chǎn)生后的復(fù)原處理。在不是監(jiān)視線程的情況下(步驟S1106否”),CPU#0從該進(jìn)程的監(jiān)視線程的分配目的地CPU以外設(shè)定分配目的地CPU(步驟S1108)。在步驟S1107、步驟S1108完成后,CPU#0移至步驟SllOl的處理。圖12是表示由OS進(jìn)行的事件處理的流程圖(其2)。在圖12中,對由OS進(jìn)行的事件處理中的檢測故障產(chǎn)生的事件和通知復(fù)原的事件進(jìn)行說明。并且,在圖12中,也對伴隨檢測故障產(chǎn)生的、在產(chǎn)生了故障的CPU中的監(jiān)視線程的復(fù)原處理一并進(jìn)行說明。在事件是檢測故障產(chǎn)生的情況下(步驟SllOl:檢測故障產(chǎn)生),CPU#0重新啟動產(chǎn)生了故障的CPU#N(步驟S1201),將檢測出故障產(chǎn)生通知給未產(chǎn)生故障的CPU(步驟51202)。此外,N是03的整數(shù)。另外,在步驟S1202中,CPU#0也可以將檢測出故障產(chǎn)生的通知給包含了產(chǎn)生故障的CPU#N的CPU#0CPU#3的全部。即使對CPU#N進(jìn)行通知,CPU#N在故障產(chǎn)生中也不接受通知而放棄,所以不會對動作產(chǎn)生影響。若采用向未產(chǎn)生故障的CPU通知的方法,則多核處理器系統(tǒng)100具有可以不產(chǎn)生不必要的通信的效果。另外,若采用向全部的CPU通知的方法,則多核處理器系統(tǒng)100具有在設(shè)定通知目的地的CPU組時,也可以不進(jìn)行從全部的CPU中除去產(chǎn)生了故障的CPU#N的處理的效果。此外,作為故障產(chǎn)生的檢測方法,例如,存在對于軟件錯誤使CPU內(nèi)的運算電路冗余化,將從各個電路輸出的結(jié)果不同的情況作為產(chǎn)生故障來加以檢測的方法。另外,作為其它的方法,存在關(guān)于程序的故障從OS定期地對進(jìn)程、線程發(fā)送生存確認(rèn)信號,若從進(jìn)程、線程沒有響應(yīng)則作為產(chǎn)生故障來加以檢測的方法。另外,上述的故障檢測方法根據(jù)各個方法的不同,存在由產(chǎn)生了故障的CPU進(jìn)行檢測的情況、2個CPU相互監(jiān)視故障而檢測的情況、以多個CPU中的一個CPU為代表進(jìn)行檢測的情況等。即使是任意故障檢測方法,檢測出故障產(chǎn)生的CPU均利用步驟S1201的處理來重新啟動產(chǎn)生了故障的CPU。通知后,CPU#0以故障產(chǎn)生模式起動分配到該CPU的全部監(jiān)視線程(步驟51203),移至步驟SllOl的處理。此外,所謂的分配到該CPU的全部監(jiān)視線程是登錄到監(jiān)視線程一覽表911中的線程。另外,接受了檢測出故障產(chǎn)生的CPU也以故障產(chǎn)生模式起動登錄到監(jiān)視線程一覽表911中的全部監(jiān)視線程。此外,以故障產(chǎn)生模式起動的監(jiān)視線程的動作在圖13中后述。產(chǎn)生有故障的CPU#N根據(jù)來自CPU#0的重新啟動指示重新啟動,在重新啟動完成后,向其他的CPU發(fā)送復(fù)原通知(步驟S1204)。發(fā)送后,CPU#N判斷是否存在沒有監(jiān)視線程的進(jìn)程(步驟S1205)。具體而言,CPU#N參照其他的OS的管理信息,獲取正在運轉(zhuǎn)的進(jìn)程、和分配到其他的OS中的監(jiān)視線程一覽表911,從而能夠判斷是否存在沒有監(jiān)視線程的進(jìn)程。在存在沒有監(jiān)視線程的進(jìn)程的情況下(步驟S1205是”),CPU#N生成監(jiān)視線程,分配給CPU#N(步驟S1206)。在不存在沒有監(jiān)視線程的進(jìn)程的情況下(步驟S1205否”),或者在完成步驟S1206的處理后,CPU#N完成復(fù)原處理。在事件是通知復(fù)原的情況下(步驟SllOl:通知復(fù)原),CPU#0以重新啟動完成模式起動分配到該CPU的全部監(jiān)視線程(步驟S1207)。此外,通知復(fù)原的事件在步驟S1204的處理中,通過CPU#N向其他的CPU發(fā)送復(fù)原通知而產(chǎn)生。另外,以重新啟動完成模式起動的監(jiān)視線程的動作在圖14中后述。此時,檢測出產(chǎn)生故障的CPU,或者接受到檢測出故障產(chǎn)生的CPU也可以代替監(jiān)視線程的復(fù)原,而執(zhí)行未停止的線程。在故障產(chǎn)生時未停止的線程意味著未被監(jiān)視線程停止,表示監(jiān)視線程已由產(chǎn)生了故障的CPU執(zhí)行。監(jiān)視線程也可以不進(jìn)行復(fù)原,所以屬于由產(chǎn)生了故障的CPU執(zhí)行監(jiān)視線程的進(jìn)程的線程能夠不進(jìn)行復(fù)原而持續(xù)處理。例如,在與以重新啟動完成模式起動的監(jiān)視線程的優(yōu)先級相比,不進(jìn)行復(fù)原的可持續(xù)的線程的優(yōu)先級較高的情況下,CPU#0也可以優(yōu)先處理可持續(xù)的進(jìn)程的線程。圖13是表示監(jiān)視線程的動作的流程圖(其I)。監(jiān)視線程以CPU#0CPU#3中任意的CPU執(zhí)行,但在圖13、圖14中,假定以CPU#0執(zhí)行。另外,在圖13中,對監(jiān)視線程的故障產(chǎn)生時的動作、休眠的定時到期時的動作、重新啟動完成時的動作中故障產(chǎn)生時的動作進(jìn)行說明。此外,對于監(jiān)視線程的各動作的判別方法,CPU#0能夠通過參照從休眠復(fù)原時的復(fù)原值,來進(jìn)行判別。CPU#0啟動監(jiān)視線程(步驟S1301)。以下,CPU#0基于監(jiān)視線程的程序代碼來執(zhí)行處理。接下來,CPU#0從監(jiān)視線程所屬的進(jìn)程用區(qū)域獲取初始數(shù)據(jù)702(步驟S1302)。在獲取初始數(shù)據(jù)702后,CPU#0確保保存區(qū)域1009(步驟S1303)。具體而言,CPU#0以初始數(shù)據(jù)702能夠全部保存的容量,確保保存區(qū)域1009。在確保后,CPU#0將休眠的到期時間設(shè)定為通常的時間(步驟S1304),并進(jìn)行休眠(步驟S1305)。接下來,CPU#0若從休眠起動,則判斷是否是以故障產(chǎn)生模式的起動(步驟S1306)。是以故障產(chǎn)生模式的起動的情況下(步驟S1306是”),CPU#0停止進(jìn)程內(nèi)的除去了監(jiān)視線程的全部線程(步驟S1307)。接下來,CPU#0將休眠的到期時間設(shè)定為“無期限”(步驟S1308),移至步驟S1305的處理。此外,通過將到期時間設(shè)為無期限,從而變?yōu)椴划a(chǎn)生由定時到期引起的起動。對于不是以故障產(chǎn)生模式的起動的情況下(步驟S1306否”)的動作在圖14中后述。圖14是表示監(jiān)視線程的動作的流程圖(其2)。在圖14中,對監(jiān)視線程的動作中定時到期時的動作、和重新啟動完成時的動作進(jìn)行說明。此外,定時到期時的動作為狀態(tài)保存的處理,重新啟動完成時的動作為狀態(tài)復(fù)原處理。在不是以故障產(chǎn)生模式的起動的情況下(步驟S1306否”),CPU#0判斷是否是以重新啟動完成模式的起動(步驟S1401)。由在步驟S1304的處理中設(shè)定的定時到期引起的起動的情況下(步驟S1401否”),CPU#0獲取進(jìn)程的全部線程(步驟S1402)。接下來,CPU#0停止進(jìn)程內(nèi)的除去了監(jiān)視線程的全部線程(步驟S1403)。在停止了線程后,CPU#0獲取進(jìn)程正在使用的進(jìn)程用區(qū)域(步驟S1404)。獲取后,CPU#0判斷獲取的數(shù)據(jù)區(qū)域是否收納于保存區(qū)域1009(步驟S1405)。在未收納于保存區(qū)域1009的情況下(步驟S1405否”),CPU#0確保擴(kuò)展后的保存區(qū)域1009(步驟S1406)。此外,作為未收納于保存區(qū)域1009的情況,存在在監(jiān)視對象線程的內(nèi)部執(zhí)行存儲器確保命令,存儲器區(qū)域增加而成為狀態(tài)信息的對象的情況、或者,對未保持初始值的變量設(shè)定值而成為狀態(tài)信息的對象的情況等。作為未保持初始值的變量的具體例,若是上述的ELF形式,則是儲存在.bss段中的變量。在收納于保存區(qū)域1009的情況下(步驟S1405是”),或者在步驟S1406的處理完成后,CPU#0將進(jìn)程的數(shù)據(jù)704的差值保存到保存區(qū)域1009(步驟S1407)。接下來,CPU#0將進(jìn)程管理信息912的差值、線程管理信息913的差值保存到保存區(qū)域1009(步驟S1408)。此外,在步驟S1402步驟S1408的狀態(tài)保存處理期間,假定在CPU#ICPU#3的任意的CPU中產(chǎn)生故障,步驟S1203的由OS#0執(zhí)行以故障產(chǎn)生模式的起動命令的情況。在該情況下,至少在狀態(tài)保存時,通過步驟S1403相應(yīng)的進(jìn)程的線程是停止中而沒有故障的影響,所以CPU#0掛起(pending)故障產(chǎn)生模式的起動命令而持續(xù)狀態(tài)保存處理。在步驟S1408完成后,在步驟S1305的處理中監(jiān)視線程休眠時,立即處理基于故障產(chǎn)生模式的起動。在是以重新啟動完成模式的起動的情況下(步驟S1401是”),CPU#0獲取進(jìn)程的全部線程(步驟S1409)。此外,進(jìn)程內(nèi)的除去了監(jiān)視線程的全部線程以故障產(chǎn)生模式的起動時,由于步驟S1307的處理而停止。此外,CPU#0也可以在步驟S1307的時刻不停止線程,而在步驟S1409之后,停止線程。獲取后,CPU#0獲取進(jìn)程使用的進(jìn)程用區(qū)域(步驟S1410),從獲取的進(jìn)程用區(qū)域內(nèi)的保存區(qū)域1009復(fù)原進(jìn)程管理信息912、線程管理信息913(步驟S1411)。接下來,CPU#0從保存區(qū)域1009復(fù)原進(jìn)程的數(shù)據(jù)704(步驟S1412)。此外,在數(shù)據(jù)704復(fù)原時,對于未保持初始數(shù)據(jù)的變量,CPU#0將保存在保存區(qū)域1009中的數(shù)據(jù)保持原樣地復(fù)制到數(shù)據(jù)704。在步驟S1408、或者步驟S1412的處理后,CPU#0重新開始停止的線程的動作(步驟S1413),移至步驟S1304的處理。如以上說明,根據(jù)多核處理器系統(tǒng)、監(jiān)視控制方法、以及監(jiān)視控制程序,在進(jìn)程內(nèi)生成的監(jiān)視線程保存自身的進(jìn)程和內(nèi)部的監(jiān)視對象線程的狀態(tài)。由此,多核處理器系統(tǒng)按照每個進(jìn)程進(jìn)行狀態(tài)保存,所以在特定的核保存狀態(tài)期間,其他的核可持續(xù)處理,能夠有效地利用核的處理能力。另外,多核處理器系統(tǒng)也可以將執(zhí)行監(jiān)視線程的核設(shè)定為與執(zhí)行監(jiān)視對象線程的核不同的核。由此,多核處理器系統(tǒng)在分配有監(jiān)視線程的核發(fā)生了故障產(chǎn)生的情況下,可持續(xù)監(jiān)視線程所屬的進(jìn)程。因此,即使發(fā)生了故障產(chǎn)生,核是重新啟動中,也能夠利用其他的核來執(zhí)行可持續(xù)的進(jìn)程,從而有效地利用核的處理能力。另外,在現(xiàn)有技術(shù)I的技術(shù)中,重新啟動產(chǎn)生了故障的核,在重新啟動完成后進(jìn)行復(fù)原處理。因此,處于未產(chǎn)生故障的運轉(zhuǎn)狀態(tài)的核不進(jìn)行復(fù)原處理,也不進(jìn)行應(yīng)用程序的處理。根據(jù)本實施方式所涉及的技術(shù),即使產(chǎn)生了故障的核是重新啟動中,也能夠執(zhí)行可持續(xù)的進(jìn)程,能夠?qū)崿F(xiàn)無停止動作。另外,多核處理器系統(tǒng)在任意的核重新啟動完成的情況下,也可以將進(jìn)程和監(jiān)視對象線程朝向保存狀態(tài)信息的狀態(tài)復(fù)原的復(fù)原請求,從檢測出重新啟動已完成的核的核通知給重新啟動已完成的核以外的其他核。由此,多核處理器系統(tǒng)在重新啟動完成,并能夠復(fù)原的階段,能夠執(zhí)行復(fù)原處理和可持續(xù)的進(jìn)程。此外,可持續(xù)的進(jìn)程的監(jiān)視線程由重新啟動已完成的核執(zhí)行,所以不進(jìn)行復(fù)原請求。因此,重新啟動已完成的核以外的其他核也可以不進(jìn)行判斷哪個線程可持續(xù),能夠基于線程的優(yōu)先級等來執(zhí)行由監(jiān)視線程進(jìn)行的復(fù)原處理和未接受到復(fù)原請求的可持續(xù)的線程。另外,多核處理器系統(tǒng)在通知了復(fù)原請求的情況下,也可以利用執(zhí)行監(jiān)視線程的核,將進(jìn)程以及各監(jiān)視對象線程復(fù)原到狀態(tài)信息被保存的時刻的狀態(tài)。由此,能夠按照每個核來執(zhí)行各進(jìn)程的復(fù)原,所以例如,通過以分散到各核的方式分配多個監(jiān)視線程,能夠分散地執(zhí)行故障產(chǎn)生后的復(fù)原處理。以各核分散地執(zhí)行復(fù)原處理,從而多核處理器系統(tǒng)能夠高速地復(fù)原到故障產(chǎn)生前的狀態(tài)。另外,多核處理器系統(tǒng)在檢測出產(chǎn)生了故障的核的情況下,也可以將監(jiān)視對象線程的停止請求至少通知給產(chǎn)生了故障的核以外的其他核,在通知停止請求以及復(fù)原請求后,復(fù)原進(jìn)程以及各監(jiān)視對象線程。由此,即使產(chǎn)生了故障的核正在重新啟動,多核處理器系統(tǒng)也能夠執(zhí)行可持續(xù)的進(jìn)程。并且,可持續(xù)的進(jìn)程的監(jiān)視線程是以產(chǎn)生了故障的核執(zhí)行的,所以不進(jìn)行停止請求。因此,產(chǎn)生了故障的核以外的其他核也可以不進(jìn)行判斷哪個線程可持續(xù),將未停止的線程保持原樣地作為可持續(xù)的線程來執(zhí)行。另外,在產(chǎn)生故障、重新啟動已完成的階段,不是可持續(xù)的線程復(fù)原到狀態(tài)信息被保存的時刻。因此,即使從故障產(chǎn)生后到重新啟動完成進(jìn)行了處理,也不會保留在其期間的處理結(jié)果,是無效的。另外,處理結(jié)果是產(chǎn)生了故障并已停止的線程,所以有可能不是正確的處理結(jié)果。因此,多核處理器系統(tǒng)在產(chǎn)生故障的階段停止不是可持續(xù)的線程,從而可以不進(jìn)行額外的處理,起到省電效果。另外,通過將多核處理器系統(tǒng)的狀態(tài)保存、進(jìn)行狀態(tài)復(fù)原的處理從由特定的核進(jìn)行的執(zhí)行設(shè)為由線程進(jìn)行的執(zhí)行,能夠利用線程的特征而進(jìn)行狀態(tài)保存、狀態(tài)復(fù)原。具體而言,多核處理器系統(tǒng)使用線程的優(yōu)先級,在進(jìn)行特定的進(jìn)程的狀態(tài)保存期間,能夠中斷與特定的進(jìn)程相比優(yōu)先級高的進(jìn)程的處理。與狀態(tài)復(fù)原相同,在進(jìn)行特定的進(jìn)程的狀態(tài)復(fù)原期間,能夠中斷與特定的進(jìn)程相比優(yōu)先級高的進(jìn)程的處理。另外,在待復(fù)原的進(jìn)程存在多個的情況下,能夠優(yōu)先實行優(yōu)先級更高的進(jìn)程的狀態(tài)復(fù)原。另外,若是以自身的線程能夠變更優(yōu)先級的OS,則監(jiān)視線程也可以在進(jìn)行狀態(tài)復(fù)原時將自身的優(yōu)先級提高到比通常高。例如,假定在某個核中產(chǎn)生故障,在其它的核中2個監(jiān)視線程進(jìn)行各自的進(jìn)程的復(fù)原處理的情況。此時,若一方的監(jiān)視線程的復(fù)原處理完成則優(yōu)先級返回到通常狀態(tài),復(fù)原處理尚未完成的監(jiān)視線程的優(yōu)先級保持高優(yōu)先級,而優(yōu)先地執(zhí)行復(fù)原處理執(zhí)行中的監(jiān)視線程。這樣,多核處理器系統(tǒng)利用線程的特征,通過在進(jìn)行復(fù)原處理時提高優(yōu)先級,從而能夠優(yōu)先執(zhí)行復(fù)原處理。此外,以本實施方式說明的監(jiān)視控制方法能夠通過在個人計算機、工作站等的計算機上執(zhí)行預(yù)先準(zhǔn)備的程序來實現(xiàn)。本監(jiān)視控制程序記錄在硬盤、軟盤、CD-ROM,MO,DVD等計算機可讀取的記錄介質(zhì)上,通過由計算機從記錄介質(zhì)讀出而被執(zhí)行。另外本監(jiān)視控制程序也可以經(jīng)由因特網(wǎng)等網(wǎng)絡(luò)發(fā)布。附圖標(biāo)記說明#0、#I…CPU;100…多核處理器系統(tǒng);103…RAM;110…總線;210、220…進(jìn)程;211、221…監(jiān)視線程;212、222…線程;215、224…狀態(tài)信息;301…檢測部;302…生成部;303…設(shè)定部;304…通知部;305、307…保存部;306、308…復(fù)原部。權(quán)利要求1.一種多核處理器系統(tǒng),其特征在于,具備:檢測單元,其檢測進(jìn)程在多個核中被執(zhí)行這一情況;和生成單元,其當(dāng)通過所述檢測單元檢測出所述進(jìn)程被執(zhí)行這一情況時,生成對表示所述進(jìn)程的執(zhí)行狀態(tài)和所述進(jìn)程內(nèi)的各監(jiān)視對象線程的執(zhí)行狀態(tài)的狀態(tài)信息進(jìn)行保存的特定線程。2.根據(jù)權(quán)利要求1所述的多核處理器系統(tǒng),其特征在于,還具備設(shè)定單元,所述設(shè)定單元將執(zhí)行由所述生成單元生成的所述特定線程的核設(shè)定為與執(zhí)行所述各監(jiān)視對象線程的核組不同的核。3.根據(jù)權(quán)利要求2所述的多核處理器系統(tǒng),其特征在于,還具備通知單元,所述通知單元在所述多個核中任意的核重新啟動已完成的情況下,從檢測出重新啟動已完成的核的核,向所述多個核中除了所述重新啟動已完成的核以外的其他核,通知使所述進(jìn)程以及所述各監(jiān)視對象線程向所述狀態(tài)信息被保存的時刻的狀態(tài)復(fù)原的復(fù)原請求。4.根據(jù)權(quán)利要求3所述的多核處理器系統(tǒng),其特征在于,還具備復(fù)原單元,所述復(fù)原單元在由所述通知單元通知了所述復(fù)原請求的情況下,通過執(zhí)行所述特定線程的核來將所述進(jìn)程以及所述各監(jiān)視對象線程復(fù)原到所述狀態(tài)信息被保存的時刻的狀態(tài)。5.根據(jù)權(quán)利要求4所述的多核處理器系統(tǒng),其特征在于,所述通知單元從檢測出在所述重新啟動已完成的核中產(chǎn)生了成為重新啟動的原因的故障的情況的核,向所述多個核中的至少所述其他核,通知所述各監(jiān)視對象線程的停止請求,所述復(fù)原單元在由所述通知單元通知了所述停止請求以及所述復(fù)原請求的情況下,通過執(zhí)行所述特定線程的核來將所述進(jìn)程以及所述各監(jiān)視對象線程復(fù)原到所述狀態(tài)信息被保存的時刻的狀態(tài)。6.一種監(jiān)視控制方法,其特征在于,多個核中任意的核執(zhí)行如下步驟:檢測步驟,檢測進(jìn)程在所述多個核中被執(zhí)行這一情況;和生成步驟,當(dāng)由所述檢測步驟檢測出所述進(jìn)程被執(zhí)行這一情況時,生成對表示所述進(jìn)程的執(zhí)行狀態(tài)和所述進(jìn)程內(nèi)的各監(jiān)視對象線程的執(zhí)行狀態(tài)的狀態(tài)信息進(jìn)行保存的特定線程。7.—種監(jiān)視控制程序,其特征在于,使多個核中任意的核執(zhí)行如下步驟:檢測步驟,檢測進(jìn)程在所述多個核中被執(zhí)行這一情況;和生成步驟,當(dāng)由所述檢測步驟檢測出所述進(jìn)程被執(zhí)行這一情況時,生成對表示所述進(jìn)程的執(zhí)行狀態(tài)和所述進(jìn)程內(nèi)的各監(jiān)視對象線程的執(zhí)行狀態(tài)的狀態(tài)信息進(jìn)行保存的特定線程。全文摘要本發(fā)明涉及多核處理器系統(tǒng)、監(jiān)視控制方法以及監(jiān)視控制程序。在特定的CPU保存狀態(tài)信息期間,其他的CPU持續(xù)處理,實現(xiàn)無停止動作。CPU(#0)利用檢測部(301)來檢測進(jìn)程(210)執(zhí)行的情況。檢測后,CPU(#0)利用生成部(302)來生成對表示進(jìn)程(210)的執(zhí)行狀態(tài)和進(jìn)程(210)內(nèi)成為各監(jiān)視對象線程的線程(212)的執(zhí)行狀態(tài)的狀態(tài)信息(215)進(jìn)行保存的監(jiān)視線程(211)。由此,在CPU(#0)正在保存狀態(tài)信息(215)的期間,CPU(#1)能夠執(zhí)行與進(jìn)程(210)沒有依賴關(guān)系的進(jìn)程(220),能夠?qū)崿F(xiàn)無停止動作。文檔編號G06F9/48GK103154893SQ20108006941公開日2013年6月12日申請日期2010年10月5日優(yōu)先權(quán)日2010年10月5日發(fā)明者鈴木貴久,山下浩一郎,山內(nèi)宏真,栗原康志申請人:富士通株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
达州市| 巴中市| 鱼台县| 石城县| 浦城县| 阳高县| 香港 | 南郑县| 成安县| 科尔| 沂水县| 宁南县| 仲巴县| 达孜县| 广元市| 牙克石市| 勐海县| 墨江| 黔西| 万州区| 宜丰县| 木兰县| 德州市| 邛崃市| 乌拉特前旗| 仁寿县| 南平市| 巴彦县| 青海省| 青龙| 贡嘎县| 五大连池市| 京山县| 绍兴市| 紫阳县| 辉县市| 湖北省| 延长县| 金阳县| 周宁县| 凌海市|