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

多核處理器系統(tǒng)、控制程序、以及控制方法

文檔序號:6351910閱讀:108來源:國知局
專利名稱:多核處理器系統(tǒng)、控制程序、以及控制方法
技術領域
本發(fā)明涉及進行多核處理器中的主從調度處理和管理程序(hypervisor)處理的多核處理器系統(tǒng)、控制程序、以及控制方法。
背景技術
以往,在多核處理器系統(tǒng)中,已知有被稱為分布式系統(tǒng)(以下稱為“現有方式I”)和集中共用系統(tǒng)(以下稱為“現有方式2”)的方式。

現有方式I是物理上分離的存儲器與各個CPU(Central Processing Unit,中央處理單元)連接的方式。由此,在現有方式I中,由于分散地連接相互獨立的存儲器,因此獨立的應用程序彼此進行的存取不會沖突,不會發(fā)生由于存取沖突引起的CPU的性能下降。因此,即使一個應用程序由于故障而崩潰(crash),受到影響的也僅僅是當時正在執(zhí)行該崩潰的應用程序的CPU。這里,崩潰是指如下狀態(tài)在由于含有故障(程序缺陷(bug))的軟件將數據寫入錯誤的區(qū)域,或者跳轉到錯誤的地址而引起的不能正常動作的狀態(tài)中,不僅僅是發(fā)生故障的軟件異常結束,而且由于破壞了系統(tǒng)區(qū)域或者進行了錯誤跳轉而導致包含操作系統(tǒng)(OS)的其他的進程不能繼續(xù)執(zhí)行的狀態(tài)。現有方式2是如下的方式具有一個物理上的存儲器,所有的CPU經由總線等與該存儲器連接?,F有方式2與現有方式I相比,存儲器少因而價格低廉并且消耗功率低,因此在嵌入式系統(tǒng)中采用了現有方式2。在現有方式的主CPU進行的調度中,例如,按照從負載小的CPU開始的順序來分配應用程序或者由應用程序啟動的線程。另外,在大型計算機等中包括如下機構(現有技術I),其提供檢查點/重啟動方法等,為應對崩潰時而保存應用程序的動作狀態(tài),在發(fā)生了問題時從檢查點恢復。另外,在大型計算機等中,已知有包含OS的軟件通過虛擬機對硬件進行存取的方法(現有技術2,例如,參照下述專利文獻I 3)。通常虛擬機通過虛擬化來隔離CPU和軟件的捆綁,被用于實現平滑的遷移(migration)(向移動目標移動每個虛擬機)。在一個軟件由于故障而崩潰的情況下,當機的是當時運行崩潰的軟件的虛擬機?,F有技術文獻專利文獻專利文獻I :國際公開第2006/134691號小冊子;專利文獻2 :日本專利文獻特開2002-202959號公報;專利文獻3 :日本專利文獻特開2008-152594號公報。

發(fā)明內容
發(fā)明所要解決的問題但是,一直以來,崩潰可能性低的高可靠的應用程序和崩潰可能性高的非高可靠的應用程序被同時執(zhí)行。由此,存在以下問題高可靠的應用程序由于受到非高可靠的應用程序引起的崩潰的影響而崩潰。如果現有技術I以及2,雖然能夠防止高可靠的應用程序崩潰,但是在現有技術I以及2中,需要龐大的存儲器資源,在存儲器資源少的嵌入式系統(tǒng)中難以應用現有技術I以及2。本發(fā)明的目的在于為了解決上述問題,提供能夠避免崩潰可能性高的應用程序崩潰的影響波及崩潰可能性低的應用程序的多核處理器系統(tǒng)、控制程序、以及控制方法。用于解決問題的手段為了解決上述問題并達到目的,多核處理器系統(tǒng)包括多核處理器和針對每個應用程序軟件存儲與動作相關的可靠度的存儲裝置,所述應用程序軟件在以下稱為“應用程序”,其中,所述多核處理器內的一個核心能夠訪問所述存儲裝置,其中,所述一個核心從所述存儲裝置中提取所述應用程序之中起動對象線程的對象應用程序的可靠度,并基于所提取的可靠度與指定閾值來判斷所述對象應用程序是否是高可靠的應用程序,在判斷出是所 述高可靠的應用程序時,確定所述多核處理器之中的沒有被分配非高可靠的應用程序的線程的核心,在判斷出是所述非高可靠的應用程序時,確定所述多核處理器之中的沒有被分配所述高可靠的應用程序的線程的核心,并向所確定的核心通知所述對象線程的起動指
/Jn o發(fā)明的效果根據本多核處理器系統(tǒng)、控制程序、以及控制方法,能夠達到避免崩潰可能性高的應用程序崩潰的影響波及崩潰可能性低的應用程序的效果。


圖I是示出實施方式I涉及的控制處理的一個實施例的說明圖;圖2是示出可靠度列表的一個例子的說明圖;圖3是示出任務構成信息的一個例子的說明圖;圖4是示出多核處理器系統(tǒng)的硬件構成的框圖;圖5是示出實施方式I涉及的多核處理器系統(tǒng)的功能的構成的框圖;圖6是示出分配高可靠性線程的例子的說明圖;圖7是示出高可靠性線程分配后的任務構成信息的一個例子的說明圖;圖8是示出分配低可靠性線程的例子的說明圖;圖9是示出沒有向所有的CPU 0 3都分配低可靠性線程的例子的說明圖;圖10是示出沒有向主CPU分配低可靠性線程的例子的說明圖;圖11是示出實施方式I涉及的多核處理器系統(tǒng)進行的控制處理的控制處理步驟的一個例子的流程圖;圖12是示出圖11中所示的高可靠性主線程的分配處理(步驟S1107)的詳細的說明的流程圖;圖13是示出圖11中所示的低可靠性線程的分配處理(步驟S1109)的詳細的說明的流程圖;圖14是示出多核處理器系統(tǒng)進行的注冊處理的注冊處理步驟的一個例子的流程圖15是示出實施方式2涉及的控制處理的一個實施例的說明圖;圖16是示出實施方式2涉及的多核處理器系統(tǒng)的功能的構成的框圖;圖17是示出線程崩潰的例子的說明圖;圖18是示出各CPU向CPU 0發(fā)送存活信號的例子的說明圖;圖19是示出應用程序被停止的例子的說明圖;圖20是示出重啟指示例以及線程的分配指示例的說明圖;圖21是示出可靠度列表的可靠度被改變的例子的說明圖;圖22是示出向除了停轉的CPU之外的剩余的CPU分配崩潰的線程的例子的說明圖;圖23是示出再起動后的任務構成信息的一個例子的說明圖; 圖24是示出向停轉的CPU通知線程的起動指示的例子的說明圖;圖25是示出實施方式2涉及的多核處理器系統(tǒng)進行的控制處理的控制處理步驟的一個例子的流程圖;圖26是示出圖25所示的再起動處理(步驟S2503)的詳細說明的流程圖;圖27是示出圖25所示的再起動處理(步驟S2504)的詳細說明的流程圖;圖28是示出多核處理器進行的發(fā)送存活信號處理步驟的一個例子的流程圖。
具體實施例方式詳細說明根據本發(fā)明的多核處理器系統(tǒng)、控制程序、以及控制方法的優(yōu)選的實施方式。首先,在實施方式I中,對向各CPU的分配進行說明。接著,在實施方式2中,對在CPU停轉(stall)的情況下,由于CPU的停轉而崩潰的線程的再起動進行說明。這里,線程是如公知的那樣在應用程序內被執(zhí)行的處理的執(zhí)行單位。并且,進程是含有至少一個以上的線程的執(zhí)行單位。只含有一個線程的進程實質上是線程。由此,在實施方式I中,分配的對象是線程還是進程對由調度器100進行的控制處理沒有區(qū)別,因此全部使用線程進行說明。在實施方式I中,將通過被通知來自用戶的應用程序的起動指示而被起動的最開始的處理統(tǒng)稱為主線程。而且,在實施方式I中,由該主線程新起動的處理稱為從線程,在實施方式I中,由從線程新起動的處理也同樣地稱為從線程。此外,在主線程中管理所有的諸如從線程的父子關系以及通過處理完成的線程獲得的結果等,因此當主線程崩潰時,應用程序將再起動。以下參照附圖詳細說明實施方式I以及實施方式2。(實施方式I)圖I是示出實施方式I涉及的控制處理的一個實施例的說明圖。在圖I中假設應用程序A、C、D已經在執(zhí)行中,而且,調度器100接收了應用程序B的線程的分配指示。假設應用程序A、C、D是高可靠的應用程序,應用程序B是非高可靠的應用程序。這里,對高可靠的應用程序和非高可靠的應用程序進行詳細地說明。如上所述高可靠的應用程序是崩潰可能性低的應用程序。例如,高可靠的應用程序是出貨時安裝的應用程序或者出貨單位發(fā)布的應用程序。
另一方面,如上所述非高可靠的應用程序是崩潰可能性高的應用程序。例如,非高可靠的應用程序是在應用后用戶隨意安裝的應用程序。在實施方式I中,高可靠的應用程序稱為高可靠性應用程序,高可靠性應用程序的線程稱為高可靠性線程。高可靠性線程之中的主線程稱為高可靠性主線程,高可靠性線程之中的從線程稱為高可靠性從線程。而且,在實施方式I中,非高可靠的應用程序稱為低可靠性應用程序,低可靠性應用程序的線程稱為低可靠性線程。低可靠性線程之中的主線程稱為低可靠性主線程,低可靠性線程之中的從線程稱為低可靠性從線程。在圖I中,向CPU 0分配了應用程序D的高可靠性主線程和應用程序E的高可靠性主線程,向CPU I分配了應用程序A的高可靠性主線程。向CPU 2分配了應用程序A的高可靠性從線程。向CPU 3分配了應用程序A起動的高可靠性從線程。這里,調度器100包含在操作系統(tǒng)中。作為主CPU的CPU 0在通過調度器100接收到線程的分配指示時執(zhí)行該線程的分配處理。

首先,CPU 0在通過調度器100接收到應用程序B的線程的分配指示時從存儲器提取與應用程序B有關的可靠度,并判斷應用程序B是否是高可靠性應用程序。這里,應用程序B被判斷為低可靠性應用程序。然后,例如,CPU 0通過調度器100確定在CPU 0 3之中沒有分配高可靠性主線程的CPU。這里,向CPU 0和CPU I分配了高可靠性主線程,因此不能向CPU 0和CPU I分配低可靠性應用程序B的主線程(圖I中點線箭頭)。這里,CPU 2和CPU 3被確定為沒有分配高可靠性主線程的CPU,例如,向CPU 2分配應用程序B的線程(圖I中低可靠性線程)(圖I中實線箭頭)。例如,當由于低可靠性線程崩潰而導致CPU 2停轉時,被分配給CPU2的高可靠性從線程也同時崩潰。但是,雖然是高可靠性線程但是由于是從線程,因此僅使該崩潰的高可靠性從線程重新執(zhí)行即可,崩潰的影響不會波及其他的線程。另外,在圖I中,按照是否是高可靠性主線程以及是否是低可靠性線程來劃分分配的CPU,但是也可以按照是否是高可靠性線程以及是否是低可靠性線程來劃分分配的CPU。由此,在低可靠性線程崩潰的情況下的影響不會影響到高可靠性線程。(可靠度列表)圖2是示出可靠度列表的一個例子的說明圖??煽慷攘斜?00是多核處理器的各個CPU能夠訪問的存儲器中存儲的信息,可靠度列表200包括應用程序名201、可靠度項目202。這里,可靠度項目202的值表示可靠度,為了容易理解將可靠度項目202設定為高可靠、低可靠和已崩潰過這3級。對于可靠度可以沿用一直以來所使用的優(yōu)先度的序號。具體地說,例如,可靠度項目202的值是3時表示是高可靠性應用程序,可靠度項目202的值是2時表示是低可靠性應用程序,可靠度項目202的值是I時表示曾發(fā)生過崩潰的已崩潰過的應用程序。另外,在多核處理器系統(tǒng)的運用設計時,設計者,例如預先將與集成的應用程序有關的可靠度注冊到可靠度列表200中。(任務構成信息)圖3是示出任務構成信息的一個例子的說明圖。任務構成信息300是多核處理器的各個CPU能夠訪問的存儲器中存儲的信息,在任務構成信息中記述了與執(zhí)行中的應用程序有關的信息。所謂與應用程序有關的信息是表示應用程序是否是高可靠性應用程序的可靠度標志和表示應用程序的各個線程被分配給了哪個CPU的分配信息。在任務構成信息300中,通過“TASK_NAME”(任務名)的賦值語句示出了任務名和可靠度標志。這里,任務是如公知的那樣表示一個應用程序進行的整個作業(yè)。在任務構成信息300中,記述了 TASK_F00和TASK_XYZ,TASK_F00是與應用程序A有關的信息,TASK_XYZ是與應用程序B有關的信息。而且,在任務構成信息300中,通過“MASTER”的賦值語句示出了主線程的分配信息。在TASK_F00中記述了主線程被分配給CPU 0的情形。而且,在任務構成信息300的TASK_F00中,在“MASTER”賦值語句之下記述了從線程的分配信息。記述了從線程I調用“LIB_BAR”,并且被分配給了 CPU 0,從線程2調用“LIB_BUZ”,并且被分配給了 CPU I。這里,“LIB_BAR”和“LIB_BUZ”是函數的名稱。而且,在任務構成信息300的TASK_F00中,記述了從線程3是進行從0到200執(zhí)行相同的處理的循環(huán)處理中的從0到100的循環(huán)處理的線程,從線程3被分配給了 CPU 2。 而且,在任務構成信息300的TASK_F00中,進行從0到200執(zhí)行相同的處理的循環(huán)處理中的從101到200的循環(huán)處理線程被分配給了 CPU2。這里,對任務構成信息300內記述的C0ARSEGRAIN和MIDDLEGRAIN進行說明。在實施方式I中,將調用函數并執(zhí)行調用的函數的線程稱為粗粒度的線程,將執(zhí)行循環(huán)處理的線程稱為中粒度的線程。而且,以C0AESEGRAIN表示的線程是粗粒度的線程,以MIDDLEGRAIN表示的線程是中粒度的線程。另外,在TASK_XYZ中,記述了主線程被分配給CPU 1,從線程被分配給了 CPU I。而且,在任務構成信息300中示出了該從線程調用并執(zhí)行“LIB_BAR”。(多核處理器系統(tǒng)的硬件構成)圖4是示出多核處理器系統(tǒng)的硬件構成的框圖。在圖4中,多核處理器系統(tǒng)400包括CPU 0 CPU n(n彡I)、存儲器401、以及I/F(Interface,接口)402。另外,各構成部分通過總線400分別連接。這里,多核處理器是搭載有多個核心的處理器。如果搭載有多個核心,那么既可以是搭載有多個核心的單個處理器,也可以是排列有單核心的處理器的處理器組。此外,在實施方式I中,為了簡化說明,以排列有單核心的處理器的處理器組為例進行說明。存儲器401是共享存儲器,其中存儲有應用程序軟件和系統(tǒng)軟件(具體地說,管理程序(hypervisor) 0 管理程序n、包含調度器100的OSO以及0S1)等程序。存儲器401還存儲有上述的可靠度列表200和任務構成信息300等系統(tǒng)文件。存儲器401具體地說包括 ROM (Read Only Memory,只讀存儲器)、RAM (Random Access Memory,隨機存取存儲器)以及閃速只讀存儲器等。在本實施方式I中,假設n = 3總計包括4個CPU。而且,CPU 0 3包括能夠獨立工作的核心、高速緩存和寄存器等。CPU 0是負責多處理器系統(tǒng)的整體的控制的主CPU,CPU I CPU 3是從CPU。例如,ROM存儲上述程序等,RAM被作為CPU 0 3的工作區(qū)域使用。存儲在存儲器401中的程序通過被加載到CPU,使CPU執(zhí)行被編碼在其中的處理。
CPU 0加載管理程序0和包含調度器100的0S0,并執(zhí)行被編碼在它們中的處理。CPU I加載管理程序I和0S1,并執(zhí)行被編碼在它們中的處理。CPU 2加載管理程序2和0S1,并執(zhí)行被編碼在它們中的處理。CPU3加載管理程序3和OSl,并執(zhí)行被編碼在它們中的處理。這里,CPU I 3分別通過管理程序I 3執(zhí)行管理程序處理,由此能夠執(zhí)行相同的OSl的處理。另外,CPU 0 3在接收到線程的起動指示時通過OS生成該線程。管理程序0 3是在CPU 0 3等硬件上直接動作的程序。這里,通常的管理程序處理是對一般的程序無法操作的諸如進行CPU的高速緩存控制以及I/O操作的特殊寄存器進行操作,或者,使用同樣地一般的程序無法讀寫的共享存儲器上的空間來進行動作的處理。另外,CPU I 3在通過管理程序I 3執(zhí)行上述的通常的管理程序處理之前,CPUI 3分別向管理程序0發(fā)送表示沒有停轉的信息。是否停轉通過程序計數器是否正常地動作來判斷。另外,停轉的CPU不能發(fā)送表示沒有停轉的信息。這里,將停轉的CPU稱為停 轉 CPU。然后,CPU 0在通過管理程序0執(zhí)行上述的通常的管理程序處理之前接收從管理程序I 3發(fā)送來的表示沒有停轉的信息來檢測停轉的CPU。接著,在檢測到停轉CPU的情況下,執(zhí)行確定因停轉CPU而崩潰的線程的處理,并執(zhí)行通常的管理程序處理。另一方面,在沒有檢測到停轉CPU的情況下,執(zhí)行通常的管理程序處理。I/F 402 通過通信線路與 LAN (Local Area Network,局域網)、WAN (Wide AreaNetwork,廣域網)、互聯網等網絡403連接,并經由該網絡403與其他的裝置連接。而且,I/F 402充當網絡403與內部的接口,控制來自外部裝置的數據的輸入輸出。對于I/F 402能夠采用例如調制解調器或者LAN適配器等。另外,雖然未圖示,在多核處理器系統(tǒng)400中包括顯示器以及鍵盤等。顯示器顯示光標、圖標或者工具箱,以及文件、圖像,功能信息等數據。顯示器能夠采用例如CRT、TFT液晶顯示器、等離子顯示器等。鍵盤包括用于輸入文字、數字、各種指示等的鍵來進行數據的輸入。另外,還可以是觸摸屏式的輸入面板或者數字鍵盤等。(實施方式I涉及的多核處理器系統(tǒng)的功能的構成)圖5是示出實施方式I涉及的多核處理器系統(tǒng)的功能的構成的框圖。多核處理器系統(tǒng)500的構成包括接收部501、提取部502、可靠度判斷部503、確定部504、檢測部505、分配判斷部506、決定部507、以及通知部508。各功能(接收部501 通知部508)通過,具體地說,例如,作為主CPU的CPU 0執(zhí)行如圖4所示的存儲器401所存儲的、被編碼在調度器100中的處理來實現。(線程起動時相關的處理)首先,接收部501接收線程或者進程的起動指示。具體地說,例如,作為主CPU的CPU 0接收來自用戶的應用程序的起動指示?;蛘?,正在執(zhí)行中的線程新建立線程時,CPU0從正在執(zhí)行中的線程接收線程的起動指示。接著,提取部502基于應用程序名201從可靠度列表200提取對象應用程序的可靠度,所述對象應用程序起動由接收部501接收的對象線程。
然后,可靠度判斷部503基于由提取部502提取的可靠度和指定閾值來判斷對象應用程序是否是高可靠性應用程序。具體地說,例如,如果可靠度在指定閾值以上那么就判斷對象應用程序是高可靠性應用程序,如果小于指定閾值那么就判斷對象應用程序是低可靠性應用程序。確定部504在由可靠度判斷部503判斷為是高可靠性應用程序的情況下,確定所有的CPU 0 3之中沒有分配低可靠性線程的CPU。這里,沒有分配低可靠性線程的CPU是指分配了高可靠性線程的核心或者沒有分配任何線程的CPU。確定部504在由可靠度判斷部503判斷為是低可靠性應用程序的情況下,確定多核處理器之中沒有分配高可靠性線程的CPU。這里,沒有分配高可靠性線程的CPU是指分配了低可靠性線程的核心或者沒有分配任何線程的CPU。

然后,通知部508向由確定部504確定的核心通知對象線程的起動指示。另外,確定部504在由可靠度判斷部503判斷對象應用程序是低可靠性應用程序的情況下,確定多核處理器之中沒有分配低可靠性應用程序的主線程的核心。另外,確定部504在由可靠度判斷部503判斷為是高可靠性應用程序的情況下,僅在對象線程是主線程的情況下確定多核處理器之中沒有分配低可靠性線程的CPU。在由可靠度判斷部503判斷對象應用程序是高可靠性應用程序的情況下,當對象線程是高可靠性主線程時,通知部508向由確定部504確定的CPU通知對象線程的起動指示。另一方面,當對象線程不是高可靠性主線程時,通知部508向多核處理器中的任意的CPU通知對象線程的起動指示。所謂對象線程不是高可靠性主線程是指對象線程是高可靠性從線程?;谝陨系那闆r,使用附圖來說明分配例子。圖6是示出分配高可靠性線程的例子的說明圖。具體地說,例如,首先,在用戶指示起動應用程序A時,CPU 0接收應用程序A的主線程的分配指示。此外,這里,假設所有的CPU 0 3都沒有分配任何線程。雖然未圖示,假設在這時任務構成信息中也沒有記述任何息。然后,具體地說,例如,CPU 0訪問優(yōu)先度列表200,基于應用程序名201來提取可靠度項目202的值。這里,應用程序A的可靠度項目202的值是3。接著,具體地說,例如,CPU 0判斷應用程序A的可靠度是否在指定閾值以上。在實施方式I中,指定閾值是3。然后,例如,當由CPU 0判斷應用程序A的可靠度在指定閾值以上時,應用程序A被判斷為高可靠性應用程序。另一方面,例如,當由CPU 0判斷應用程序A的可靠度小于指定閾值時,應用程序A被判斷為低可靠性應用程序。這里,應用程序A的可靠度項目202的值是3,因此應用程序A被判斷為高可靠性應用程序。接著,具體地說,例如,在應用程序A被判斷為是高可靠性應用程序的情況下,CPU0基于任務構成信息確定在CPU 0 3之中沒有被分配低可靠性線程的CPU。例如,CPU 0針對任務構成信息內記述的每個與應用程序相關的信息判斷可靠度標志是否是I。上述的與應用程序相關的信息是指表示是否是高可靠性應用程序的可靠度標志和表示應用程序的線程被分別分配給哪個CPU的分配信息。
然后,CPU 0確定與可靠度標志被判斷為0的應用程序相關的信息內記述的CPU。被確定的CPU是分配了低可靠性線程的CPU。然后,例如,CPU (MfCPU 0 3中除了分配了低可靠性線程的CPU之外的CPU確定為沒有分配低可靠性線程的CPU。這里,所有的CPUO 3被確定為沒有分配低可靠性線程的CPU。然后,例如,CPU 0向CPU 0 3中的一個通知主進程的起動指示。在存在多個沒有分配低可靠性線程的CPU的情況下,對于分配給哪個CPU與現有的分配處理是相同的,因此省略詳細的說明。這里,通知CPUO(圖中(I))。然后,CPU 0起動主進程。而且,例如,在向CPU 0通知起動指示之前,CPU 0訪問存儲器401向任務構成信息中新追加與應用程序A相關的信息。例如,記述任務名和可靠度標志。然后,在與該應用程序A相關的信息內記述與主線程分配給了哪個CPU相關的分配信息。接著,當CPU 0通過調度器100接收到來自高可靠性主線程的高可靠性從線程的分配指示時,該高可靠性主線程被分配給CPU 0 3中任意的CPU。由此,假設高可靠性從 線程被如圖中(2) (5)那樣分配。圖7是示出高可靠性線程分配后的任務構成信息的一個例子的說明圖。任務構成信息700中僅僅記述了 “TASK_F00”?!癟ASK_F00”是與上述的任務構成信息300同樣的與應用程序A相關的信息。此外,任務構成信息700只是沒有記述上述的任務構成信息300的“TASK_XYZ”,對“TASK_F00”的記述是相同的,因此這里省略詳細的說明。接著,圖8是示出分配低可靠性線程的例子的說明圖。這里,假設通過用戶的操作通知了應用程序B的起動指示,并僅說明與上述的高可靠性應用程序的分配例子的不同點。接著,具體地說,例如,CPU 0判斷應用程序B的可靠度是否在指定閾值以上。這里,在可靠度列表200中,應用程序B的可靠度項目202的值是2,因此應用程序B被判斷為是低可靠性應用程序。接著,具體地說,例如,在應用程序B被判斷為是低可靠性應用程序的情況下,CPU0基于任務構成信息700確定CPU 0 3之中沒有分配高可靠性主線程的CPU。例如,CPU 0針對任務構成信息700內記述的每個與應用程序相關的信息判斷可靠度標志是否是I。例如,CPU 0確定在與可靠度標志是I的應用程序相關的信息中的MASTER賦值語句所記述的CPU。被確定的CPU是分配了高可靠性主線程的CPU。然后,例如,CPU 0將CPU 0 3中除了分配了高可靠性主線程的CPU之外的剩余的CPU確定為沒有分配高可靠性主線程的CPU。這里,由于“TASK_F00”的主進程被分配給了 CPU 0,因此CPUl 3被確定為沒有分配高可靠性應用程序的主進程的CPU。然后,例如,CPU 0向CPU I 3中的一個通知低可靠性主線程的起動指示。這里,通知給CPU 1(圖中(6))。然后,CPU I起動低可靠性主線程。而且,例如,在向CPU I通知起動指示之前,CPU 0訪問存儲器401并向任務構成信息700中追加與應用程序B相關的信息,記述與主線程被分配給了哪個CPU相關的信息。此外,圖3的任務構成信息300是向任務構成信息700追加了與應用程序B相關的信息后的例子。
接著,當從應用程序B的低可靠性主線程通知低可靠性從線程的分配指示時,CPU0接收分配指示,再次進行同樣的處理。由此,如圖8中的(7)那樣分配低可靠性從線程。返回到圖5的說明,檢測部505確定由確定部504確定的CPU中的沒有被分配任何線程的CPU。分配判斷部506在對檢測部505所檢測出的CPU分配了對象線程的情況下,判斷是否對多核處理器的所有的CPU 0 3都分配了高可靠性主線程。然后,決定部507在由分配判斷部506判斷為向所有的CPU 0 3都已經分配了高可靠性主線程的情況下,從由確定部504確定的CPU中除由檢測部505檢測出的CPU之外的剩余的CPU中決定分配對象線程的CPU。接著,通知部508向由決定部507決定的CPU通知對象線程的分配指示。 另外,分配判斷部506在向由檢測部505檢測出的CPU分配了對象線程的情況下,判斷是否向所有的CPU 0 3都分配了低可靠性線程。然后,決定部507在由分配判斷部506判斷為向所有的CPU都分配了低可靠性線程的情況下,從由確定部504確定的CPU中除由檢測部505檢測出的CPU之外的剩余的CPU中決定分配對象線程的CPU。接著,通知部508向由決定部507決定的CPU通知對象線程的分配指示。這里,基于上述的處理,使用附圖來進行說明。圖9是示出沒有向所有的CPU 0 3都分配低可靠性線程的例子的說明圖。這里,例如,假設應用程序B的低可靠性主線程、低可靠性從線程I、以及低可靠性從線程2已經被分配。此外,未圖示任務構成信息。而且,假設向CPU 0新通知了來自低可靠性主線程的低可靠性從線程3的分配指示。具體地說,例如,CPU 0針對任務構成信息內記述的每個與應用程序相關的信息判斷可靠度標志是否是I。確定與可靠度標志被判斷為I的應用程序相關的信息內所記述的CPU。這里,確定為CPU O。然后,例如,CPU 0在CPU 0 3之中確定與可靠度標志是I的應用程序相關的信息內所記述的CPU。被確定的CPU是分配了高可靠性線程的CPU。接著,確定所有的CPU0 3之中除了分配了高可靠性線程的CPU之外的CPU為沒有分配高可靠性線程的CPU。這里,CPU 0 3都被確定為沒有分配高可靠性線程的CPU。然后,例如,CPU 0進一步確定與可靠度標志是0的應用程序相關的信息內所記述的CPU。被確定的CPU是分配了低可靠性線程的線程。接著,例如,CPU 0確定沒有分配高可靠性線程的CPU之中除了被分配了低可靠性線程的CPU之外的剩余的CPU。所確定的CPU是沒有被分配任何的線程的CPU。這里,不存在已經分配了高可靠性線程的CPU,并向CPU0 2分配了低可靠性線程,因此CPU 3被確定為沒有分配任何線程的CPU。然后,例如,CPU 0通過向CPU 3分配對象線程,來判斷是否向CPUO 3中的每一個CPU都分配了低可靠性線程。具體地說,例如,CPU 0判斷分配有低可靠性線程的CPU數目與沒有分配任何線程的CPU數目的總和是否達到所有的CPU的數目。如果總和值達到所有的CPU的數目,則CPU 0通過向沒有分配任何線程的CPU 3分配對象線程而判斷出向所有的CPU 0 3都分配了低可靠性線程。如果總和值沒有達到所有的CPU的數目,則CPU 0通過向沒有分配任何線程的CPU 3分配對象線程而判斷出沒有向所有的CPU O 3都分配了低可靠性線程。這里,所有的CPU的數目是4個,已經分配了低可靠性線程的CPU的數目是3個,沒有分配任何線程的CPU的數目是I個。因此,通過向CPU 3分配對象線程而判斷出向CPU0 3中的每一個CPU都分配了低可靠性線程。接著,具體地說,例如,CPU 0在判斷為向每個CPU都分配了低可靠性線程的情況下,從CPU 0 3之中除CPU 3之外的剩余的CPU中決定分配對象線程的CPU。這里,剩余的CPU是CPU 0 2。這里,CPU I被決定為分配的CPU。然后,具體地說,例如,CPU 0向決定的CPU I通知對象線程的起動指示。在圖9中,低可靠性從線程3被新分配給CPU I。另外,不向所有的CPU 0 3都分配高可靠性主線程而進行的控制處理與不向所有的CPU 0 3都分配低可靠性線程而進行的控制的處理是相同的,因此省略詳細的說明。 返回到圖5,在由可靠度判斷部503判斷為是低可靠性應用程序的情況下,確定部504從所有的CPU 0 3之中除了作為主CPU的CPU 0之外的剩余的CPU中確定沒有分配高可靠性線程的CPU。然后,通知部508向由確定部504確定的CPU通知對象線程的起動指示。因此,必定不會向作為主CPU的CPU 0分配低可靠性線程。圖10是示出沒有向主CPU分配低可靠性線程的例子的說明圖。這里,還是假設向CPU 2 3分別分配了低可靠性線程,例如,假設CPU 0接收到低可靠性線程的分配通知。此外,圖10的低可靠性線程表示低可靠性主線程以及低可靠性從線程。然后,例如,CPU 0從CPU 0 3之中除了 CPU 0之外的CPU中確定沒有分配高可靠性線程的CPU。這里,CPU I 3被確定為沒有分配高可靠性線程的CPU。然后,例如,CPU0向CPU I通知低可靠性線程的起動指示(圖10中實線箭頭)。因此,由于不會向CPU 0分配崩潰可能性高的低可靠性線程(圖10中虛線箭頭),因此CPU 0停轉的可能性降低。另外,雖然未圖示,但是例如可以CPU 0預先以不向CPU 0和CPUl分配低可靠性線程的方式進行控制,以不向CPU 2和CPU 3分配高可靠性主線程的方式進行控制。返回到圖5,提取部502進一步提取與對象應用程序是否已崩潰過相關的信息。然后,可靠度判斷部503判斷與對象應用程序是否已崩潰過相關的信息是否表示已崩潰過。然后,在表示是已崩潰過的情況下,通知部508可以不向任何CPU通知對象線程的起動指示,而向用戶通知對象應用程序已崩潰過所以不能起動。另一方面,在由可靠度判斷部503判斷為不是已崩潰過的情況下,確定部504實施上述的處理。由此,能夠不使崩潰過的應用程序起動。具體地說,例如,CPU 0在接收到線程的分配指示時,讀出可靠度列表200,并判斷優(yōu)先度項目202的值是否是I。然后,CPU 0在判斷優(yōu)先度項目202的值是I的情況下,不向任何CPU通知線程的起動指示,并輸出對象應用程序是已經停轉(stall)的。作為輸出形式,例如有在顯示器上顯示、通過I/F 402向外部裝置發(fā)送。另外,在本實施方式I中,基于對象應用程序是否是高可靠性應用程序來決定分配的CPU,進一步,還可以詳細地分割可靠度如對象應用程序是高可靠性應用程序、低可靠性應用程序、中可靠性應用程序等來決定分配的CPU。(多核處理器系統(tǒng)進行的控制處理的控制處理步驟)圖11是示出實施方式I涉及的多核處理器系統(tǒng)進行的控制處理的控制處理步驟的一個例子的流程圖。首先,CPU 0判斷是否通過調度器100接收到了對象線程的分配指示(步驟S1101),在判斷為沒有接收到的情況下(步驟SllOl :否),返回到步驟S1101。另一方面,CPU 0在判斷通過調度器接收到了對象線程的分配指示的情況下(步驟SllOl :是),讀出可靠度列表(步驟S1102)。接著,CPU 0通過調度器100從可靠度列表200中提取起動線程的對象應用程序的可靠度(步驟S1103),并判斷對象應用程序是否發(fā)生過停轉(stall)(步驟S1104)。然后,CPU 0在通過調度器100判斷為沒有發(fā)生過停轉的情況下(步驟S1104:否),判斷對象應用程序是否是高可靠的應用程序(步驟SI 105)。首先,CPU 0在通過調度器100判斷為對象應用程序是高可靠的情況下(步驟 S1105 :是),判斷對象線程是否是主線程(步驟S1106)。然后,CPU 0在通過調度器100判斷為對象線程是主線程的情況下(步驟S1106 :是),實施高可靠性主線程的分配處理(步驟 SI 107)。另一方面,CPU 0在通過調度器100判斷對象線程不是主線程的情況下(步驟SI 106 :否),向任意的CPU通知對象線程的起動指示(步驟SI 108)。接著,在步驟S1105中,CPU 0在通過調度器100判斷對象應用程序是非高可靠的應用程序的情況下(步驟S1105 :否),實施低可靠性線程的分配處理(步驟S1109)。在步驟S1107、步驟S1108、或者步驟S1109之后,CPU 0通過調度器100向任務構成信息追加對象線程的分配信息(步驟S1110),結束一系列的處理。另一方面,在步驟S1104中,CPU 0在通過調度器100判斷為發(fā)生過停轉的情況下(步驟S1104 :是),向用戶通知發(fā)生過停轉(步驟S1111),結束一系列的處理。接著,圖12是示出圖11中所示的高可靠性主線程的分配處理(步驟S1107)的詳細的說明的流程圖。首先,CPU 0通過調度器100讀出任務構成信息(步驟S1201),并確定沒有分配低可靠性線程的CPU (步驟S1202)。然后,CPU 0從通過調度器100確定的CPU中檢測出沒有分配線程的CPU (步驟S1203)。然后,判斷是否向多核處理器中的各個CPU都分配了高可靠性主線程(步驟S1204)。CPU 0在通過調度器100判斷為向各個CPU都分配了高可靠性主線程的情況下(步驟S1204 :是),從確定的CPU之中除檢測出的CPU之外的剩余的CPU中決定分配對象線程的CPU(步驟S1205)。關于決定方法,與現有的調度處理是相同的,因此省略詳細的說明。另一方面,CPU 0在通過調度器100判斷為沒有向各個CPU都分配了高可靠性主線程的情況下(步驟S1204 :否),從確定的CPU中決定分配對象線程的CPU (步驟S1206)。然后,在步驟S1205或者步驟S1206之后,CPU 0通過調度器100向決定的CPU通知對象線程的起動指示(步驟S1207),轉移到步驟SI 110。另一方面,CPU 0在通過調度器100判斷為沒有向各個CPU都分配了高可靠性主線程的情況下(步驟S1204 :否),轉移到步驟S1206。
接著,圖13是示出圖11中所示的低可靠性線程的分配處理(步驟S1109)的詳細的說明的流程圖。首先,CPU 0通過調度器100讀出任務構成信息(步驟S1301),并確定沒有分配高可靠性主線程的CPU (步驟S1302)。然后,CPU 0從通過調度器100確定的CPU中檢測出沒有被分配線程的CPU (步驟S1303),通過向所檢測出的CPU分配對象線程來判斷是否向各個CPU都分配了低可靠性主線程(步驟S1304)。然后,CPU 0在通過調度器100判斷為向各個CPU都分配了低可靠性線程的情況下(步驟S1304 :是),從確定的CPU之中除檢測出的CPU之外的剩余的CPU中決定分配對象線程的CPU (步驟S1305)。另一方面,CPU 0在通過調度器100判斷為沒有向各個CPU都分配了低可靠性線程的情況下(步驟S1304 :否),從確定的CPU中決定分配對象線程的CPU(步驟S1306)。然后,CPU 0通過調度器100向所選擇的CPU通知對象線程的起動指示(步驟S1306),轉移到1110。另外,CPU 0通過OS在下載或者安裝應用程序時提取優(yōu)先度,向可靠度列表注冊 應用程序名,將所提取的優(yōu)先度作為可靠度進行注冊。(多核處理器系統(tǒng)的注冊處理步驟)圖14是示出多核處理器系統(tǒng)進行的注冊處理的注冊處理步驟的一個例子的流程圖。這里,示出CPU 0通過OS向可靠度列表注冊可靠度的注冊處理步驟。首先,CPU 0通過OSO下載應用程序(步驟S1401),并提取優(yōu)先度標簽(tag)(步驟S1402)。然后,CPU 0通過OSO讀取可靠度列表(步驟S1403),并注冊應用程序的可靠度(步驟S1404)。優(yōu)先度標簽是例如表示出貨單位等的標簽,如果出貨單位是多核處理器的設計單位,則在可靠度列表中將應用程序的可靠度注冊為高可靠。(實施方式2)接著,圖15是示出實施方式2所涉及的控制處理的一個實施例的說明圖。在實施方式2中,示出立即再起動因停轉的停轉CPU而崩潰的線程的例子。這里,停轉CPU是程序計數器不再動作、不能再執(zhí)行軟件處理的CPU。首先,CPU 0通過管理程序0檢測出停轉的停轉CPU(圖15中(I))。這里,CPU I被作為停轉CPU檢測出。接著,通過停轉CPU確定崩潰的線程(圖15中(2))。這里,高可靠性從線程2是被確定的線程。最后,CPU 0通過管理程序0將確定的線程的分配指示通知給調度器100 (圖15中⑶)。然后,CPU 0通過調度器100將高可靠性從線程分配給CPU UCPU2以及CPU 3中的任一個這里,說明與恢復處理相關的問題。當使用現有技術I以及2時,為了保存動作狀態(tài)需要確保存儲器以及線程的狀態(tài),在嵌入式系統(tǒng)中,存儲器的資源少,因此難以確保資源。由此,存在為了確保資源而系統(tǒng)變得龐大的問題。因此,在實施方式2中,在只有少量存儲器資源的規(guī)格中,立即再起動因停轉的停轉CPU而崩潰的線程。在實施方式2中,對于與實施方式I所示的構成的相同的構成標注相同的符號,并省略說明。(實施方式2涉及的多核處理器系統(tǒng))圖16是示出實施方式2涉及的多核處理器系統(tǒng)的功能的構成的框圖。多核處理器系統(tǒng)1600的構成包括接收部1601、檢測部1602、停止通知部1603、刪除部1604、確定部1605、重啟通知部1606、改變部1607、分配通知部1608、解除通知部1609。具體地說,各功能(接收部1601 解除通知部1609)通過例如CPU 0執(zhí)行如圖4所示的存儲器401中所存儲的、被編碼在管理程序0中的處理來實現。首先,接收部1601接收從多核處理器中除了一個CPU之外的CPU發(fā)送來的表示沒有停轉的信息。具體地說,例如,接收從通過管理程序I 3執(zhí)行管理程序處理的CPU I 3發(fā)送來的存活信號。檢測部1602檢測多核處理器中的停轉CPU。具體地說,例如,CPU 0將多核處理器中的無存活信號的CPU作為停轉CPU檢測出。這里,在由檢測部1602沒有檢測到停轉CPU的情況下,執(zhí)行通常的管理程序處理。以下,對于由檢測部1602檢測到停轉CPU的情況下的處理進行說明。首先,在存儲器401內分配給停轉CPU的一部分存儲器被釋放。然后,停止通知部1603向所有的CPU 0 3通知全部應用程序的暫時停止指示。 刪除部1604從任務構成信息300中刪除與起動由檢測部1602檢測到的導致停轉CPU停轉的線程的應用程序相關的信息。將導致停轉CPU停轉的線程稱為崩潰線程。另外,改變部1607將可靠度列表中記述的起動使由檢測部1602檢測出的停轉CPU停轉的崩潰線程的應用程序的可靠度改變?yōu)楸硎疽驯罎⑦^的可靠度。接著,確定部1605確定因由檢測部1602檢測到的停轉CPU的停轉而崩潰的線程。這里,因停轉CPU的停轉而崩潰的線程是指直到停轉CPU即將停轉之前為止正常地執(zhí)行處理且由于停轉而崩潰的線程。由此,上述的崩潰線程不包含在因停轉CPU的停轉而崩潰的線程中。具體地說,例如,讀出任務構成信息700,根據任務構成信息700確定分配給停轉CPU的線程。然后,重啟通知部1606向由檢測部1602檢測到的停轉CPU通知重啟指示。具體地說,例如,CPU 0向停轉CPU進行復位指示。此外,復位指示是管理程序的特權命令。然后,分配通知部1608向調度器100通知用于將由確定部1605確定的線程向所有的CPU 0 3中除了停轉CPU之外的剩余的CPU分配的線程分配指示。具體地說,例如,CPU 0向CPU 0所具有的寄存器輸出表示分配指示的信息。由此,CPU 0通過調度器100接收到線程分配指示的通知時,執(zhí)行向多核處理器分配線程的處理。具體地說,例如,CPU 0執(zhí)行實施方式I所示的處理。另外,分配通知部1608在停轉CPU重啟完畢之后向調度器100通知由確定部1605確定的線程的分配指示。而且,解除通知部1609接收到來自分配通知部1608的線程分配通知,并且當由該調度器100分配了線程時,向CPU 0 3通知解除暫時停止的解除通知?;谝陨系恼f明,使用附圖來說明因停轉CPU而崩潰的線程的再起動例子。首先,在實施方式2中,作為崩潰前的例子,例舉圖9所示的分配結果和圖3所示的任務構成信息300來說明。圖17是示出線程崩潰的例子的說明圖。假設被分配給CPU I的低可靠性從線程崩潰,而且,OSl由于崩潰的影響而崩潰了,從而程序計數器停止,導致CPU I停轉。圖17中記載的CPU 0的處理表示由OSO進行的處理和由管理程序0進行的處理,CPU I的處理表示由OSl進行的處理和由管理程序I進行的處理。CPU 2的處理表示由OSl進行的處理和由管理程序2進行的處理,CPU 3的處理表示由OSl進行的處理和由管理程序3進行的處理。圖18是示出各CPU向CPU 0發(fā)送存活信號的例子的說明圖。例如,在CPU 0 3沒有停轉的情況下,CPU I 3通過各自的管理程序定期地向CPU 0通知表示沒有停轉的信息。然后,通知后,CPU I 3通過各自的管理程序實施通常的管理程序處理。CPU 2和CPU 3分別通過管理程序2和管理程序3向CPU 0發(fā)送表示沒有停轉的信息(以下,稱為“存活信號”)(圖18中(I))。另一方面,由于CPU I停轉,因此CPU I不能通過管理程序I向CPU 0發(fā)送存活信號。具體地說,例如,CPU 0通過管理程序0接收來自各CPU的存活信號。然后,CPU 0檢測沒有發(fā)送存活信號的CPU。這里,沒有發(fā)送存活信號的CPU是停轉CPU。接著,圖19是示出應用程序被停止的例子的說明圖。具體地說,例如,當檢測到停 轉CPU時,CPU 0通過管理程序0向各CPU通知應用程序的暫時停止指示(圖19中(2))。然后,各CPU使通過OS起動的線程全部暫時停止。然后,具體地說,例如,CPU 0將作為與應用程序B相關的信息的TASK_XYZ的記載全部刪除。刪除后的任務構成信息是與圖7的任務構成信息700相同的。此外,對于作為CPU的停轉原因的崩潰的線程的確定,一直歷來通過OS是能夠做到的,因此省略詳細的說明。接著,圖20是示出重啟指示例以及線程的分配指示例的說明圖。具體地說,例如,CPU 0通過管理程序0向CPU I通知重啟指示(圖20中(3)),當CPU I接收到重啟指示時
即重啟。而且,具體地說,例如,CPU 0通過管理程序0讀出任務構成信息,確定被分配給CPU I的線程。圖21是示出可靠度列表的可靠度被改變的例子的說明圖。具體地說,例如,CPU 0通過管理程序0讀出可靠度列表200,并將應用程序B的可靠度項目202的值改為I。改變后的可靠度列表是可靠度列表2100。然后,圖22是示出向除了停轉CPU之外的剩余的CPU分配崩潰的線程的例子的說明圖。具體地說,例如,CPU 0將通過管理程序0確定的線程的分配指示通知給調度器100 (圖22中⑷)。然后,在CPU I處于重啟中的情況下,CPU 0通過調度器100向CPU0、CPU 2和CPU3中的任意的CPU分配所確定的線程。這里,CPU 0通過調度器100向CUP 2通知高可靠性從線程2的起動指示(圖22中(5))。然后,CPU 2通過OSl起動高可靠性從線程2。接著,CPU 0通過管理程序0向各CPU通知暫時停止的解除指示(圖22中(6)),各CPU通過OS解除暫時停止。由此,因停轉CPU而崩潰的線程被立即再起動。然后,圖23是示出再起動后的任務構成信息的一個例子的說明圖。通過調度器100更新任務構成信息,在任務構成信息2300中示出了高可靠性從線程被分配給CPU 2 (圖23中的下劃線部分)。另外,在CPU I已經重啟完畢的情況下,CPU 0通過調度器100向CPU 0 3中的任意的CPU分配所確定的線程。
返回到圖16,另外,分配通知部1608不向調度器100通知分配指示,而將由確定部1605確定的線程的起動指示通知給通過重啟通知部1606發(fā)出的重啟指示而被重啟的重啟完畢的停轉CPU。圖24是示出向停轉CPU通知線程的起動指示的例子的說明圖。具體地說,例如,CPU 0在CPU I重啟后通過管理程序0向CPU I通知所確定的線程的起動指示(圖24中(I))而不向調度器100通知分配指示。然后,具體地說,例如,CPU 0通過管理程序0向各(PU通知解除應用程序的暫時停止的解除指示(圖24中(2))。具體地說,例如,CPU 0當通過OSO接收到解除指示時,解除所分配的各線程的暫時停止。而且,具體地說,例如,當CPU 2和CPU 3通過OSl接收到解除指示時,解除分配給各CPU的各線程的暫時停止。此外,關于暫時停止處理以及暫時停止的解除處理的具體的處理內容是公知的,因此省略詳細的說明。另外,返回到圖16,確定部1605確定因停轉CPU而崩潰的線程,并且確定崩潰的線 程是中粒度的線程還是粗粒度的線程。然后,確定部1605在崩潰的線程是粗粒度的線程的情況下,確定調用函數和該函數的系數。另一方面,確定部1605在崩潰的線程是中粒度的線程的情況下,確定崩潰時所執(zhí)行著的執(zhí)行位置和結束位置。然后,分配通知部1608在確定的線程是粗粒度的線程的情況下,同時通知分配通知和與調用函數相關的信息。另一方面,在確定的線程是中粒度的線程的情況下,分配通知部1608同時通知分配通知以及執(zhí)行位置和結束位置。具體地說,例如,CPU 0讀出任務構成信息,根據任務構成信息來確定崩潰的線程,并且確定崩潰的線程是C0ARSEGRAIN(粗粒度)還是MIDDLEGRAIN (中粒度)。然后,具體地說,例如,CPU 0在所確定崩潰的線程是C0ARSEGRAIN時,確定該線程所調用的調用函數。另一方面,具體地說,例如,CPU 0在所確定崩潰的線程是MIDDLEGRAIN時,確定該線程所實施著的循環(huán)處理的循環(huán)序號。而且,具體地說,例如,CPU 0確定任務構成信息所記述的101 200的循環(huán)處理中已經執(zhí)行完畢的循環(huán)序號。與執(zhí)行完畢的循環(huán)序號相關的信息通過OS被存儲在存儲器401或者CPU內的寄存器中。例如,如果在101 200之中I 50已經執(zhí)行完畢,那么50被存儲。另外,在執(zhí)行完畢的循環(huán)序號的信息被存儲在存儲器401中的被分配給停轉CPU的區(qū)域的情況下,在停轉CPU被重啟之前,CPU 0將執(zhí)行完畢的循環(huán)序號的信息存儲到存儲器401中的被分配給CPU 0的區(qū)域。然后,具體地說,例如,CPU 0通過管理程序0向調度器100通知崩潰的線程的分配指示和循環(huán)處理的循環(huán)序號中未執(zhí)行的循環(huán)序號?;蛘?,例如,CPU 0通過管理程序0向重啟完畢的CPU I通知崩潰的線程的起動指示和未執(zhí)行的循環(huán)序號。(實施方式2涉及的控制處理的控制處理步驟)圖25是示出實施方式2涉及的多核處理器系統(tǒng)進行的控制處理的控制處理步驟的一個例子的流程圖。首先,CPU 0通過管理程序0接收存活信號(步驟S2501),并判斷是否從所有的CPU都接收到了存活信號(步驟S2502)。然后,在CPU 0通過管理程序0判斷出沒有從所有的CPU接收到存活信號的情況下(步驟S2502 :否),實施再起動處理(步驟S2503或者步驟S2504)。接著,CPU O通過管理程序實施通常的管理程序處理(步驟S2505),并結束一系列的處理。另一方面,在CPU O通過管理程序O判斷從所有的CPU都接收到了存活信號的情況下(步驟S2502 :是),向步驟S2505轉移。圖26是示出圖25所示的再起動處理(步驟S2503)的詳細的說明的流程圖。首先,確定停轉的停轉CPU (步驟S2601),并通知全部應用程序的暫時停止指示(步驟S2602)。然后,向停轉CPU通知重啟指示(步驟S2603),并讀出可靠度列表(步驟S2604)。然后,改變崩潰的應用程序的可靠度(步驟S2605),并讀出任務構成信息(步驟S2606)。從任務構成信息中刪除與崩潰的應用程序相關的任務信息(步驟S2607)。接著,根據任務構成信息檢測出被分配給停轉CPU的線程(步驟S2608),并且判斷是否有未選擇的線程(步驟S2609)。然后,在判斷為有未選擇的線程的情況下(步驟S2609 :是),從未選擇的線程中選 擇任意的線程(步驟S2610)。然后,判斷選擇的線程是否是粗粒度(步驟S2611),在判斷為粗粒度時(步驟S2611 :是),確定調用函數(步驟S2612)。另一方面,在判斷為不是粗粒度時(步驟S2611 :否),確定未執(zhí)行的迭代(iteration)(步驟 S2613)。然后,在步驟S2612或者步驟S2613之后,將在步驟S2612或者步驟S2613中確定的信息和線程的分配指示關聯起來通知給調度器(步驟S2614),并返回到步驟S2609。另外,在判斷為沒有未選擇的線程時(步驟S2609 :否),通知暫時停止的解除指示(步驟S2615),轉移到步驟S2505。圖27是示出圖25所示的再起動處理(步驟S2504)的詳細的說明的流程圖。圖27中所示的步驟S2701 S2713與圖26中所示的步驟S2601 S2613是相同的處理,步驟S2716與步驟S2615是相同的處理,因此省略對與圖26中所示的處理相同的處理的說明。由此,這里,說明步驟S2714和步驟S2715。在步驟S2712或者步驟S2713之后,判斷停轉CPU是否已經重啟(步驟S2714)。然后,在沒有重啟的情況下(步驟S2714 :否),返回到步驟S2714。在判斷為已經重啟的情況下(步驟S2714 :是),將在步驟S2712或者步驟S2713中確定的信息和起動指示關聯起來通知給重啟后的停轉CPU(步驟S2715)。(多核處理器進行的存活信號的發(fā)送處理步驟)圖28是示出由多核處理器進行的存活信號的發(fā)送處理步驟的一個例子的流程圖。首先,在從CPU中沒有停轉的CPU通過各自的管理程序向主CPU發(fā)送存活信號(步驟S2801),并實施通常的管理程序處理(步驟S2802)。在從CPU停轉的情況下,由于不能實施圖28中記載的處理,因此存活信號不會被發(fā)送給主CPU,從而,主CPU能夠檢測停轉的從CPU。另外,主CPU通過如實施方式I所示的那樣實施向主CPU分配高可靠性主線程的調度處理,從而主CPU不會停轉,管理程序處理始終能夠動作。如上所述,根據多核處理器系統(tǒng)、控制程序、以及控制方法,以不向同一個CPU分配高可靠的應用程序的線程和非高可靠的應用程序的線程的方式進行控制。由此,能夠防止因非高可靠的應用程序的線程崩潰而導致高可靠的應用程序的線程崩潰。
另外,以不向已經分配了高可靠的應用程序的主線程的CPU分配非高可靠的應用程序的方式進行控制。由此,即使非高可靠的應用程序的線程崩潰,也僅是高可靠的應用程序的從線程有崩潰的可能,能夠防止高可靠的應用程序的主線程崩潰。由此,只需要再起動崩潰的從線程即可,使恢復變得容易。另外,以不向已經分配了非高可靠的應用程序的線程的CPU分配高可靠的應用程序的主線程的方式進行控制。而且,高可靠的應用程序的從線程被分配給多核處理器中的任意的CPU。通過防止高可靠的應用程序的線程中至少主線程因非高可靠的應用程序而崩潰,能夠防止再起動高可靠的應用程序的所有的線程的麻煩。以不是向多核處理器中的所有的CPU都分配高可靠的應用程序的主線程的方式進行控制。由此,即使在僅有高可靠的應用程序被執(zhí)行時,也能夠向CPU分配非高可靠的應用程序的線程。以不是向多核處理器中的所有的CPU都分配非高可靠的應用程序的主線程的方 式進行控制。由此,即使在僅有非高可靠的應用程序被起動時,也能夠向CPU分配高可靠的應用程序的線程。另外,通過不向主核心分配非高可靠的應用程序的線程,能夠防止執(zhí)行調度處理的主核心停轉。如上所述,根據多核處理器系統(tǒng)、控制程序、以及控制方法,控制調度器使得因停轉的停轉CPU而崩潰的線程被再起動。由此,即使僅有少量的存儲器資源也能夠立即再起動崩潰的線程。另外,通過重啟停轉CPU,并向重啟后的停轉CPU通知崩潰的線程的起動指示,能夠不經由調度器也能夠容易地將崩潰的線程分配給低負載的核心。符號說明500、1600多核處理器系統(tǒng)100調度器502提取部503可靠度判斷部504確定部505檢測部506分配判斷部507決定部508通知部1602 檢測部1605 確定部1608分配通知部1606重啟通知部
權利要求
1.一種多核處理器系統(tǒng),其特征在于,所述多核處理器系統(tǒng)包括多核處理器、以及針對每個應用程序軟件存儲與動作相關的可靠度的存儲裝置,所述應用程序軟件在以下稱為“應用程序”,其中,所述多核處理器內的一個核心能夠訪問所述存儲裝置, 所述一個核心包括 提取單元,所述提取單元從所述存儲裝置中提取所述應用程序之中起動對象線程的對象應用程序的可靠度; 可靠度判斷單元,所述可靠度判斷單元基于所述提取單元所提取的可靠度和指定閾值來判斷所述對象應用程序是否是高可靠的應用程序; 確定單元,在所述可靠度判斷單元判斷出所述對象應用程序是所述高可靠的應用程序時,所述確定單元確定所述多核處理器之中的沒有被分配非高可靠的應用程序的線程的核心,而在所述可靠度判斷單元判斷出所述對象應用程序是所述非高可靠的應用程序時,所述確定單元確定所述多核處理器之中的沒有被分配所述高可靠的應用程序的線程的核心;以及 通知單元,所述通知單元向所述確定單元所確定的核心通知所述對象線程的起動指示。
2.根據權利要求I所述的多核處理器系統(tǒng),其特征在于, 在所述可靠度判斷單元判斷出所述對象應用程序是所述非高可靠的應用程序時,所述確定單元所確定所述多核處理器之中的沒有被分配所述高可靠的應用程序的主線程的核心, 所述通知單元向所述確定單元所確定的核心通知所述對象線程的起動指示。
3.根據權利要求2所述的多核處理器系統(tǒng),其特征在于, 在所述可靠度判斷單元判斷出所述對象應用程序是所述高可靠的應用程序的情況下,當所述對象線程是所述主線程時,所述通知單元向所述確定單元所確定的核心通知所述對象線程的起動指示,當所述對象線程不是所述主線程時,通知單元向所述多核處理器之中的任意的核心通知所述對象線程的起動指示。
4.根據權利要求I所述的多核處理器系統(tǒng),其特征在于, 所述一個核心還包括 檢測單元,所述檢測單元檢測所述確定單元所確定的核心之中沒有被分配任何線程的核心; 分配判斷單元,在所述對象線程被分配給了所述檢測單元所檢測出的核心的情況下,所述分配判斷單元判斷是否向所述多核處理器的所有的核心都分配了所述非高可靠的應用程序的線程;以及 決定單元,在所述分配判斷單元判斷出向所述所有的核心都分配了所述非高可靠的應用程序的線程時,所述決定單元從所述確定的核心之中除所述檢測出的核心之外的剩余的核心中決定分配所述對象線程的核心,在所述分配判斷單元判斷出并沒有向所述所有的核心都分配所述非高可靠的應用程序的線程時,所述決定單元從所述確定的核心中決定分配所述對象線程的核心, 所述通知單元向所述決定單元所決定的核心通知所述對象線程的分配指示。
5.根據權利要求I所述的多核處理器系統(tǒng),其特征在于,所述一個核心還包括 檢測單元,所述檢測單元檢測出所述確定單元所確定的核心之中沒有被分配任何線程分配的核心; 分配判斷單元,在所述對象線程被分配給了所述檢測單元所檢測出的核心的情況下,所述分配判斷單元判斷是否向所述多核處理器的所有的核心都分配了所述高可靠的應用程序的線程; 決定單元,在所述分配判斷單元判斷出向所述所有的核心都分配了所述高可靠的應用程序的線程時,所述決定單元從所述確定的核心中除所述檢測到的核心之外的剩余的核心中決定分配所述對象線程的核心,在所述分配判斷單元判斷出并沒有向所述所有的核心都分配所述高可靠的應用程序的線程時,所述決定單元從所述確定的核心中決定分配所述對象線程的核心, 所述通知單元向所述決定單元所決定的核心通知所述對象線程的分配指示。
6.根據權利要求I至4中任一項所述的多核處理器系統(tǒng),其特征在于, 在所述可靠度判斷單元判斷出所述對象應用程序是所述非高可靠的應用程序時,所述確定單元從在所述多核處理器中除所述一個核心之外的剩余的核心中確定沒有分配所述高可靠的應用程序的線程的核心, 所述通知單元向所述確定單元所確定的核心通知所述對象線程的起動指示。
7.一種多核處理器系統(tǒng),其特征在于,所述多核處理器系統(tǒng)包括多核處理器,當所述多核處理器內的一個核心通過調度器接收到線程的分配指示的通知時,所述多核處理器系統(tǒng)執(zhí)行向多核處理器分配所述線程的分配處理,其中, 所述一個核心包括 檢測單元,所述檢測單元檢測出所述多核處理器之中停轉的停轉核心; 確定單元,所述確定單元確定因所述檢測單元所檢測到的停轉核心的停轉而崩潰的線程;以及 分配通知單元,所述分配通知單元將分配給所述多核處理器之中除了停轉核心之外的剩余的核心的所述確定單元所確定的線程的分配指示通知給所述調度器。
8.根據權利要求7所述的多核處理器系統(tǒng),其特征在于, 所述一個核心還包括 重啟通知單元,所述重啟通知單元向所述檢測單元所檢測出的停轉核心通知重啟指示, 所述分配通知單元向通過所述重啟通知單元所通知的重啟指示而被重啟的重啟完畢的停轉核心通知所述確定單元所確定的線程的起動指示,而不向所述調度器通知所述分配指示。
9.一種控制程序,其特征在于,所述控制程序使多核處理器內的一個核心執(zhí)行以下工 序,其中,所述多核處理器內的一個核心能夠訪問針對每個應用程序軟件存儲與動作相關的可靠度的存儲裝置,所述應用程序軟件在以下稱為“應用程序”,其中,所述工序包括 提取工序,在所述提取工序中,從所述存儲裝置中提取起動對象線程的對象應用程序的可靠度; 可靠度判斷工序,在所述可靠度判斷工序中,基于在所述提取工序中提取的可靠度和指定閾值來判斷所述對象應用程序是否是高可靠的應用程序; 確定工序,當在所述可靠度判斷工序中判斷為是所述高可靠的應用程序時,在確定工序中確定所述多核處理器之中的沒有被分配非高可靠的應用程序的線程的核心,在判斷為是所述非高可靠的應用程序時,在確定工序中確定所述多核處理器之中的沒有被分配所述高可靠的應用程序的線程的核心;以及 通知工序,在所述通知工序中向在所述確定工序中所確定的核心通知所述對象線程的起動指示。
10.一種控制程序,其特征在于,所述控制程序使所述多核處理器內的一個核心執(zhí)行以下工序,其中所述多核處理器內的一個核心在接收到線程的分配指示的通知時,通過調度器執(zhí)行向多核處理器分配所述線程的分配處理,其中,所述工序包括 檢測工序,在所述檢測工序中,檢測出所述多核處理器之中停轉的停轉核心; 確定工序,在所述確定工序中,確定因在所述檢測工序中所檢測到的停轉核心的停轉而崩潰的線程;以及 分配通知工序,在所述分配通知工序中,將分配給所述多核處理器之中除了停轉核心之外的剩余的核心的通過所述確定工序所確定的線程的分配指示通知給所述調度器。
11.一種控制方法,其特征在于,在所述控制方法中多核處理器內的一個核心執(zhí)行以下工序,其中,所述多核處理器內的一個核心能夠訪問針對每個應用程序軟件存儲與動作相關的可靠度的存儲裝置,所述應用程序軟件在以下稱為“應用程序”,其中,所述工序包括 提取工序,在所述提取工序中,從所述存儲裝置中提取起動對象線程的對象應用程序的可靠度; 可靠度判斷工序,在所述可靠度判斷工序中,基于在所述提取工序中提取的可靠度和指定閾值來判斷所述對象應用程序是否是高可靠的應用程序; 確定工序,當在所述可靠度判斷工序中判斷為是所述高可靠的應用程序時,在確定工序中確定所述多核處理器之中的沒有被分配非高可靠的應用程序的線程的核心,在判斷為是所述非高可靠的應用程序時,在確定工序中確定所述多核處理器之中的沒有被分配所述高可靠的應用程序的線程的核心;以及 通知工序,在所述通知工序中向在所述確定工序中所確定的核心通知所述對象線程的起動指示。
12.—種控制方法,其特征在于,在所述控制方法中所述多核處理器內的一個核心執(zhí)行以下工序,其中,所述多核處理器內的一個核心在接收到線程的分配指示的通知時,通過調度器執(zhí)行向多核處理器分配所述線程的分配處理,其中,所述工序包括 檢測工序,在所述檢測工序中,檢測出所述多核處理器之中停轉的停轉核心; 確定工序,在所述確定工序中,確定因在所述檢測工序中檢測到的停轉核心的停轉而崩潰的線程;以及 分配通知工序,在所述分配通知工序中,將向所述多核處理器之中除了停轉核心之外的剩余的核心分配通過所述確定工序所確定的線程的分配指示通知給所述調度器。
全文摘要
在多核處理器系統(tǒng)中,應用程序A、C、D處于執(zhí)行中,并且執(zhí)行中的應用程序全部都是高可靠性應用程序。向CPU 0分配了應用程序C和應用程序D的高可靠性主線程,向CPU 1分配了應用程序A的高可靠性主線程。當作為主CPU的CPU 0通過調度器(100)接收到作為低可靠性應用程序的應用程序B的低可靠性線程的分配指示時,確定沒有被分配高可靠性主線程的CPU。這里,確定為CPU 2和CPU 3,CPU 0通過調度器(100)向所確定的CPU 2通知低可靠性線程的起動指示。由此,以不將高可靠性主線程和低可靠性線程分配給同一個CPU的方式進行了控制。
文檔編號G06F9/50GK102754079SQ201080063238
公開日2012年10月24日 申請日期2010年2月23日 優(yōu)先權日2010年2月23日
發(fā)明者宮崎清志, 山下浩一郎, 山內宏真 申請人:富士通株式會社
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
西昌市| 闽清县| 贡山| 万山特区| 台南市| 安图县| 揭东县| 张北县| 葵青区| 玛沁县| 互助| 合江县| 太仆寺旗| 沈阳市| 通榆县| 习水县| 衢州市| 长顺县| 沙河市| 南昌市| 上思县| 孟津县| 于田县| 鲁甸县| 南溪县| 巧家县| 邻水| 泗阳县| 泰安市| 邢台市| 三原县| 卓尼县| 马龙县| 菏泽市| 博野县| 阿拉善盟| 军事| 施秉县| 宝丰县| 潮安县| 南陵县|