專利名稱:程序控制裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及切換按每個(gè)時(shí)隙(timeslot)應(yīng)該執(zhí)行的線程的程序控制裝 置,即操作系統(tǒng)(Operating System : OS)。
背景技術(shù):
OS的主要功能是硬件管理、線程管理、數(shù)據(jù)管理以及輸入輸出管理。 其中,線程管理用于管理線程的執(zhí)行順序,是用于使CPU、存儲器、輸入
輸出裝置等高效率地工作的重要功能。
在此,"線程"是對程序的啟動、執(zhí)行、結(jié)束等一系列流程進(jìn)行統(tǒng)一管理 的控制單位。
在操作系統(tǒng)管理下工作的程序以線程來管理,與程序執(zhí)行有關(guān)的OS
的操作均以線程為單位被執(zhí)行。
決定線程的執(zhí)行順序的算法之一是循環(huán)調(diào)度。循環(huán)調(diào)度的方法是,將 某執(zhí)行時(shí)間分配給作為控制單位的線程,在被分配的時(shí)間之內(nèi),處理器的 執(zhí)行權(quán)被提供給線程,在被分配的時(shí)間過去后,將執(zhí)行權(quán)移向其他的線程。 據(jù)此,所有的線程被平等且以決定的時(shí)間被分配了執(zhí)行權(quán)。
在媒體處理以處理器來執(zhí)行的實(shí)時(shí)系統(tǒng)中,需要同時(shí)執(zhí)行多個(gè)編碼、 解碼、多路復(fù)用處理等,為了平等地分配執(zhí)行權(quán),而將實(shí)現(xiàn)媒體處理的各 個(gè)功能分配給線程,并通過將執(zhí)行時(shí)間分配給每個(gè)功能,從而循環(huán)調(diào)度可 以適用。
但是,循環(huán)調(diào)度的問題在于, 一旦線程失去執(zhí)行權(quán),到下一個(gè)執(zhí)行權(quán) 被分配要在一個(gè)周期經(jīng)過后,因此,在實(shí)時(shí)系統(tǒng)中存在應(yīng)答性的問題。雖 然可以通過將周期縮短設(shè)定來改善應(yīng)答性,但是周期越短,切換執(zhí)行權(quán)的 處理中的系統(tǒng)開銷就越顯著。為了解消切換執(zhí)行權(quán)的處理中的系統(tǒng)開銷, 公開的處理器是在切換執(zhí)行權(quán)時(shí),以硬件來執(zhí)行前后關(guān)系的保存和恢復(fù)(專 利文獻(xiàn)l )。
而且,以多處理器構(gòu)成來實(shí)現(xiàn)上述以往技術(shù)的情況下,還存在將線程 分配給哪個(gè)處理器的問題。
在對稱多處理(SymmetricalMultiprocessing : SMP)結(jié)構(gòu)中,為了使 系統(tǒng)負(fù)載分散到多個(gè)處理器,由于在調(diào)度時(shí)動態(tài)地將線程分配到處理器, 因此,按每個(gè)線程分配執(zhí)行時(shí)間是困難的。
因此,在按每個(gè)線程分配處理器的情況下,也必需要決定固定的處理 器。在非專利文獻(xiàn)l中公開了實(shí)時(shí)OS,其決定按照每個(gè)線程而分配的處理 器,并按照每個(gè)處理器進(jìn)行優(yōu)先級調(diào)度。
專利文獻(xiàn)l日本特許第3813930號公報(bào)
非專利文獻(xiàn)1 信息處理學(xué)會雜志"機(jī)能分散7 &千7。 口七'7廿向tt o y 7 A夕厶o S (面向功能分散多處理器的實(shí)時(shí)OS)Vo1.47, No.l, 2006.
然而,根據(jù)以上以往的技術(shù),隨著線程數(shù)的增加,以所有時(shí)隙的合計(jì) 時(shí)間,即一周期來切換的次數(shù)也增加,同時(shí)管理前后關(guān)系的區(qū)域也增加, 因此,按照每個(gè)線程確保必要性能是困難的。
并且,在多處理器結(jié)構(gòu)中,各個(gè)線程被直接分配了某個(gè)處理器是因?yàn)?線程是依賴于處理器的描述,在多處理器的結(jié)構(gòu)被變更時(shí)線程的描述也必 需要變更,因此出現(xiàn)的問題是,在線程設(shè)計(jì)上缺乏適應(yīng)性。
發(fā)明內(nèi)容
于是,為了解決上述的問題,本發(fā)明的第一個(gè)目的是提供一種能夠滿 足多個(gè)線程的必要性能的程序控制裝置。而且,第二個(gè)目的是提供一種能 夠確保程序設(shè)計(jì)的適應(yīng)性的程序控制裝置。
為了達(dá)到上述的目的,本發(fā)明的程序控制裝置,對要按照每個(gè)時(shí)隙執(zhí)
行的線程進(jìn)行切換,其特征在于,包括發(fā)生單元,發(fā)生第一中斷信號,
該第一中斷信號以一個(gè)時(shí)隙作為接收方;以及受理單元,在作為所述接收
方的時(shí)隙和當(dāng)前的時(shí)隙不一致的情況下,不受理該第一中斷信號,在一致 的情況下受理該第一中斷信號。
根據(jù)此構(gòu)成,可以防止在不是接收方的時(shí)隙使不必要的中斷處理(中 斷處理程序)啟動。也就是說,將執(zhí)行線程的時(shí)隙作為一個(gè)虛擬的處理器 來考慮,因此根據(jù)上述構(gòu)成,由于在不是接收方的虛擬處理器第一中斷信
號不被受理,所以可以防止因第一中斷信號造成的不是接收方的虛擬處理 器的性能下降。據(jù)此,可以確保各線程的必要性能。
在此,也可以是,所述程序控制裝置包括存儲單元,存儲線程信息 和時(shí)隙信息,所述線程信息包含被分配了線程的時(shí)隙的標(biāo)識符,所述時(shí)隙
信息包含表示對應(yīng)的線程的信息;以及判別單元,根據(jù)所述線程信息以及 時(shí)隙信息,來判別成為所述第一中斷信號的接收方的時(shí)隙;所述發(fā)生單元 發(fā)生將所述判別單元的判別結(jié)果作為接收方的第一中斷信號。
根據(jù)此構(gòu)成,由于可以根據(jù)線程信息以及時(shí)隙信息來決定第一中斷信 號的接收方,因此可以不需要在各個(gè)線程的程序設(shè)計(jì)中的執(zhí)行線程的處理 器的描述以及線程間通信中的接受通信方的線程的描述,所以可以確保程 序設(shè)計(jì)的靈活性。
在此,也可以是,所述程序控制裝置進(jìn)一步包括接受處理部,從以
當(dāng)前的時(shí)隙正在執(zhí)行的線程中接受系統(tǒng)調(diào)用;以及調(diào)度部,根據(jù)所述系統(tǒng) 調(diào)用來變更線程的狀態(tài)或時(shí)隙的狀態(tài);所述發(fā)生單元,在所述線程的狀態(tài) 由所述調(diào)度部變更了的情況下,發(fā)生所述第一中斷信號,所述第一中斷信 號包含與該變更相關(guān)聯(lián)的線程的時(shí)隙的指定,在所述時(shí)隙的狀態(tài)由所述調(diào) 度部變更了的情況下,發(fā)生第二中斷信號;所述程序控制裝置進(jìn)一步包括 第一發(fā)送單元,按照由所述受理單元受理的第一中斷信號,在時(shí)隙內(nèi)進(jìn)行 線程的切換;以及第二發(fā)送單元,按照由所述受理單元受理的第二中斷信 號,變更所述時(shí)隙信息。
根據(jù)此構(gòu)成,可以根據(jù)來自各個(gè)線程的系統(tǒng)調(diào)用,例如得知作為接受 通信方的線程所屬的時(shí)隙的處理器,并利用第一中斷信號,針對與作為接 受通信方的線程相符的時(shí)隙,驅(qū)動第一發(fā)送單元。據(jù)此,可以抑制因線程 間通信而造成的性能下降。
在此,也可以是,所述程序控制裝置進(jìn)一步包括時(shí)隙切換部,按照所 述時(shí)隙的分配時(shí)間來切換時(shí)隙;所述時(shí)隙切換部在時(shí)隙的切換期間禁止中 斷,在時(shí)隙的切換剛好結(jié)束時(shí),許可所述受理單元受理中斷。
根據(jù)此構(gòu)成,時(shí)隙的切換可以優(yōu)先于第一中斷信號,即可以優(yōu)先于時(shí) 隙內(nèi)的執(zhí)行而被執(zhí)行,因此被分配到時(shí)隙的時(shí)間不會被浪費(fèi)。
在此,也可以是,所述程序控制裝置被設(shè)置于包括多個(gè)處理器的多處
理器;所述發(fā)生單元發(fā)生所述第一中斷信號,所述第一中斷信號包含處理 器的指定和時(shí)隙的指定;所述受理單元,按照每個(gè)處理器來受理所述第一 中斷信號,且在與處理器的指定不一致的處理器不受理所述第一中斷信號。
根據(jù)此構(gòu)成,可以防止在不是第一中斷信號的接收方的處理器使不必 要的中斷處理(中斷處理程序)啟動,并可以確保不是接收方的處理器中 的每個(gè)時(shí)隙的線程的處理性能。
在此,也可以是,所述程序控制裝置進(jìn)一步包括線程存儲單元,按 照每個(gè)線程來存儲所述線程信息,所述線程信息包含線程的狀態(tài)和被分配 了線程的時(shí)隙的標(biāo)識符;時(shí)隙信息存儲單元,按照每個(gè)時(shí)隙來存儲所述時(shí) 隙信息,所述時(shí)隙信息包含時(shí)隙的分配時(shí)間、與該時(shí)隙對應(yīng)的線程信息、 和被分配了該時(shí)隙的處理器的標(biāo)識符;接受處理部,被設(shè)置于每個(gè)處理器, 從以當(dāng)前的時(shí)隙正在執(zhí)行的線程中接受系統(tǒng)調(diào)用;以及調(diào)度部,被設(shè)置于 每個(gè)處理器,并根據(jù)被接受的所述系統(tǒng)調(diào)用來變更定義線程的線程信息或 定義時(shí)隙的時(shí)隙信息;所述發(fā)生單元,第一中斷發(fā)生部,被設(shè)置于每個(gè)處 理器,在所述線程信息由對應(yīng)的調(diào)度部變更了的情況下,發(fā)生所述第一中 斷信號,所述第一中斷信號包含成為接收方的處理器的指定和成為接收方 的時(shí)隙的指定;以及第二中斷發(fā)生部,被設(shè)置于每個(gè)處理器,在所述時(shí)隙 信息由對應(yīng)的調(diào)度部變更了的情況下,發(fā)生所述第二中斷信號,所述第二 中斷信號包含成為接收方的處理器的指定。
根據(jù)此構(gòu)成,由于線程信息以及時(shí)隙信息包含了被分配到線程的時(shí)隙 以及處理器的對應(yīng)關(guān)系,因此在程序控制裝置,可以動態(tài)地將線程分配到 任意的時(shí)隙以及任意的處理器。據(jù)此,在各個(gè)線程的程序設(shè)計(jì)中可以不需 要執(zhí)行線程的處理器的描述,從而可以確保程序設(shè)計(jì)的靈活性。
在此,也可以是,所述調(diào)度部根據(jù)所述時(shí)隙標(biāo)識符以及處理器標(biāo)識符, 來確定與被變更的線程信息對應(yīng)的處理器以及時(shí)隙;所述第一中斷單元按 照由所述調(diào)度部確定的處理器以及時(shí)隙來發(fā)生所述第一中斷信號。
在此,也可以是,所述受理單元在與處理器的指定不一致的處理器, 不受理所述第二中斷信號,且在每個(gè)處理器的確定的時(shí)隙中受理第二中斷 信號。
在此,也可以是,所述程序控制裝置進(jìn)一步包括時(shí)隙切換部,被設(shè)
置于每個(gè)處理器,并按照所述時(shí)隙的分配時(shí)間來切換時(shí)隙;第一發(fā)送單元, 被設(shè)置于每個(gè)處理器,并按照由所述受理單元受理的第一中斷信號,在時(shí) 隙內(nèi)進(jìn)行線程的切換;以及第二發(fā)送單元,被設(shè)置于每個(gè)處理器,并按照 由所述受理單元受理的第二中斷信號,變更所述時(shí)隙信息。
在此,也可以是,所述時(shí)隙切換部在時(shí)隙的切換期間禁止中斷,在時(shí) 隙的切換剛好結(jié)束時(shí),許可所述受理單元受理中斷。
根據(jù)此構(gòu)成,由第一發(fā)送單元進(jìn)行的線程切換可以在被分配到時(shí)隙的 時(shí)間內(nèi)進(jìn)行,例如,從被分配到時(shí)隙的多個(gè)線程中選擇執(zhí)行的線程并開始 執(zhí)行的處理,可以在被分配到時(shí)隙的時(shí)間內(nèi)進(jìn)行。并且,由第二發(fā)送單元 進(jìn)行的時(shí)隙信息的變更可以優(yōu)先于時(shí)隙內(nèi)的線程切換而被執(zhí)行,因此被分 配到時(shí)隙的時(shí)間不會被浪費(fèi)。據(jù)此,可以確保時(shí)隙內(nèi)的線程的必要性能。
在此,也可以是,所述第二發(fā)送單元按照第二中斷信號,進(jìn)行時(shí)隙信 息的追加或刪除。
在此,也可以是,所述第二發(fā)送單元按照每個(gè)處理器算出時(shí)隙的分配 時(shí)間的總和,并根據(jù)每個(gè)處理器的總和來選擇與新追加的時(shí)隙信息對應(yīng)的 處理器。
在此,也可以是,所述第二發(fā)送單元按照基于表示分配時(shí)間的變更的 所述系統(tǒng)調(diào)用的第二中斷信號,變更時(shí)隙信息中的分配時(shí)間。
根據(jù)此構(gòu)成,由于不需要由線程內(nèi)的程序描述進(jìn)行的處理器的指定, 因此可以將新的時(shí)隙分配到任意的處理器,從而可以靈活地、動態(tài)地分配 各個(gè)處理器的處理性能,并可以靈活地設(shè)定多處理器全體的處理性能。
在此,也可以是,所述線程信息還包含線程的優(yōu)先級;所述第一發(fā)送 單元按照所述第一中斷信號,將正在執(zhí)行的線程切換到與該時(shí)隙對應(yīng)的一 個(gè)或多個(gè)線程中的優(yōu)先級最高的線程。
由于在時(shí)隙信息以及線程信息中動態(tài)地記錄了時(shí)隙被分配到了哪個(gè)處 理器,因此為了線程間的同步或資源的排斥控制等,在進(jìn)行線程間通信時(shí), 調(diào)度部可以確定接受通信方的線程所屬的時(shí)隙以及處理器。據(jù)此,線程上 的線程間通信所必需的信息只要是表示接受通信方的線程的說明符和表示 線程間通信對象的說明符即可。因此,可以不必知道各個(gè)線程屬于哪個(gè)處 理器,以及屬于哪個(gè)時(shí)隙,即使在處理器或時(shí)隙的構(gòu)成被變更的情況下,
線程上的程序也無需變更。據(jù)此,可以在不對程序產(chǎn)生影響的情況下靈活 地變更系統(tǒng)的構(gòu)成。
另外,本發(fā)明不僅可以作為具有這些特征性單元的程序控制裝置來實(shí) 現(xiàn),而且可以作為將程序控制裝置中所包含的特征性單元作為步驟的程序 控制方法來實(shí)現(xiàn),并且還可以作為將程序控制裝置中所包含的特征性單元 作為使計(jì)算機(jī)發(fā)揮功能的操作系統(tǒng)來實(shí)現(xiàn)。并且,不言而喻,這些操作系
統(tǒng)可以通過CD—ROM(Compact Disc-Read Only Memory)等記錄介質(zhì)或 因特網(wǎng)等通信介質(zhì)來流通。
通過本發(fā)明,可以按每個(gè)線程來保證一定的處理性能,同時(shí)還可以減 輕伴隨系統(tǒng)的構(gòu)成變更而帶來的程序變更的負(fù)擔(dān)。
圖1是本發(fā)明的實(shí)施例中程序控制裝置的主要構(gòu)成部的方框圖。 圖2示出了時(shí)隙存儲部內(nèi)的時(shí)隙信息和線程存儲部內(nèi)的線程信息的具 體例子。
圖3示出了對象存儲部內(nèi)的對象信息和線程存儲部中所存儲的等待隊(duì)列。
圖4是線程等待處理的詳細(xì)流程圖。
圖5是線程等待處理的詳細(xì)流程圖。
圖6是線程生成處理(ThreadCreate)的詳細(xì)流程圖。
圖7(a)是線程結(jié)束處理和線程結(jié)束等待處理的說明圖。
圖7(b)是線程結(jié)束處理和線程結(jié)束等待處理的說明圖。
圖8A是線程結(jié)束處理(ThreadExit)的詳細(xì)流程圖。
圖8B是線程結(jié)束等待處理(ThreadJoin)的詳細(xì)流程圖。
圖9是時(shí)隙控制處理的詳細(xì)流程圖。
圖IOA是時(shí)隙控制處理內(nèi)的指令處理的詳細(xì)流程圖。
圖10B是時(shí)隙生成處理的一個(gè)例子的流程圖。
圖11是時(shí)隙切換處理的詳細(xì)流程圖。
圖12示出了對象存儲部內(nèi)的mutex信息的具體例子。
圖13是mutex鎖定處理(MutexLock)的詳細(xì)流程圖。
圖14是mutex鎖定解除處理(MutexUnlock)的詳細(xì)流程圖。
圖15A示出了對象存儲部內(nèi)的cond信息的具體例子。
圖15B是cond的工作說明圖。
圖16是cond等待處理(CondWait)的詳細(xì)流程圖。
圖17是cond通知處理(CondSignal)的詳細(xì)流程圖。
圖18示出了對象存儲部內(nèi)的flag信息的具體例子。
圖19示出了 flag等待處理(FlagWait)的詳細(xì)流程圖。
圖20示出了 flag設(shè)定處理(FlagSet)的詳細(xì)流程圖。
圖21示出了 flag復(fù)位處理(FlagClear)的詳細(xì)流程圖。
圖22示出了對象存儲部內(nèi)的semaphore信息的具體例子。
圖23是semaphore獲得處理(SemGet)的詳細(xì)流程圖。
圖24是semaphore釋放處理(SemRelease)的詳細(xì)流程圖。
符號說明
10發(fā)送發(fā)行部
11應(yīng)用編程接口(API)處理部
12調(diào)度部
13第一中斷發(fā)生部
14第二中斷發(fā)生部
15應(yīng)用編程接口(API)結(jié)束處理部
20發(fā)送處理部
21第一中斷受理部
22時(shí)隙內(nèi)發(fā)送部
23第二中斷受理部
24時(shí)隙狀態(tài)變更部
25時(shí)隙切換部
30定時(shí)控制部
40執(zhí)行控制部
50時(shí)隙存儲部
51、52、 53 時(shí)隙信息
60線程存儲部
61、62、 63、 64、 65線程信
70對象存儲部
71、72對象信息
80前后關(guān)系保持部
■> 110、 120 處理器
200mutex信息
300cond信息
400flag信息
500semaphore信息
具體實(shí)施方式
[全體構(gòu)成]
圖1是本發(fā)明的實(shí)施例中按照時(shí)隙切換應(yīng)該執(zhí)行的線程的程序控制裝 置的主要構(gòu)成部的方框圖。該圖中示意地示出了通過執(zhí)行進(jìn)行線程切換的
軟件,而實(shí)現(xiàn)的作為OS的一部分功能的處理器的功能。
關(guān)于處理器的硬件的構(gòu)成,在單處理器的情況下一般的結(jié)構(gòu)就可以。 多處理器的情況下為一般的對稱多處理結(jié)構(gòu),每個(gè)處理器核心與可存取的 存儲器連接,每個(gè)處理器核心中斷其他的處理器核心,并啟動中斷處理程 序。
此程序控制裝置分別在一個(gè)或多個(gè)處理器內(nèi)處理具有分配時(shí)間指定的 多個(gè)線程群,以及確保并執(zhí)行各個(gè)線程群的必要的性能。
在此程序控制裝置中,各個(gè)處理器向所有處理器發(fā)生以一個(gè)時(shí)隙為接 收方的第一中斷信號,在被視為所述接收方的時(shí)隙與當(dāng)前的時(shí)隙不一致的 情況下,不受理該第一中斷信號,在一致的情況下,受理該第一中斷信號。
據(jù)此,在不是接收方的時(shí)隙就可以防止不需要的中斷處理(中斷處理 程序等)的啟動。也就是說,執(zhí)行線程的時(shí)隙以一個(gè)虛擬的處理器來考慮, 通過以上的構(gòu)成,在不是接收方的虛擬處理器由于不受理第一中斷信號, 因此,通過第一中斷信號可以防止不是接收方的虛擬處理器的性能的降低。 據(jù)此,可以確保各個(gè)線程的必要性能。
16
而且,程序控制裝置包括存儲信息的存儲部,被存儲的信息包括包 含被分配了線程的時(shí)隙的標(biāo)識符的線程信息,和包含表示對應(yīng)的線程的信 息的時(shí)隙信息,根據(jù)所述線程信息以及時(shí)隙信息來決定成為所述第一中斷 信號的接收方的時(shí)隙,并由發(fā)生單元發(fā)生以被決定的時(shí)隙為接收方的第一 中斷信號。
據(jù)此,由于第一中斷信號的接收方可以根據(jù)線程信息以及時(shí)隙信息來 決定,因此,在各個(gè)線程的程序設(shè)計(jì)中,可以不需要執(zhí)行線程的處理器的 描述以及在線程間通信時(shí)通信對象線程的描述,從而可以確保程序設(shè)計(jì)的 適應(yīng)性。
如該圖所示,程序控制裝置具有多個(gè)處理器,即處理器100、 110、…120,且各個(gè)處理器分別包括發(fā)送發(fā)行部10、發(fā)送處理部20、 定時(shí)控制部30、執(zhí)行控制部40、時(shí)隙存儲部50以及前后關(guān)系保持部80, 另外,程序控制裝置還包括所有的處理器共有的線程存儲部60和對象存儲 部70。
發(fā)送發(fā)行部10進(jìn)行從線程上的程序中調(diào)用的應(yīng)用程序接口(API)的處 理,并根據(jù)需要向發(fā)送處理部20輸出中斷信號。
發(fā)送處理部20受理來自發(fā)送發(fā)行部10的中斷信號,變更時(shí)隙以及線 程的信息。并且,在預(yù)先規(guī)定的周期內(nèi)進(jìn)行至少選擇一次時(shí)隙的循環(huán)調(diào)度。
定時(shí)控制部30在每次由發(fā)送處理部20設(shè)定中斷時(shí)間時(shí),就開始時(shí)間 計(jì)數(shù),在達(dá)到該中斷時(shí)間時(shí),輸出超時(shí)信號。此超時(shí)信號是為了通知時(shí)隙 的切換定時(shí)而被通知到發(fā)送處理部20的。
執(zhí)行控制部40執(zhí)行由發(fā)送處理部20選擇的線程。執(zhí)行控制部40相當(dāng) 于執(zhí)行線程的CPU等硬件。
時(shí)隙存儲部50存儲有關(guān)時(shí)隙的信息。線程存儲部60存儲有關(guān)線程的 信息。
對象存儲部70存儲有關(guān)線程在與其他的線程進(jìn)行通信時(shí)所使用的對象 的信息。
前后關(guān)系保持部80在正在執(zhí)行的線程中止并再次開始其他的線程的執(zhí) 行時(shí),保存中止的線程的前后關(guān)系,為了恢復(fù)再次開始的線程的前后關(guān)系 而保持前后關(guān)系。前后關(guān)系中包含有處理器的寄存器信息和高速緩存信息等。 發(fā)送發(fā)行部10包括應(yīng)用程序接口(API)處理部11、調(diào)度部12、第一 中斷發(fā)生部13、第二中斷發(fā)生部14、以及API結(jié)束處理部15。 <API處理部11 >
API處理部11受理由線程執(zhí)行的程序發(fā)行的API調(diào)用,并按照API 進(jìn)行處理。API與對象一起被提供,進(jìn)行對應(yīng)的對象信息存儲部70的操作。 當(dāng)操作的結(jié)果為被判斷為需要調(diào)度的情況下,向調(diào)度部12發(fā)出通知。
<調(diào)度部12〉
調(diào)度部12接受來自API處理部11的通知,更新時(shí)隙存儲部50、線程 存儲部60、對象存儲部70的信息。更新的結(jié)果是,在更新了被分配到某 時(shí)隙的線程的信息的情況下,向第一中斷發(fā)生部13發(fā)出通知,在更新了時(shí) 隙的信息的情況下,分別向第二中斷發(fā)生部14發(fā)出通知。
<第一中斷發(fā)生部13〉
第一中斷發(fā)生部13接受來自調(diào)度部12的通知,對被分配有更新了信 息的線程的時(shí)隙的處理器進(jìn)行中斷。中斷由該處理器的發(fā)送處理部20的第 一中斷受理部21受理。
<第二中斷發(fā)生部14〉
第二中斷發(fā)生部14接受來自調(diào)度部12的通知,對更新了信息的時(shí)隙 的處理器進(jìn)行中斷。中斷由該處理器的發(fā)送處理部20的第二中斷受理部 23受理。
<API結(jié)束處理部15〉
在第一中斷發(fā)生部13或第二中斷發(fā)生部14進(jìn)行了中斷后,API結(jié)束 處理部15進(jìn)行API調(diào)用的后處理。具體而言,進(jìn)行將針對API調(diào)用的返 回值返回到程序的處理。
發(fā)送處理部20包括第一中斷受理部21、時(shí)隙內(nèi)發(fā)送部22、第二中 斷受理部23、時(shí)隙狀態(tài)變更部24以及時(shí)隙切換部25。時(shí)隙內(nèi)發(fā)送部22 相當(dāng)于權(quán)利要求中的第一發(fā)送單元,時(shí)隙狀態(tài)變更部24相當(dāng)于權(quán)利要求中 的第二發(fā)送單元。
<第一中斷受理部21>
第一中斷受理部21受理由屬于處理器100到處理器120中的、某個(gè) 處理器的發(fā)送發(fā)行部10的第一中斷發(fā)生部13所發(fā)生的中斷。在受理了中 斷時(shí),向時(shí)隙內(nèi)發(fā)送部22通知。
<時(shí)隙內(nèi)發(fā)送部22〉
時(shí)隙內(nèi)發(fā)送部22接受來自第一中斷受理部21的通知,并判別時(shí)隙存 儲部50的下一個(gè)要執(zhí)行的線程,并將時(shí)隙內(nèi)正在執(zhí)行的線程切換為該線程。 此時(shí),對于該線程進(jìn)行線程存儲部60的更新。在線程不能被切換的情況下, 向時(shí)隙狀態(tài)變更部24通知,并變更時(shí)隙的狀態(tài)。并且,在切換線程時(shí),由 前后關(guān)系保持部80進(jìn)行線程的前后關(guān)系的保存和恢復(fù)。
<第二中斷受理部23〉
第二中斷受理部受理由屬于處理器100到處理器120中的、某個(gè)處理 器的發(fā)送發(fā)行部10的第二中斷發(fā)生部14所發(fā)生的中斷。在受理了中斷時(shí), 向時(shí)隙狀態(tài)變更部24通知。
<時(shí)隙狀態(tài)變更部24>
時(shí)隙狀態(tài)變更部24接受來自第一中斷受理部21的通知,并按照在調(diào) 度部12設(shè)定的信息,對時(shí)隙存儲部50進(jìn)行時(shí)隙信息的設(shè)定。在進(jìn)行時(shí)隙 狀態(tài)變更部24的處理時(shí),為了不引起信息的矛盾,而禁止所有的中斷的請 求和根據(jù)定時(shí)的切換請求。
<時(shí)隙切換部25〉
時(shí)隙切換部25在當(dāng)前的時(shí)隙中的線程的執(zhí)行時(shí)間到達(dá)了分配時(shí)間時(shí), 進(jìn)行時(shí)隙的切換。是否到達(dá)了分配時(shí)間要由定時(shí)控制部30發(fā)出的超時(shí)信號 來通知。接受了通知的時(shí)隙切換部25選擇下一個(gè)時(shí)隙信息。此時(shí),根據(jù)選 擇的時(shí)隙信息取得分配時(shí)間,并設(shè)定到定時(shí)控制部30。據(jù)此,開始下一個(gè) 時(shí)隙的分配時(shí)間的計(jì)數(shù)。并且,在再次開始屬于時(shí)隙的線程之前,由前后 關(guān)系保持部80進(jìn)行前后關(guān)系的保存以及恢復(fù)。并且,在時(shí)隙內(nèi)發(fā)送部22 進(jìn)行處理時(shí),發(fā)生時(shí)隙的切換的情況下,優(yōu)先執(zhí)行切換,在時(shí)隙狀態(tài)變更 部24進(jìn)行處理時(shí),中斷時(shí)隙的切換并進(jìn)行處理。 [時(shí)隙存儲部50的構(gòu)成]
時(shí)隙存儲部50對具有由分配時(shí)間進(jìn)行了時(shí)間分配的線程群,存儲用于
生成成為切換基準(zhǔn)的時(shí)隙的時(shí)隙信息。
圖2示出了時(shí)隙存儲部50和線程存儲部60內(nèi)的線程信息的具體例子。 如該圖所示,時(shí)隙存儲部50存儲多個(gè)時(shí)隙信息51、 52、…53。
時(shí)隙信息51與一個(gè)時(shí)隙相對應(yīng),包括時(shí)隙狀態(tài)51a、工作處理器51b、 分配時(shí)間51c、下一個(gè)執(zhí)行線程51d以及就緒隊(duì)列51e。其他的時(shí)隙信息也 一樣。時(shí)隙信息51、 52、…53以每個(gè)處理器構(gòu)成陣列,其順序表示時(shí)隙的 生成順序。
時(shí)隙狀態(tài)51a表示該時(shí)隙為怎樣的狀態(tài)??杀硎緸槿N狀態(tài),即有 效、無效、停止。有效狀態(tài)是成為時(shí)隙切換部25的切換對象的狀態(tài)。在時(shí) 隙信息的生成時(shí)被設(shè)定為有效。無效狀態(tài)是不成為時(shí)隙切換部25的切換對 象的狀態(tài)。停止?fàn)顟B(tài)是等待第一中斷發(fā)生時(shí)隙的狀態(tài),在第一中斷發(fā)生時(shí) 遷移到有效狀態(tài)。
工作處理器51b表示該時(shí)隙屬于哪個(gè)處理器。被分配了的處理器在生 成時(shí)隙信息的同時(shí)被設(shè)定。
分配時(shí)間51c表示該時(shí)隙中所包含的線程能夠執(zhí)行的時(shí)間。在該時(shí)隙 中所包含的線程實(shí)際上執(zhí)行的時(shí)間到達(dá)分配時(shí)間時(shí),被切換到下一個(gè)時(shí)隙。 分配時(shí)間時(shí)隙信息的發(fā)生的同時(shí)被設(shè)定。
下一個(gè)執(zhí)行線程51d在由時(shí)隙內(nèi)發(fā)送部22切換線程時(shí)被參照,在該時(shí) 隙內(nèi)保持下一個(gè)要執(zhí)行的線程的信息。
就緒隊(duì)列51e表示對屬于該時(shí)隙的線程所對應(yīng)的線程信息的指針。就 緒隊(duì)列51e被連接有時(shí)隙內(nèi)能夠執(zhí)行狀態(tài)的多個(gè)線程信息,由調(diào)度部12從 就緒隊(duì)列中選擇要設(shè)定到下一個(gè)執(zhí)行線程51d的候補(bǔ)。 [線程存儲部60的構(gòu)成]
線程存儲部60存儲與被分配到時(shí)隙的線程相對應(yīng)的線程信息61、 62…。線程信息61、 62…分別與一個(gè)線程相對應(yīng),且是用于管理該線程的 信息。
線程信息61包括線程狀態(tài)61a、等待隊(duì)列61b、執(zhí)行時(shí)隙61c、堆 棧指針SP值61d、優(yōu)先級61e以及鏈接地址61f。
線程狀態(tài)61a表示該線程為怎樣的狀態(tài)。可表示的狀態(tài)有四個(gè),即 正在執(zhí)行狀態(tài)、能夠執(zhí)行狀態(tài)、等待狀態(tài)、結(jié)束狀態(tài)。
正在執(zhí)行狀態(tài)表示在時(shí)隙的執(zhí)行時(shí)間內(nèi)該線程的執(zhí)行狀態(tài)。能夠執(zhí)行 狀態(tài)表示的狀態(tài)是,由于在時(shí)隙內(nèi)存在比該線程優(yōu)先級高的線程,因此在 不執(zhí)行這些線程時(shí)作為正在執(zhí)行狀態(tài)而被選擇的狀態(tài)。等待狀態(tài)是該線程 等待對象的條件的狀態(tài),不作為正在執(zhí)行狀態(tài)被選擇,在條件被解除時(shí)遷 移到能夠執(zhí)行狀態(tài)。結(jié)束狀態(tài)不是以發(fā)行了線程的結(jié)束的狀態(tài)再次開始的,
而是表示在線程存儲部60還殘留有線程信息的狀態(tài)。
等待隊(duì)列61b連接有以遷移到該線程結(jié)束狀態(tài)為條件而成為等待狀態(tài) 的多個(gè)線程信息。通過調(diào)度部12該線程從正在執(zhí)行狀態(tài)遷移到結(jié)束狀態(tài)時(shí), 從等待隊(duì)列中選擇能夠遷移到能夠執(zhí)行狀態(tài)的線程的設(shè)定候補(bǔ)。
執(zhí)行時(shí)隙61c作為向該線程所屬的時(shí)隙所對應(yīng)的時(shí)隙信息的指針被保持。
堆棧指針SP值61d保持該線程被切換時(shí)的堆棧指針SP。在由時(shí)隙內(nèi) 發(fā)送部22切換線程時(shí),表示該時(shí)刻的堆棧指針SP的值。
優(yōu)先級61e表示成為決定該線程的時(shí)隙內(nèi)的執(zhí)行順序的指標(biāo)的優(yōu)先級。 在調(diào)度部12,在從該線程所鏈接的就緒隊(duì)列51e中選擇授予執(zhí)行權(quán)的線程 時(shí),將該優(yōu)先級61e作為選擇的指標(biāo)來使用。
鏈接地址61f在該線程作為要素被連接到就緒隊(duì)列或等待隊(duì)列的情況 下,保持向作為就緒隊(duì)列或等待隊(duì)列中的下一個(gè)要素的線程信息的指針。
具體而言,鏈接地址61f在該線程為正在執(zhí)行狀態(tài)以及能夠執(zhí)行狀態(tài) 的情況下,為指示形成就緒隊(duì)列的下一個(gè)要素的指針,在該線程為等待狀 態(tài)的情況下,為指示形成等待隊(duì)列的下一個(gè)要素的指針。 [對象存儲部70的構(gòu)成]
圖3示出了對象存儲部70中所存儲的對象信息71、 72…和線程存儲 部60中所存儲的等待隊(duì)列。
對象信息71包括對象狀態(tài)71a、等待隊(duì)列71b、對象固有信息71c。
對象狀態(tài)71a表示該對象為怎樣的狀態(tài)。狀態(tài)可以表示為無效或有效 兩種。
等待隊(duì)列71b示出等待隊(duì)列的開頭的線程信息,該等待隊(duì)列的開頭信 息表示以該對象為要因而成為等待狀態(tài)的線程。被連接在等待隊(duì)列的地址 信息61'、 62'…形成分別由鏈接地址61f、 62f…順序連接的等待隊(duì)列。在
該對象的固有信息被更新時(shí),由調(diào)度部12從等待隊(duì)列中選擇成為能夠執(zhí)行 的線程的設(shè)定候補(bǔ)。
對象固有信息71c中存儲有對象所需要的信息,因?qū)ο蟮念悇e不同被 存儲的信息也不同。具體的信息將按照對象的類別進(jìn)行詳細(xì)說明。 [詳細(xì)的處理]
以下,作為本發(fā)明的程序控制裝置中的詳細(xì)處理,對線程等待調(diào)度處 理、線程等待解除調(diào)度處理、線程生成處理、線程結(jié)束處理、線程結(jié)束等 待處理、時(shí)隙生成并消除處理進(jìn)行說明。而且,作為對對象的具體適用例 子,X寸mutex、 cond、 flag、 semaphore進(jìn)行說明。
<線程等待調(diào)度處理>
圖4是由API調(diào)用而將線程遷移到等待狀態(tài)的調(diào)度處理的詳細(xì)流程圖。
首先,API處理部11進(jìn)行與API對應(yīng)的處理(SOOl),并調(diào)用等待處理 Wait(S002)。此時(shí)API處理部11將正在執(zhí)行的線程Th的標(biāo)識符和在API 指定的對象Obj的標(biāo)識符傳遞給調(diào)度部12,以作為等待處理Wait的自變 量。在API被指定的對象Obj的標(biāo)識符表示成為API的對象的對象。在此 被指定的對象具體而言有mutex、 cond、 flag、 semaphore等,或也有是 其他的線程的情況。
接著,調(diào)度部12從被傳遞來的線程Th所屬的時(shí)隙的就緒隊(duì)列51e中 除去線程Th的線程信息(SOll),將該線程信息的線程狀態(tài)變更為等待狀態(tài) 之后(S012),將該線程信息登記到對象Obj的對象信息的等待隊(duì)列(S013), 并讀出線程Th的線程信息中所包含的"執(zhí)行時(shí)隙61c"。而且,將讀出的執(zhí) 行時(shí)隙61c (作為時(shí)隙TS)作為自變量,發(fā)出發(fā)送請求(S014)。
作為發(fā)送請求處理,將被提供來的時(shí)隙的就緒隊(duì)列作為起點(diǎn),直到找 到作為能夠執(zhí)行狀態(tài)的線程為止,追尋線程信息的鏈接地址(S021)。設(shè)找 到的線程為T。將線程T登記到時(shí)隙信息的下一個(gè)執(zhí)行線程(S022)。若沒 有找到線程則登記NULL(無效)。并且,從時(shí)隙TS的時(shí)隙信息中讀出"工 作處理器51b"。此"工作處理器51b"表示被分配了時(shí)隙TS的處理器,用于 指定接受第一中斷處理的一方。最后,第一中斷發(fā)生部13對被分配了該時(shí) 隙TS的處理器發(fā)生第一中斷(S023)。此第一中斷包括接受中斷的處理器的 指定和時(shí)隙TS的指定。
由第一中斷發(fā)生部13發(fā)生的第一中斷在被指定的處理器以外的處理器 不被受理,且在被指定的時(shí)隙以外的時(shí)隙也不被受理(S30a、 S30b)。艮P, 第一中斷在被指定的處理器的當(dāng)前的時(shí)隙和被指定的時(shí)隙一致的情況下, 由第一中斷受理部21來受理,并被通知給時(shí)隙內(nèi)發(fā)送部22。時(shí)隙內(nèi)發(fā)送 部22實(shí)際被執(zhí)行是在被指定的時(shí)隙被分配了時(shí)間之時(shí)。在由被指定的處理 器的第一中斷發(fā)生部13指定的時(shí)隙被受理時(shí),第一中斷發(fā)生部13在該處 理器內(nèi)將局部Local中斷通知給時(shí)隙內(nèi)發(fā)送部22。
時(shí)隙內(nèi)發(fā)送部22暫時(shí)將寄存器數(shù)據(jù)保存到堆棧(S031),并將堆棧指針 SP保存到與正在執(zhí)行的線程相對應(yīng)的線程信息的堆棧指針SP值 61d(S032)。
之后,檢查在該時(shí)隙的下一個(gè)執(zhí)行線程是否登記了線程(S033)。若線 程被登記,則取出與該線程對應(yīng)的線程信息的堆棧指針SP值61d,并設(shè)定 到堆桟指針SP(S034)。而且,將該線程的狀態(tài)設(shè)定為正在執(zhí)行狀態(tài)(S035), 并使寄存器數(shù)據(jù)從堆?;謴?fù)(S036)。據(jù)此,在調(diào)度處理結(jié)束后將執(zhí)行移向 該線程。
若線程沒有被登記在下一個(gè)執(zhí)行線程51d,即為NULL (無效)時(shí), 由于時(shí)隙內(nèi)不存在移動執(zhí)行的線程,因此對時(shí)隙狀態(tài)變更部24通知,在時(shí) 隙狀態(tài)變更部24將時(shí)隙設(shè)定為"停止"狀態(tài)(S037)。據(jù)此,該時(shí)隙從時(shí)隙切 換部25的執(zhí)行對象中被排除。
另外,在時(shí)隙狀態(tài)變更部24時(shí)隙全部被設(shè)定為等待狀態(tài)時(shí),也可以將 處理器移向省電模式。此時(shí),只要處理器所具有的時(shí)隙有一個(gè)成為有效狀 態(tài),則該模式被解除,從S033在此開始該時(shí)隙的執(zhí)行。
<線程等待解除處理>
圖5是通過API調(diào)用來解除線程的等待狀態(tài)的調(diào)度處理的詳細(xì)流程圖。 首先,API處理部11進(jìn)行與API對應(yīng)的處理(S041),并調(diào)用等待解除
處理Wakeup。作為給等待處理Wait的自變量,將以API指定的對象傳
遞給調(diào)度部12。
之后,調(diào)度部12從被傳遞來的對象的等待隊(duì)列中取出一個(gè)線程(S051)。 在將該線程信息的線程狀態(tài)變更為能夠執(zhí)行狀態(tài)之后(S052),登記到該線 程信息所屬的時(shí)隙信息的就緒隊(duì)列(S053)。而且,將該線程信息所屬的時(shí)
隙作為自變量,發(fā)出發(fā)送請求(S054)。
由于發(fā)送請求處理與線程等待調(diào)度處理相同,因此省略說明。 <線程生成處理〉
圖6是通過API調(diào)用而對時(shí)隙生成線程的調(diào)度處理的詳細(xì)流程圖。
首先,作為對API的處理將線程信息確保在線程存儲部,并根據(jù)從API 提供來的信息進(jìn)行初始化(S601)。之后,將線程程序的啟動信息設(shè)定到線 程所使用的堆棧中(S602),在線程狀態(tài)被設(shè)定為能夠執(zhí)行狀態(tài)后(S603), 對線程所屬的時(shí)隙調(diào)用調(diào)度部12的發(fā)送請求處理(S604)。據(jù)此,在發(fā)送處 理的寄存器數(shù)據(jù)恢復(fù),線程的程序開始執(zhí)行。
由于發(fā)送請求處理與線程等待調(diào)度處理相同,因此省略說明。
<線程結(jié)束處理以及線程結(jié)束等待處理>
圖7(a)、圖7(b)是線程結(jié)束處理exit以及線程結(jié)束等待處理join的使 用例子的說明圖。該圖(a)、 (b)示出了線程A (父線程)和線程B (子線程) 的處理流程。實(shí)線表示執(zhí)行狀態(tài)或能夠執(zhí)行狀態(tài),虛線表示等待狀態(tài)wait 或結(jié)束狀態(tài)。
并且,create表示線程A (父線程)生成線程B (子線程)的處理(圖 6的線程生成處理)。exit表示線程本身從執(zhí)行狀態(tài)(或能夠執(zhí)行狀態(tài))遷 移到結(jié)束狀態(tài)的線程結(jié)束處理。線程結(jié)束等待處理join是為了等待其他的 線程成為結(jié)束狀態(tài),而線程本身從執(zhí)行狀態(tài)遷移到等待狀態(tài)的處理。
該圖(a)中的線程A通過create生成線程B ,在執(zhí)行了規(guī)定的處理之后, 為了與線程B同步,而通過join從執(zhí)行狀態(tài)遷移到等待狀態(tài)wait。而且, 線程B在通過exit遷移到結(jié)束狀態(tài)時(shí),線程A從等待狀態(tài)wait遷移到執(zhí) 行狀態(tài),線程B結(jié)束。
該圖(b)中的線程A通過create生成線程B,在執(zhí)行了規(guī)定的處理之后, 為了與線程B同步,而對join進(jìn)行API調(diào)用。另一方面,在通過線程A 進(jìn)行join的調(diào)用之前,線程B通過exit遷移到結(jié)束狀態(tài)。此時(shí),通過由線 程A進(jìn)行的join的調(diào)用,從而線程A維持執(zhí)行狀態(tài),線程B結(jié)束。
圖8A是通過API調(diào)用而對時(shí)隙結(jié)束線程的調(diào)度處理(線程結(jié)束處理 exit)的詳細(xì)流程圖。在該圖中,圖7(a)、圖7(b)的線程B對exit進(jìn)行API 調(diào)用。
首先,調(diào)用部12將正在執(zhí)行的線程B設(shè)定為結(jié)束狀態(tài)(S612)。檢查其 他的線程(在此為線程A)是否被登記在該線程的線程狀態(tài)的等待隊(duì)列 (S614)中,只有在線程A被登記時(shí)調(diào)用等待解除處理Wakeup(S615)。通 過此等待狀態(tài)解除處理Wakeup,如圖7(a)所示,線程A從等待狀態(tài)被變 更為執(zhí)行狀態(tài)。而且,對線程B所屬的時(shí)隙調(diào)用調(diào)度部12的發(fā)送請求處理 (S616)。通過此發(fā)送請求處理,從線程存儲部60中刪除線程B的線程信息。
由于發(fā)送請求處理與調(diào)度處理相同,因此省略說明。
<線程結(jié)束等待處理>
圖8B是通過API調(diào)用而對時(shí)隙等待線程的結(jié)束的調(diào)度處理(線程結(jié) 束等待處理join)的詳細(xì)流程圖。在該圖中,圖7(a)、圖7(b)的線程A對 join進(jìn)行API調(diào)用。并且,參數(shù)Th由線程A的子線程即線程B來指定。
首先,調(diào)度部12檢查以API提供的線程B是否為結(jié)束狀態(tài)(S621)。 若該線程B不為結(jié)束狀態(tài),則調(diào)用等待處理Wait,并一直等到線程B結(jié)束 為止(S622)。若線程B為結(jié)束狀態(tài),則從線程存儲部中刪除B的線程信息 (S623)。由于等待處理Wait與線程等待調(diào)度處理相同,因此省略說明。
<時(shí)隙生成、刪除、分配時(shí)間更新處理>
圖9以及圖10A是通過API調(diào)用而進(jìn)行時(shí)隙的生成、刪除以及分配時(shí) 間的更新的調(diào)度處理的詳細(xì)流程圖。
首先,API處理部11作為與API對應(yīng)的處理將從API提供的時(shí)隙的 生成、刪除以及分配時(shí)間的更新中的任一個(gè)信息變換為指令(S051),并作 為控制請求處理,將以API指定的指令傳遞給調(diào)度部12(S052)。
之后,調(diào)度部12將指令設(shè)定到指令隊(duì)列(S061),并檢查該時(shí)隙是否被 正在執(zhí)行的處理器執(zhí)行(S062)。若是正在執(zhí)行的處理器,直接調(diào)用控制處 理(S063)。若是其他的處理器,則在第二中斷發(fā)生部14發(fā)生中斷,且將中 斷通知給該處理器(S064)。
在該處理器由第二中斷受理部23受理中斷,并將控制移到時(shí)隙狀態(tài)變 更部24。
時(shí)隙狀態(tài)變更部24為了避開時(shí)隙信息的矛盾,而指示時(shí)隙切換部25, 在處理過程中不進(jìn)行切換。這是通過指示處理器,使中斷的發(fā)生優(yōu)先于時(shí) 隙的切換而實(shí)現(xiàn)的。并且,寄存器數(shù)據(jù)暫時(shí)保存到堆桟(S071),由指令隊(duì)
列取出指令(S072),通過根據(jù)取出的指令調(diào)用控制處理,從而可以根據(jù)指 令的內(nèi)容來改寫時(shí)隙存儲部50的時(shí)隙信息的內(nèi)容(S073)。
具體而言,判別被提供的指令(S081),并按照指令的類別進(jìn)行時(shí)隙的 狀態(tài)變更(生成、刪除)、分配時(shí)間的設(shè)定(S082、 S083、 S084)。
在控制處理結(jié)束時(shí),保存的寄存器數(shù)據(jù)從堆棧中恢復(fù)(S074),結(jié)束處理。
圖10B是在圖10A中的步驟S082的時(shí)隙生成處理的一個(gè)例子的流程 圖。在該圖中,時(shí)隙狀態(tài)變更部24按照每個(gè)處理器,算出被分配的有效的 所有時(shí)隙的分配時(shí)間的總和(S082a),選擇總和最小的處理器(S082b),并 對該處理器生成新的時(shí)隙(S082c)。在本實(shí)施例中的程序控制裝置,各個(gè)線 程的描述不依賴于處理器,由于可以分配到任意的處理器的任意的時(shí)隙, 因此如圖10B所示,可以使多個(gè)處理器的負(fù)載均等化。
另外,也可以是,在進(jìn)行時(shí)隙的生成時(shí),事先在時(shí)隙狀態(tài)變更部24算 出被設(shè)定在進(jìn)行生成的處理器的時(shí)隙的設(shè)定時(shí)間的總和,在進(jìn)行下一個(gè)時(shí) 隙的生成時(shí),在調(diào)度部12對各個(gè)處理器的時(shí)隙設(shè)定時(shí)間的總和進(jìn)行比較之 后,來決定進(jìn)行時(shí)隙的生成的處理器。例如,可以像圖IOB那樣分散負(fù)載。 相反,也可以是,在全體的處理負(fù)載小的情況下,使負(fù)載傾向于一個(gè)以外 的處理器,并將該一個(gè)處理器的時(shí)隙信息設(shè)為全部無效,從而設(shè)定為省電 模式。
并且,也可以是,在發(fā)生了第二中斷時(shí),重新使專用的時(shí)隙有效。作 為不發(fā)生切換的時(shí)隙,進(jìn)行時(shí)隙狀態(tài)變更部24的處理,從而可以使其他的 時(shí)隙處理不受影響并進(jìn)行處理。
<時(shí)隙切換處理〉
圖11是由定時(shí)控制部30的超時(shí)通知而對被開始的時(shí)隙進(jìn)行切換的調(diào) 度處理的詳細(xì)流程圖。
由定時(shí)控制部30發(fā)出的超時(shí)通知在時(shí)隙切換部25被執(zhí)行。時(shí)隙切換 部25使當(dāng)前的時(shí)隙的前后關(guān)系保存到前后關(guān)系保持部S0(S091),并按照 時(shí)隙存儲部的時(shí)隙信息陣列的順序選擇下一個(gè)時(shí)隙(S092)。并且,從時(shí)隙 信息中取出該時(shí)隙的分配信息,并在定時(shí)控制部30進(jìn)行設(shè)定(S093)。最后, 前后關(guān)系從前后關(guān)系保持部80恢復(fù),并許可中斷(S094)。
通過中斷的許可,第一中斷受理部21指定自己的處理器,且判定指定 當(dāng)前的時(shí)隙的第一中斷是否發(fā)生(S095),在發(fā)生的情況下受理該第一中斷 (S096)。據(jù)此,可以不受理給其他的時(shí)隙的第一中斷,而受理以該時(shí)隙為 接收方的第一中斷。第一中斷發(fā)生部13在受理了第一中斷的情況下,將局 部Local中斷通知給該處理器內(nèi)的時(shí)隙內(nèi)發(fā)送部22。
并且,步驟S095、 S096與圖4的步驟S30a—S30c的處理相同。
并且,由于在步驟S084直到中斷被許可為止,即使發(fā)生第一以及第二 的中斷也不受理,因此可以比時(shí)隙內(nèi)發(fā)送部22優(yōu)先進(jìn)行時(shí)隙切換處理。
<mutex處理>
mutex是兩個(gè)以上的線程競爭一個(gè)資源(變數(shù)或設(shè)備等)并訪問的情 況下進(jìn)行調(diào)停的機(jī)構(gòu),包含管理資源的"鎖定"狀態(tài)以及"鎖定解P余"狀態(tài)的信 息。mntex的操作有鎖定請求操作和鎖定解除操作。該機(jī)構(gòu)被設(shè)置在兩個(gè) 以上的線程的訪問有可能發(fā)生競爭的每個(gè)資源。某線程在mutex的鎖定操 作成功時(shí),mutex成為"鎖定"狀態(tài),即使其他線程進(jìn)行鎖定操作,直到"鎖 定解除"狀態(tài)為止也會發(fā)生等待。據(jù)此,鎖定操作成功的線程可以占有對應(yīng) 的資源。在進(jìn)行鎖定操作的線程進(jìn)行鎖定解除操作時(shí),其他的線程可以進(jìn) 行鎖定操作。在正在執(zhí)行的線程訪問資源的情況下,必需進(jìn)行與該資源對 應(yīng)的mutex的鎖定操作,只有在成功的情況下才可以訪問資源。在失敗的 情況下,即該mutex已經(jīng)成為"鎖定"狀態(tài)的情況下,直到"鎖定解除"狀態(tài) 為止處于等待狀態(tài)。
圖12是對象信息71、 72…在mutex中的構(gòu)成。mutex信息200包括 mutex狀態(tài)201、等待隊(duì)列202、以及鎖定狀態(tài)203。 mutex狀態(tài)201以 及等待隊(duì)列202與對象信息相同,鎖定狀態(tài)203是mutex中的對象固有信 息73。
圖13以及圖14是通過API調(diào)用的mutex的鎖定以及鎖定解除處理 的詳細(xì)流程圖。
鎖定處理MutexLock將由API提供的mutex的鎖定狀態(tài)更新為"鎖 定"狀態(tài),并在更新前檢査是否為"鎖定"狀態(tài)(S201、 S202)。這些處理是不 可分的。若為"鎖定"狀態(tài),則根據(jù)對象mutex調(diào)用等待處理Wait。若為"鎖 定解除"狀態(tài),則成為已經(jīng)確保了 mutex的鎖定。
鎖定解除處理MutexUnlock檢查由API提供的mutex的等待隊(duì)列中 是否登記有線程(S211)。若線程被登記,則根據(jù)對象mutex調(diào)用等待解除 Wakeup(S212)。此時(shí),僅mutex的所有線程被變更,因此"鎖定"狀態(tài)不 變更。若線程沒有被登記,則將該mutex的鎖定狀態(tài)更新為"鎖定解除"狀 態(tài),并解除鎖定(S213)。
<cond處理>
在cond與mutex共同使用的機(jī)構(gòu),在變更一個(gè)資源的狀態(tài)時(shí),對其 他的一個(gè)以上的線程進(jìn)行通知。為了避開資源的競爭需要使mutex和cond 配成對來使用。此機(jī)構(gòu)是按照每個(gè)通知變更的資源而被設(shè)置的。cond的操 作有等待操作和通知操作。
圖15A是對象信息71、 72…的cond中的構(gòu)成。cond信息200包括 cond狀態(tài)201、等待隊(duì)列202。 cond狀態(tài)201以及等待隊(duì)列202與對象 信息相同,cond不具有對象固有信息73。
圖15B是cond的工作說明圖。該圖的左側(cè)表示直到其他的線程更新 為止等待一個(gè)資源的cond等待處理,右側(cè)表示通知資源已被變更的cond 通知處理。被cond通知的線程解除等待狀態(tài),并進(jìn)入下一個(gè)處理。
圖16以及圖17是通過API調(diào)用的cond等待以及等待解除處理的詳 細(xì)流程圖。
cond等待處理CondWait首先進(jìn)行由API提供的mutex的鎖定解除 (S301),并根據(jù)對象cond來調(diào)用等待處理Wait(S302)。當(dāng)從等待狀態(tài)恢 復(fù)時(shí),再次進(jìn)行mutex的鎖定(S303)。
cond通知處理CondSignal檢査由API提供的cond的等待隊(duì)列中, 線程是否被登記(S311)。只有線程被登記時(shí),才根據(jù)對象cond來調(diào)用等待 解除Wakeup(S312)。
<flag處理〉
flag是用于使兩個(gè)線程同步的機(jī)構(gòu),包括管理用于同步的條件和狀態(tài) 的信息。flag的操作有flag等待操作和flag設(shè)定以及復(fù)位操作。
圖18是對象信息71、 72…的flag的構(gòu)成。flag信息400包括flag 狀態(tài)401、等待隊(duì)列402、等待解除模式403、等待解除條件404以及flag 模式405。 flag狀態(tài)401以及等待隊(duì)列402與對象信息相同,等待解除模
式403、等待解除條件404以及flag模式405是flag中的對象固有信息 73。
圖19、圖20以及圖21是通過API調(diào)用的flag等待、設(shè)定、復(fù)位處
理的詳細(xì)流程圖。
flag等待處理FlagWait設(shè)定由API提供的flag的解除模式(S401), 并根據(jù)flag調(diào)用等待處理Wait(S402)。
flag設(shè)定處理FlagSet對由API提供的flag所保持的模式算出由API 提供的模式和邏輯和,并保存到flag模式(S411)。檢查解除條件(S412), 并根據(jù)解除條件是"OR"還是"AND"而下一個(gè)處理不同。若是"AND",只有 flag模式和解除模式一致時(shí)才進(jìn)入下一個(gè)步驟(S413)。若是"OR",只有flag 模式和解除模式的邏輯和不為零時(shí)才進(jìn)入下一個(gè)步驟(S414)。之后,檢查 flag的等待隊(duì)列中線程是否被登記(S415)。只有線程被登記時(shí)才根據(jù)flag 調(diào)用等待解除Wakeup(S416)。
flag復(fù)位處理FlagClear對由API提供的flag所保持的模式算出與由 API提供的模式的"與非",并保存到flag模式(S421)。
< semaphore處理〉
semaphore是在兩個(gè)以上的線程競爭一個(gè)以上的資源(變數(shù)或設(shè)備等) 并訪問時(shí)進(jìn)行調(diào)停的機(jī)構(gòu),包括管理資源的數(shù)的信息。semaphore的操作 有獲得操作和釋放操作。
圖22是對象信息71、 72…的semaphore的構(gòu)成。semaphore信息 500包括semaphore狀態(tài)500a、等待隊(duì)列500b以及semaphore數(shù)500c。 semaphore狀態(tài)500a以及等待隊(duì)列500b與對象信息相同,semaphore 數(shù)500c是semaphore中的對象固有信息73。
圖23以及圖24是通過API調(diào)用的semaphore的資源請求以及釋放 處理的詳細(xì)的流程圖。
semaphore獲得處理SemGet使由API提供的semaphore的數(shù)減去 1,并檢査semaphore的數(shù)是否為一1(S501、 S502)。這些處理的執(zhí)行是 不可分的。若為一l則根據(jù)semaphore調(diào)用等待處理Wait。若不為一1則 是已經(jīng)從semaphore中確保了資源。
semaphore釋放處理SemRelease使由API提供的semaphore的數(shù)
加上1(S5lD,并檢查semaphore的等待隊(duì)列中線程是否被登記(S512)。 只有在線程被登記時(shí),才根據(jù)semaphore調(diào)用等待解除Wakeup(S513)。 并且,根據(jù)這些對象的實(shí)現(xiàn)例子,可以重新實(shí)現(xiàn)針對兩個(gè)以上的線程 的通信同步對象。
本發(fā)明所設(shè)計(jì)的程序控制裝置可以在滿足多個(gè)線程的必要性能的同 時(shí),線程上的程序還可以不依賴于處理器而進(jìn)行描述。
據(jù)此,可以按照功能來分配處理性能,并可以以多個(gè)線程來實(shí)現(xiàn)功能, 由此,可以使用于確保處理性能的程序設(shè)計(jì)變得容易,并可以使程序設(shè)計(jì) 具有柔軟性。
這些可以作為同時(shí)并行且實(shí)時(shí)地進(jìn)行多個(gè)聲音影像處理的設(shè)備或這種 設(shè)備的開發(fā)環(huán)境等。
權(quán)利要求
1. 一種程序控制裝置,對要按照每個(gè)時(shí)隙執(zhí)行的線程進(jìn)行切換,其特征在于,包括∶發(fā)生單元,發(fā)生第一中斷信號,該第一中斷信號以一個(gè)時(shí)隙作為接收方;以及受理單元,在作為所述接收方的時(shí)隙和當(dāng)前的時(shí)隙不一致的情況下,不受理該第一中斷信號,在一致的情況下受理該第一中斷信號。
2. 如權(quán)利要求l所述的程序控制裝置,其特征在于,所述程序控制裝置包括存儲單元,存儲線程信息和時(shí)隙信息,所述線程信息包含被分配了線程的時(shí)隙的標(biāo)識符,所述時(shí)隙信息包含表示對應(yīng)的線程的信息;以及判別單元,根據(jù)所述線程信息以及時(shí)隙信息,來判別成為所述第一中斷信號的接收方的時(shí)隙;所述發(fā)生單元發(fā)生將所述判別單元的判別結(jié)果作為接收方的第一中斷 信號。
3. 如權(quán)利要求2所述的程序控制裝置,其特征在于, 所述程序控制裝置進(jìn)一步包括接受處理部,從以當(dāng)前的時(shí)隙正在執(zhí)行的線程中接受系統(tǒng)調(diào)用;以及 調(diào)度部,根據(jù)所述系統(tǒng)調(diào)用來變更線程的狀態(tài)或時(shí)隙的狀態(tài); 所述發(fā)生單元,在所述線程的狀態(tài)由所述調(diào)度部變更了的情況下,發(fā)生所述第一中斷 信號,所述第一中斷信號包含與該變更相關(guān)聯(lián)的線程的時(shí)隙的指定,在所述時(shí)隙的狀態(tài)由所述調(diào)度部變更了的情況下,發(fā)生第二中斷信號;所述程序控制裝置進(jìn)一步包括第一發(fā)送單元,按照由所述受理單元受理的第一中斷信號,在時(shí)隙內(nèi)進(jìn)行線程的切換;以及第二發(fā)送單元,按照由所述受理單元受理的第二中斷信號,變更所述 時(shí)隙信息。
4. 如權(quán)利要求3所述的程序控制裝置,其特征在于, 所述程序控制裝置進(jìn)一步包括時(shí)隙切換部,按照所述時(shí)隙的分配時(shí)間來切換時(shí)隙;所述時(shí)隙切換部在時(shí)隙的切換期間禁止中斷,在時(shí)隙的切換剛好結(jié)束 時(shí),許可所述受理單元受理中斷。
5. 如權(quán)利要求l所述的程序控制裝置,其特征在于, 所述程序控制裝置被設(shè)置于包括多個(gè)處理器的多處理器; 所述發(fā)生單元發(fā)生所述第一中斷信號,所述第一中斷信號包含處理器的指定和時(shí)隙的指定;所述受理單元,按照每個(gè)處理器來受理所述第一中斷信號,且在與處 理器的指定不一致的處理器不受理所述第一中斷信號。
6. 如權(quán)利要求5所述的程序控制裝置,其特征在于, 所述程序控制裝置進(jìn)一步包括線程存儲單元,按照每個(gè)線程來存儲所述線程信息,所述線程信息包 含線程的狀態(tài)和被分配了線程的時(shí)隙的標(biāo)識符;時(shí)隙信息存儲單元,按照每個(gè)時(shí)隙來存儲所述時(shí)隙信息,所述時(shí)隙信 息包含時(shí)隙的分配時(shí)間、與該時(shí)隙對應(yīng)的線程信息、和被分配了該時(shí)隙的 處理器的標(biāo)識符;接受處理部,被設(shè)置于每個(gè)處理器,從以當(dāng)前的時(shí)隙正在執(zhí)行的線程 中接受系統(tǒng)調(diào)用;以及調(diào)度部,被設(shè)置于每個(gè)處理器,并根據(jù)被接受的所述系統(tǒng)調(diào)用來變更 定義線程的線程信息或定義時(shí)隙的時(shí)隙信息;所述發(fā)生單元包括第一中斷發(fā)生部,被設(shè)置于每個(gè)處理器,在所述線程信息由對應(yīng)的調(diào) 度部變更了的情況下,發(fā)生所述第一中斷信號,所述第一中斷信號包含成 為接收方的處理器的指定和成為接收方的時(shí)隙的指定;以及 第二中斷發(fā)生部,被設(shè)置于每個(gè)處理器,在所述時(shí)隙信息由對應(yīng)的調(diào) 度部變更了的情況下,發(fā)生所述第二中斷信號,所述第二中斷信號包含成 為接收方的處理器的指定。
7. 如權(quán)利要求6所述的程序控制裝置,其特征在于, 所述調(diào)度部根據(jù)所述時(shí)隙標(biāo)識符以及處理器標(biāo)識符,來確定與被變更的線程信息對應(yīng)的處理器以及時(shí)隙;所述第一中斷單元按照由所述調(diào)度部確定的處理器以及時(shí)隙來發(fā)生所 述第一中斷信號。
8. 如權(quán)利要求6所述的程序控制裝置,其特征在于,所述受理單元 在與處理器的指定不一致的處理器,不受理所述第二中斷信號,且在每個(gè) 處理器的確定的時(shí)隙中受理第二中斷信號。
9. 如權(quán)利要求6所述的程序控制裝置,其特征在于, 所述程序控制裝置進(jìn)一步包括時(shí)隙切換部,被設(shè)置于每個(gè)處理器,并按照所述時(shí)隙的分配時(shí)間來切 換時(shí)隙;第一發(fā)送單元,被設(shè)置于每個(gè)處理器,并按照由所述受理單元受理的 第一中斷信號,在時(shí)隙內(nèi)進(jìn)行線程的切換;以及第二發(fā)送單元,被設(shè)置于每個(gè)處理器,并按照由所述受理單元受理的 第二中斷信號,變更所述時(shí)隙信息。
10.如權(quán)利要求9所述的程序控制裝置,其特征在于,所述時(shí)隙切 換部在時(shí)隙的切換期間禁止中斷,在時(shí)隙的切換剛好結(jié)束時(shí),許可所述受 理單元受理中斷。
11.如權(quán)利要求9所述的程序控制裝置,其特征在于,所述第二發(fā) 送單元按照第二中斷信號,進(jìn)行時(shí)隙信息的追加或刪除。
12.如權(quán)利要求9所述的程序控制裝置,其特征在于,所述第二發(fā) 送單元按照每個(gè)處理器算出時(shí)隙的分配時(shí)間的總和,并根據(jù)每個(gè)處理器的 總和來選擇與新追加的時(shí)隙信息對應(yīng)的處理器。
13.如權(quán)利要求9所述的程序控制裝置,其特征在于,所述第二發(fā) 送單元按照基于表示分配時(shí)間的變更的所述系統(tǒng)調(diào)用的第二中斷信號,變 更時(shí)隙信息中的分配時(shí)間。
14.如權(quán)利要求9所述的程序控制裝置,其特征在于, 所述線程信息還包含線程的優(yōu)先級;所述第一發(fā)送單元按照所述第一中斷信號,將正在執(zhí)行的線程切換到 與該時(shí)隙對應(yīng)的一個(gè)或多個(gè)線程中的優(yōu)先級最高的線程。
15.如權(quán)利要求9所述的程序控制裝置,其特征在于,所述時(shí)隙切 換部在與下一個(gè)時(shí)隙對應(yīng)的時(shí)隙信息為無效的情況下,進(jìn)一步按照下一個(gè) 時(shí)隙的時(shí)隙信息來切換時(shí)隙。
16.如權(quán)利要求9所述的程序控制裝置,其特征在于,所述第一發(fā) 送單元在與該時(shí)隙對應(yīng)的線程中不存在能夠執(zhí)行的線程的情況下,直到能 夠執(zhí)行的線程被設(shè)定為止,使對應(yīng)的時(shí)隙信息無效。
17.如權(quán)利要求9所述的程序控制裝置,其特征在于,所述時(shí)隙切 換部在對應(yīng)的處理器的所有時(shí)隙信息為無效的情況下,將該處理器變更為 節(jié)電模式。
18.如權(quán)利要求9所述的程序控制裝置,其特征在于, 所述程序控制裝置進(jìn)一步包括對象存儲單元,按照每個(gè)線程間通信時(shí)所使用的對象,存儲表示該對象是第一狀態(tài)還是第二狀態(tài)的對象信息;所述接受處理部按照所述系統(tǒng)調(diào)用,將所述對象信息從第一狀態(tài)變更為第二狀態(tài),或從第二狀態(tài)變更為第一狀態(tài); 所述調(diào)度部,在正在執(zhí)行的線程將要訪問所述第一狀態(tài)的對象時(shí),將 該線程從能夠執(zhí)行狀態(tài)變更為等待狀態(tài),在該對象被變更為所述第二狀態(tài)時(shí),選擇一個(gè)或多個(gè)等待狀態(tài)的線程并變更為能夠執(zhí)行狀態(tài); 所述線程切換單元從切換候補(bǔ)中除去處于等待狀態(tài)的線程。
19.如權(quán)利要求l 8所述的程序控制裝置,其特征在于, 所述對象與一個(gè)資源對應(yīng),是用于調(diào)解多個(gè)線程向該資源訪問的競爭的對象;所述接受處理部,按照系統(tǒng)調(diào)用將獲得了所述資源的使用權(quán)的情況下 所對應(yīng)的對象信息變更為第一狀態(tài),按照系統(tǒng)調(diào)用將釋放了資源的使用權(quán) 的情況下所對應(yīng)的對象信息變更為第二狀態(tài);與所述接受處理部對應(yīng)的第一中斷發(fā)生部,在所述對象信息的狀態(tài)被 變更的情況下,發(fā)生將所述對象信息作為參數(shù)的所述第一中斷信號;所述第一發(fā)送單元進(jìn)一步按照將所述對象信息作為參數(shù)的所述第一中 斷信號,進(jìn)行線程的切換。
20.如權(quán)利要求l 8所述的程序控制裝置,其特征在于, 所述對象與一個(gè)資源對應(yīng),是用于在變更了一個(gè)資源狀態(tài)時(shí)對其他的線程進(jìn)行通知的對象;所述接受處理部,按照所述系統(tǒng)調(diào)用將發(fā)出等待所述資源的變更的指 示的情況下所對應(yīng)的對象信息變更為第一狀態(tài),按照系統(tǒng)調(diào)用將發(fā)出由所 述線程通知資源的變更的指示的情況下所對應(yīng)的對象信息變更為第二狀 態(tài)。
21.如權(quán)利要求l 8所述的程序控制裝置,其特征在于, 所述對象是為了使兩個(gè)線程同步,而管理用于同步的條件和狀態(tài)的對象;所述接受處理部,按照所述系統(tǒng)調(diào)用將發(fā)出直到變量的條件成立為止 的等待指示時(shí)所對應(yīng)的對象信息變更為第一狀態(tài),按照系統(tǒng)調(diào)用將發(fā)出表 示變量的條件成立的指示時(shí)所對應(yīng)的對象信息變更為第二狀態(tài)。
22.如權(quán)利要求l 8所述的程序控制裝置,其特征在于, 所述對象是在兩個(gè)以上的線程競爭并訪問一個(gè)以上的資源的情況下進(jìn) 行調(diào)解的對象;與所述對象相對應(yīng)的對象信息包含關(guān)于可由任一個(gè)線程訪問的資源的 資源數(shù);所述接受處理部,根據(jù)所述系統(tǒng)調(diào)用對資源的獲得被指示的情況下的 所述資源數(shù)進(jìn)行減法運(yùn)算,并在資源數(shù)到達(dá)規(guī)定值時(shí),將對應(yīng)的對象信息 變更為第一狀態(tài),按照所述系統(tǒng)調(diào)用對資源的釋放被指示的情況下的所述 資源數(shù)進(jìn)行加法運(yùn)算,并將所述對象信息變更為第二狀態(tài)。
23.如權(quán)利要求9所述的程序控制裝置,其特征在于, 所述調(diào)度部進(jìn)行以下工作按照包含第一線程的結(jié)束指示的系統(tǒng)調(diào)用,將所述第一線程的狀態(tài)變 更為結(jié)束狀態(tài);在所述第一線程的狀態(tài)被變更為結(jié)束狀態(tài)時(shí),選擇一個(gè)或多個(gè)等待狀 態(tài)的線程,并變更為能夠執(zhí)行狀態(tài);按照包含第二線程的結(jié)束等待指示的系統(tǒng)調(diào)用,將所述第二線程的狀 態(tài)變更為等待狀態(tài);所述第一發(fā)送單元從切換候補(bǔ)中除去處于等待狀態(tài)的線程。
24 . —種操作系統(tǒng),對要按照每個(gè)時(shí)隙執(zhí)行的線程進(jìn)行切換,其特 征在于,包括發(fā)生單元,發(fā)生第一中斷信號,該第一中斷信號以一個(gè)時(shí)隙作為接收 方;以及受理單元,在作為所述接收方的時(shí)隙和當(dāng)前的時(shí)隙不一致的情況下, 不受理該第一中斷信號,在一致的情況下受理該第一中斷信號。
25. —種程序控制方法,對要按照每個(gè)時(shí)隙執(zhí)行的線程進(jìn)行切換, 其特征在于, 發(fā)生第一中斷信號,該第一中斷信號以一個(gè)時(shí)隙作為接收方; 判定成為所述接收方的時(shí)隙和當(dāng)前的時(shí)隙是否一致, 在判定為不一致的情況下不受理該第一中斷信號,在判定為一致的情 況下受理該第一中斷信號。
26 . —種計(jì)算機(jī)可讀取的記錄介質(zhì),記錄對要按照每個(gè)時(shí)隙執(zhí)行的 線程進(jìn)行切換的程序,記錄使計(jì)算機(jī)實(shí)現(xiàn)以下單元的所述程序,這些單元 包括發(fā)生單元,發(fā)生第一中斷信號,該第一中斷信號以一個(gè)時(shí)隙作為接收 方;以及受理單元,在作為所述接收方的時(shí)隙和當(dāng)前的時(shí)隙不一致的情況下, 不受理該第一中斷信號,在一致的情況下受理該第一中斷信號。
全文摘要
本發(fā)明的程序控制裝置對要按照每個(gè)時(shí)隙執(zhí)行的線程進(jìn)行切換,其中包括第一中斷發(fā)生部(13),發(fā)生第一中斷信號,該第一中斷信號以一個(gè)時(shí)隙作為接收方;以及第一中斷處理受理部(21),在作為所述接收方的時(shí)隙和當(dāng)前的時(shí)隙不一致的情況下,不受理該第一中斷信號,在一致的情況下受理該第一中斷信號。
文檔編號G06F9/48GK101382911SQ20081021486
公開日2009年3月11日 申請日期2008年9月3日 優(yōu)先權(quán)日2007年9月3日
發(fā)明者林邦彥 申請人:松下電器產(chǎn)業(yè)株式會社