CN101382911A - 程序控制装置 - Google Patents

程序控制装置 Download PDF

Info

Publication number
CN101382911A
CN101382911A CNA2008102148633A CN200810214863A CN101382911A CN 101382911 A CN101382911 A CN 101382911A CN A2008102148633 A CNA2008102148633 A CN A2008102148633A CN 200810214863 A CN200810214863 A CN 200810214863A CN 101382911 A CN101382911 A CN 101382911A
Authority
CN
China
Prior art keywords
thread
time slot
look
information
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008102148633A
Other languages
English (en)
Other versions
CN101382911B (zh
Inventor
林邦彦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Socionext Inc
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN101382911A publication Critical patent/CN101382911A/zh
Application granted granted Critical
Publication of CN101382911B publication Critical patent/CN101382911B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

本发明的程序控制装置对要按照每个时隙执行的线程进行切换,其中包括:第一中断发生部(13),发生第一中断信号,该第一中断信号以一个时隙作为接收方;以及第一中断处理受理部(21),在作为所述接收方的时隙和当前的时隙不一致的情况下,不受理该第一中断信号,在一致的情况下受理该第一中断信号。

Description

程序控制装置
技术领域
本发明涉及切换按每个时隙(timeslot)应该执行的线程的程序控制装置,即操作系统(Operating System:OS)。
背景技术
OS的主要功能是硬件管理、线程管理、数据管理以及输入输出管理。其中,线程管理用于管理线程的执行顺序,是用于使CPU、存储器、输入输出装置等高效率地工作的重要功能。
在此,“线程”是对程序的启动、执行、结束等一系列流程进行统一管理的控制单位。
在操作系统管理下工作的程序以线程来管理,与程序执行有关的OS的操作均以线程为单位被执行。
决定线程的执行顺序的算法之一是循环调度。循环调度的方法是,将某执行时间分配给作为控制单位的线程,在被分配的时间之内,处理器的执行权被提供给线程,在被分配的时间过去后,将执行权移向其他的线程。据此,所有的线程被平等且以决定的时间被分配了执行权。
在媒体处理以处理器来执行的实时系统中,需要同时执行多个编码、解码、多路复用处理等,为了平等地分配执行权,而将实现媒体处理的各个功能分配给线程,并通过将执行时间分配给每个功能,从而循环调度可以适用。
但是,循环调度的问题在于,一旦线程失去执行权,到下一个执行权被分配要在一个周期经过后,因此,在实时系统中存在应答性的问题。虽然可以通过将周期缩短设定来改善应答性,但是周期越短,切换执行权的处理中的系统开销就越显著。为了解消切换执行权的处理中的系统开销,公开的处理器是在切换执行权时,以硬件来执行前后关系的保存和恢复(专利文献1)。
而且,以多处理器构成来实现上述以往技术的情况下,还存在将线程分配给哪个处理器的问题。
在对称多处理(Symmetrical Multi Processing∶SMP)结构中,为了使系统负载分散到多个处理器,由于在调度时动态地将线程分配到处理器,因此,按每个线程分配执行时间是困难的。
因此,在按每个线程分配处理器的情况下,也必需要决定固定的处理器。在非专利文献1中公开了实时OS,其决定按照每个线程而分配的处理器,并按照每个处理器进行优先级调度。
专利文献1 日本 特许第3813930号公报
非专利文献1 信息处理学会杂志“機能分散マルチプロセッサ向けのリアルタイムO S(面向功能分散多处理器的实时OS)Vol.47,No.1,2006.
然而,根据以上以往的技术,随着线程数的增加,以所有时隙的合计时间,即一周期来切换的次数也增加,同时管理前后关系的区域也增加,因此,按照每个线程确保必要性能是困难的。
并且,在多处理器结构中,各个线程被直接分配了某个处理器是因为线程是依赖于处理器的描述,在多处理器的结构被变更时线程的描述也必需要变更,因此出现的问题是,在线程设计上缺乏适应性。
发明内容
于是,为了解决上述的问题,本发明的第一个目的是提供一种能够满足多个线程的必要性能的程序控制装置。而且,第二个目的是提供一种能够确保程序设计的适应性的程序控制装置。
为了达到上述的目的,本发明的程序控制装置,对要按照每个时隙执行的线程进行切换,其特征在于,包括∶发生单元,发生第一中断信号,该第一中断信号以一个时隙作为接收方;以及受理单元,在作为所述接收方的时隙和当前的时隙不一致的情况下,不受理该第一中断信号,在一致的情况下受理该第一中断信号。
根据此构成,可以防止在不是接收方的时隙使不必要的中断处理(中断处理程序)启动。也就是说,将执行线程的时隙作为一个虚拟的处理器来考虑,因此根据上述构成,由于在不是接收方的虚拟处理器第一中断信号不被受理,所以可以防止因第一中断信号造成的不是接收方的虚拟处理器的性能下降。据此,可以确保各线程的必要性能。
在此,也可以是,所述程序控制装置包括∶存储单元,存储线程信息和时隙信息,所述线程信息包含被分配了线程的时隙的标识符,所述时隙信息包含表示对应的线程的信息;以及判别单元,根据所述线程信息以及时隙信息,来判别成为所述第一中断信号的接收方的时隙;所述发生单元发生将所述判别单元的判别结果作为接收方的第一中断信号。
根据此构成,由于可以根据线程信息以及时隙信息来决定第一中断信号的接收方,因此可以不需要在各个线程的程序设计中的执行线程的处理器的描述以及线程间通信中的接受通信方的线程的描述,所以可以确保程序设计的灵活性。
在此,也可以是,所述程序控制装置进一步包括∶接受处理部,从以当前的时隙正在执行的线程中接受系统调用;以及调度部,根据所述系统调用来变更线程的状态或时隙的状态;所述发生单元,在所述线程的状态由所述调度部变更了的情况下,发生所述第一中断信号,所述第一中断信号包含与该变更相关联的线程的时隙的指定,在所述时隙的状态由所述调度部变更了的情况下,发生第二中断信号;所述程序控制装置进一步包括∶第一发送单元,按照由所述受理单元受理的第一中断信号,在时隙内进行线程的切换;以及第二发送单元,按照由所述受理单元受理的第二中断信号,变更所述时隙信息。
根据此构成,可以根据来自各个线程的系统调用,例如得知作为接受通信方的线程所属的时隙的处理器,并利用第一中断信号,针对与作为接受通信方的线程相符的时隙,驱动第一发送单元。据此,可以抑制因线程间通信而造成的性能下降。
在此,也可以是,所述程序控制装置进一步包括时隙切换部,按照所述时隙的分配时间来切换时隙;所述时隙切换部在时隙的切换期间禁止中断,在时隙的切换刚好结束时,许可所述受理单元受理中断。
根据此构成,时隙的切换可以优先于第一中断信号,即可以优先于时隙内的执行而被执行,因此被分配到时隙的时间不会被浪费。
在此,也可以是,所述程序控制装置被设置于包括多个处理器的多处理器;所述发生单元发生所述第一中断信号,所述第一中断信号包含处理器的指定和时隙的指定;所述受理单元,按照每个处理器来受理所述第一中断信号,且在与处理器的指定不一致的处理器不受理所述第一中断信号。
根据此构成,可以防止在不是第一中断信号的接收方的处理器使不必要的中断处理(中断处理程序)启动,并可以确保不是接收方的处理器中的每个时隙的线程的处理性能。
在此,也可以是,所述程序控制装置进一步包括∶线程存储单元,按照每个线程来存储所述线程信息,所述线程信息包含线程的状态和被分配了线程的时隙的标识符;时隙信息存储单元,按照每个时隙来存储所述时隙信息,所述时隙信息包含时隙的分配时间、与该时隙对应的线程信息、和被分配了该时隙的处理器的标识符;接受处理部,被设置于每个处理器,从以当前的时隙正在执行的线程中接受系统调用;以及调度部,被设置于每个处理器,并根据被接受的所述系统调用来变更定义线程的线程信息或定义时隙的时隙信息;所述发生单元,第一中断发生部,被设置于每个处理器,在所述线程信息由对应的调度部变更了的情况下,发生所述第一中断信号,所述第一中断信号包含成为接收方的处理器的指定和成为接收方的时隙的指定;以及第二中断发生部,被设置于每个处理器,在所述时隙信息由对应的调度部变更了的情况下,发生所述第二中断信号,所述第二中断信号包含成为接收方的处理器的指定。
根据此构成,由于线程信息以及时隙信息包含了被分配到线程的时隙以及处理器的对应关系,因此在程序控制装置,可以动态地将线程分配到任意的时隙以及任意的处理器。据此,在各个线程的程序设计中可以不需要执行线程的处理器的描述,从而可以确保程序设计的灵活性。
在此,也可以是,所述调度部根据所述时隙标识符以及处理器标识符,来确定与被变更的线程信息对应的处理器以及时隙;所述第一中断单元按照由所述调度部确定的处理器以及时隙来发生所述第一中断信号。
在此,也可以是,所述受理单元在与处理器的指定不一致的处理器,不受理所述第二中断信号,且在每个处理器的确定的时隙中受理第二中断信号。
在此,也可以是,所述程序控制装置进一步包括∶时隙切换部,被设置于每个处理器,并按照所述时隙的分配时间来切换时隙;第一发送单元,被设置于每个处理器,并按照由所述受理单元受理的第一中断信号,在时隙内进行线程的切换;以及第二发送单元,被设置于每个处理器,并按照由所述受理单元受理的第二中断信号,变更所述时隙信息。
在此,也可以是,所述时隙切换部在时隙的切换期间禁止中断,在时隙的切换刚好结束时,许可所述受理单元受理中断。
根据此构成,由第一发送单元进行的线程切换可以在被分配到时隙的时间内进行,例如,从被分配到时隙的多个线程中选择执行的线程并开始执行的处理,可以在被分配到时隙的时间内进行。并且,由第二发送单元进行的时隙信息的变更可以优先于时隙内的线程切换而被执行,因此被分配到时隙的时间不会被浪费。据此,可以确保时隙内的线程的必要性能。
在此,也可以是,所述第二发送单元按照第二中断信号,进行时隙信息的追加或删除。
在此,也可以是,所述第二发送单元按照每个处理器算出时隙的分配时间的总和,并根据每个处理器的总和来选择与新追加的时隙信息对应的处理器。
在此,也可以是,所述第二发送单元按照基于表示分配时间的变更的所述系统调用的第二中断信号,变更时隙信息中的分配时间。
根据此构成,由于不需要由线程内的程序描述进行的处理器的指定,因此可以将新的时隙分配到任意的处理器,从而可以灵活地、动态地分配各个处理器的处理性能,并可以灵活地设定多处理器全体的处理性能。
在此,也可以是,所述线程信息还包含线程的优先级;所述第一发送单元按照所述第一中断信号,将正在执行的线程切换到与该时隙对应的一个或多个线程中的优先级最高的线程。
由于在时隙信息以及线程信息中动态地记录了时隙被分配到了哪个处理器,因此为了线程间的同步或资源的排斥控制等,在进行线程间通信时,调度部可以确定接受通信方的线程所属的时隙以及处理器。据此,线程上的线程间通信所必需的信息只要是表示接受通信方的线程的说明符和表示线程间通信对象的说明符即可。因此,可以不必知道各个线程属于哪个处理器,以及属于哪个时隙,即使在处理器或时隙的构成被变更的情况下,线程上的程序也无需变更。据此,可以在不对程序产生影响的情况下灵活地变更系统的构成。
另外,本发明不仅可以作为具有这些特征性单元的程序控制装置来实现,而且可以作为将程序控制装置中所包含的特征性单元作为步骤的程序控制方法来实现,并且还可以作为将程序控制装置中所包含的特征性单元作为使计算机发挥功能的操作系统来实现。并且,不言而喻,这些操作系统可以通过CD—ROM(Compact Disc-Read Only Memory)等记录介质或因特网等通信介质来流通。
通过本发明,可以按每个线程来保证一定的处理性能,同时还可以减轻伴随系统的构成变更而带来的程序变更的负担。
附图说明
图1是本发明的实施例中程序控制装置的主要构成部的方框图。
图2示出了时隙存储部内的时隙信息和线程存储部内的线程信息的具体例子。
图3示出了对象存储部内的对象信息和线程存储部中所存储的等待队列。
图4是线程等待处理的详细流程图。
图5是线程等待处理的详细流程图。
图6是线程生成处理(ThreadCreate)的详细流程图。
图7(a)是线程结束处理和线程结束等待处理的说明图。
图7(b)是线程结束处理和线程结束等待处理的说明图。
图8A是线程结束处理(ThreadExit)的详细流程图。
图8B是线程结束等待处理(ThreadJoin)的详细流程图。
图9是时隙控制处理的详细流程图。
图10A是时隙控制处理内的指令处理的详细流程图。
图10B是时隙生成处理的一个例子的流程图。
图11是时隙切换处理的详细流程图。
图12示出了对象存储部内的mutex信息的具体例子。
图13是mutex锁定处理(MutexLock)的详细流程图。
图14是mutex锁定解除处理(MutexUnlock)的详细流程图。
图15A示出了对象存储部内的cond信息的具体例子。
图15B是cond的工作说明图。
图16是cond等待处理(CondWait)的详细流程图。
图17是cond通知处理(CondSignal)的详细流程图。
图18示出了对象存储部内的flag信息的具体例子。
图19示出了flag等待处理(FlagWait)的详细流程图。
图20示出了flag设定处理(FlagSet)的详细流程图。
图21示出了flag复位处理(FlagClear)的详细流程图。
图22示出了对象存储部内的semaphore信息的具体例子。
图23是semaphore获得处理(SemGet)的详细流程图。
图24是semaphore释放处理(SemRelease)的详细流程图。
符号说明
10      发送发行部
11      应用编程接口(API)处理部
12      调度部
13      第一中断发生部
14      第二中断发生部
15      应用编程接口(API)结束处理部
20      发送处理部
21      第一中断受理部
22      时隙内发送部
23      第二中断受理部
24      时隙状态变更部
25      时隙切换部
30      定时控制部
40      执行控制部
50      时隙存储部
51、52、53  时隙信息
60      线程存储部
61、62、63、64、65  线程信息
70      对象存储部
71、72  对象信息
80      前后关系保持部
100、110、120       处理器
200     mutex信息
300     cond信息
400     flag信息
500     semaphore信息
具体实施方式
[全体构成]
图1是本发明的实施例中按照时隙切换应该执行的线程的程序控制装置的主要构成部的方框图。该图中示意地示出了通过执行进行线程切换的软件,而实现的作为OS的一部分功能的处理器的功能。
关于处理器的硬件的构成,在单处理器的情况下一般的结构就可以。多处理器的情况下为一般的对称多处理结构,每个处理器核心与可存取的存储器连接,每个处理器核心中断其他的处理器核心,并启动中断处理程序。
此程序控制装置分别在一个或多个处理器内处理具有分配时间指定的多个线程群,以及确保并执行各个线程群的必要的性能。
在此程序控制装置中,各个处理器向所有处理器发生以一个时隙为接收方的第一中断信号,在被视为所述接收方的时隙与当前的时隙不一致的情况下,不受理该第一中断信号,在一致的情况下,受理该第一中断信号。
据此,在不是接收方的时隙就可以防止不需要的中断处理(中断处理程序等)的启动。也就是说,执行线程的时隙以一个虚拟的处理器来考虑,通过以上的构成,在不是接收方的虚拟处理器由于不受理第一中断信号,因此,通过第一中断信号可以防止不是接收方的虚拟处理器的性能的降低。据此,可以确保各个线程的必要性能。
而且,程序控制装置包括存储信息的存储部,被存储的信息包括∶包含被分配了线程的时隙的标识符的线程信息,和包含表示对应的线程的信息的时隙信息,根据所述线程信息以及时隙信息来决定成为所述第一中断信号的接收方的时隙,并由发生单元发生以被决定的时隙为接收方的第一中断信号。
据此,由于第一中断信号的接收方可以根据线程信息以及时隙信息来决定,因此,在各个线程的程序设计中,可以不需要执行线程的处理器的描述以及在线程间通信时通信对象线程的描述,从而可以确保程序设计的适应性。
如该图所示,程序控制装置具有多个处理器,即处理器100、110、…120,且各个处理器分别包括∶发送发行部10、发送处理部20、定时控制部30、执行控制部40、时隙存储部50以及前后关系保持部80,另外,程序控制装置还包括所有的处理器共有的线程存储部60和对象存储部70。
发送发行部10进行从线程上的程序中调用的应用程序接口(API)的处理,并根据需要向发送处理部20输出中断信号。
发送处理部20受理来自发送发行部10的中断信号,变更时隙以及线程的信息。并且,在预先规定的周期内进行至少选择一次时隙的循环调度。
定时控制部30在每次由发送处理部20设定中断时间时,就开始时间计数,在达到该中断时间时,输出超时信号。此超时信号是为了通知时隙的切换定时而被通知到发送处理部20的。
执行控制部40执行由发送处理部20选择的线程。执行控制部40相当于执行线程的CPU等硬件。
时隙存储部50存储有关时隙的信息。线程存储部60存储有关线程的信息。
对象存储部70存储有关线程在与其他的线程进行通信时所使用的对象的信息。
前后关系保持部80在正在执行的线程中止并再次开始其他的线程的执行时,保存中止的线程的前后关系,为了恢复再次开始的线程的前后关系而保持前后关系。前后关系中包含有处理器的寄存器信息和高速缓存信息等。
[发送发行部10的构成]
发送发行部10包括∶应用程序接口(API)处理部11、调度部12、第一中断发生部13、第二中断发生部14、以及API结束处理部15。
<API处理部11>
API处理部11受理由线程执行的程序发行的API调用,并按照API进行处理。API与对象一起被提供,进行对应的对象信息存储部70的操作。当操作的结果为被判断为需要调度的情况下,向调度部12发出通知。
<调度部12>
调度部12接受来自API处理部11的通知,更新时隙存储部50、线程存储部60、对象存储部70的信息。更新的结果是,在更新了被分配到某时隙的线程的信息的情况下,向第一中断发生部13发出通知,在更新了时隙的信息的情况下,分别向第二中断发生部14发出通知。
<第一中断发生部13>
第一中断发生部13接受来自调度部12的通知,对被分配有更新了信息的线程的时隙的处理器进行中断。中断由该处理器的发送处理部20的第一中断受理部21受理。
<第二中断发生部14>
第二中断发生部14接受来自调度部12的通知,对更新了信息的时隙的处理器进行中断。中断由该处理器的发送处理部20的第二中断受理部23受理。
<API结束处理部15>
在第一中断发生部13或第二中断发生部14进行了中断后,API结束处理部15进行API调用的后处理。具体而言,进行将针对API调用的返回值返回到程序的处理。
[发送处理部20的构成]
发送处理部20包括∶第一中断受理部21、时隙内发送部22、第二中断受理部23、时隙状态变更部24以及时隙切换部25。时隙内发送部22相当于权利要求中的第一发送单元,时隙状态变更部24相当于权利要求中的第二发送单元。
<第一中断受理部21>
第一中断受理部21受理由属于处理器100到处理器120中的、某个处理器的发送发行部10的第一中断发生部13所发生的中断。在受理了中断时,向时隙内发送部22通知。
<时隙内发送部22>
时隙内发送部22接受来自第一中断受理部21的通知,并判别时隙存储部50的下一个要执行的线程,并将时隙内正在执行的线程切换为该线程。此时,对于该线程进行线程存储部60的更新。在线程不能被切换的情况下,向时隙状态变更部24通知,并变更时隙的状态。并且,在切换线程时,由前后关系保持部80进行线程的前后关系的保存和恢复。
<第二中断受理部23>
第二中断受理部受理由属于处理器100到处理器120中的、某个处理器的发送发行部10的第二中断发生部14所发生的中断。在受理了中断时,向时隙状态变更部24通知。
<时隙状态变更部24>
时隙状态变更部24接受来自第一中断受理部21的通知,并按照在调度部12设定的信息,对时隙存储部50进行时隙信息的设定。在进行时隙状态变更部24的处理时,为了不引起信息的矛盾,而禁止所有的中断的请求和根据定时的切换请求。
<时隙切换部25>
时隙切换部25在当前的时隙中的线程的执行时间到达了分配时间时,进行时隙的切换。是否到达了分配时间要由定时控制部30发出的超时信号来通知。接受了通知的时隙切换部25选择下一个时隙信息。此时,根据选择的时隙信息取得分配时间,并设定到定时控制部30。据此,开始下一个时隙的分配时间的计数。并且,在再次开始属于时隙的线程之前,由前后关系保持部80进行前后关系的保存以及恢复。并且,在时隙内发送部22进行处理时,发生时隙的切换的情况下,优先执行切换,在时隙状态变更部24进行处理时,中断时隙的切换并进行处理。
[时隙存储部50的构成]
时隙存储部50对具有由分配时间进行了时间分配的线程群,存储用于生成成为切换基准的时隙的时隙信息。
图2示出了时隙存储部50和线程存储部60内的线程信息的具体例子。如该图所示,时隙存储部50存储多个时隙信息51、52、…53。
时隙信息51与一个时隙相对应,包括时隙状态51a、工作处理器51b、分配时间51c、下一个执行线程51d以及就绪队列51e。其他的时隙信息也一样。时隙信息51、52、…53以每个处理器构成阵列,其顺序表示时隙的生成顺序。
时隙状态51a表示该时隙为怎样的状态。可表示为三种状态,即∶有效、无效、停止。有效状态是成为时隙切换部25的切换对象的状态。在时隙信息的生成时被设定为有效。无效状态是不成为时隙切换部25的切换对象的状态。停止状态是等待第一中断发生时隙的状态,在第一中断发生时迁移到有效状态。
工作处理器51b表示该时隙属于哪个处理器。被分配了的处理器在生成时隙信息的同时被设定。
分配时间51c表示该时隙中所包含的线程能够执行的时间。在该时隙中所包含的线程实际上执行的时间到达分配时间时,被切换到下一个时隙。分配时间时隙信息的发生的同时被设定。
下一个执行线程51d在由时隙内发送部22切换线程时被参照,在该时隙内保持下一个要执行的线程的信息。
就绪队列51e表示对属于该时隙的线程所对应的线程信息的指针。就绪队列51e被连接有时隙内能够执行状态的多个线程信息,由调度部12从就绪队列中选择要设定到下一个执行线程51d的候补。
[线程存储部60的构成]
线程存储部60存储与被分配到时隙的线程相对应的线程信息61、62…。线程信息61、62…分别与一个线程相对应,且是用于管理该线程的信息。
线程信息61包括∶线程状态61a、等待队列61b、执行时隙61c、堆栈指针SP值61d、优先级61e以及链接地址61f。
线程状态61a表示该线程为怎样的状态。可表示的状态有四个,即∶正在执行状态、能够执行状态、等待状态、结束状态。
正在执行状态表示在时隙的执行时间内该线程的执行状态。能够执行状态表示的状态是,由于在时隙内存在比该线程优先级高的线程,因此在不执行这些线程时作为正在执行状态而被选择的状态。等待状态是该线程等待对象的条件的状态,不作为正在执行状态被选择,在条件被解除时迁移到能够执行状态。结束状态不是以发行了线程的结束的状态再次开始的,而是表示在线程存储部60还残留有线程信息的状态。
等待队列61b连接有以迁移到该线程结束状态为条件而成为等待状态的多个线程信息。通过调度部12该线程从正在执行状态迁移到结束状态时,从等待队列中选择能够迁移到能够执行状态的线程的设定候补。
执行时隙61c作为向该线程所属的时隙所对应的时隙信息的指针被保持。
堆栈指针SP值61d保持该线程被切换时的堆栈指针SP。在由时隙内发送部22切换线程时,表示该时刻的堆栈指针SP的值。
优先级61e表示成为决定该线程的时隙内的执行顺序的指标的优先级。在调度部12,在从该线程所链接的就绪队列51e中选择授予执行权的线程时,将该优先级61e作为选择的指标来使用。
链接地址61f在该线程作为要素被连接到就绪队列或等待队列的情况下,保持向作为就绪队列或等待队列中的下一个要素的线程信息的指针。
具体而言,链接地址61f在该线程为正在执行状态以及能够执行状态的情况下,为指示形成就绪队列的下一个要素的指针,在该线程为等待状态的情况下,为指示形成等待队列的下一个要素的指针。
[对象存储部70的构成]
图3示出了对象存储部70中所存储的对象信息71、72…和线程存储部60中所存储的等待队列。
对象信息71包括对象状态71a、等待队列71b、对象固有信息71c。
对象状态71a表示该对象为怎样的状态。状态可以表示为无效或有效两种。
等待队列71b示出等待队列的开头的线程信息,该等待队列的开头信息表示以该对象为要因而成为等待状态的线程。被连接在等待队列的地址信息61′、62′…形成分别由链接地址61f′、62f′…顺序连接的等待队列。在该对象的固有信息被更新时,由调度部12从等待队列中选择成为能够执行的线程的设定候补。
对象固有信息71c中存储有对象所需要的信息,因对象的类别不同被存储的信息也不同。具体的信息将按照对象的类别进行详细说明。
[详细的处理]
以下,作为本发明的程序控制装置中的详细处理,对线程等待调度处理、线程等待解除调度处理、线程生成处理、线程结束处理、线程结束等待处理、时隙生成并消除处理进行说明。而且,作为对对象的具体适用例子,对mutex、cond、flag、semaphore进行说明。
<线程等待调度处理>
图4是由API调用而将线程迁移到等待状态的调度处理的详细流程图。
首先,API处理部11进行与API对应的处理(S001),并调用等待处理Wait(S002)。此时API处理部11将正在执行的线程Th的标识符和在API指定的对象Obj的标识符传递给调度部12,以作为等待处理Wait的自变量。在API被指定的对象Obj的标识符表示成为API的对象的对象。在此被指定的对象具体而言有mutex、cond、flag、semaphore等,或也有是其他的线程的情况。
接着,调度部12从被传递来的线程Th所属的时隙的就绪队列51e中除去线程Th的线程信息(S011),将该线程信息的线程状态变更为等待状态之后(S012),将该线程信息登记到对象Obj的对象信息的等待队列(S013),并读出线程Th的线程信息中所包含的“执行时隙61c”。而且,将读出的执行时隙61c(作为时隙TS)作为自变量,发出发送请求(S014)。
作为发送请求处理,将被提供来的时隙的就绪队列作为起点,直到找到作为能够执行状态的线程为止,追寻线程信息的链接地址(S021)。设找到的线程为T。将线程T登记到时隙信息的下一个执行线程(S022)。若没有找到线程则登记NULL(无效)。并且,从时隙TS的时隙信息中读出“工作处理器51b”。此“工作处理器51b”表示被分配了时隙TS的处理器,用于指定接受第一中断处理的一方。最后,第一中断发生部13对被分配了该时隙TS的处理器发生第一中断(S023)。此第一中断包括接受中断的处理器的指定和时隙TS的指定。
由第一中断发生部13发生的第一中断在被指定的处理器以外的处理器不被受理,且在被指定的时隙以外的时隙也不被受理(S30a、S30b)。即,第一中断在被指定的处理器的当前的时隙和被指定的时隙一致的情况下,由第一中断受理部21来受理,并被通知给时隙内发送部22。时隙内发送部22实际被执行是在被指定的时隙被分配了时间之时。在由被指定的处理器的第一中断发生部13指定的时隙被受理时,第一中断发生部13在该处理器内将局部Local中断通知给时隙内发送部22。
时隙内发送部22暂时将寄存器数据保存到堆栈(S031),并将堆栈指针SP保存到与正在执行的线程相对应的线程信息的堆栈指针SP值61d(S032)。
之后,检查在该时隙的下一个执行线程是否登记了线程(S033)。若线程被登记,则取出与该线程对应的线程信息的堆栈指针SP值61d,并设定到堆栈指针SP(S034)。而且,将该线程的状态设定为正在执行状态(S035),并使寄存器数据从堆栈恢复(S036)。据此,在调度处理结束后将执行移向该线程。
若线程没有被登记在下一个执行线程51d,即为NULL(无效)时,由于时隙内不存在移动执行的线程,因此对时隙状态变更部24通知,在时隙状态变更部24将时隙设定为“停止”状态(S037)。据此,该时隙从时隙切换部25的执行对象中被排除。
另外,在时隙状态变更部24时隙全部被设定为等待状态时,也可以将处理器移向省电模式。此时,只要处理器所具有的时隙有一个成为有效状态,则该模式被解除,从S033在此开始该时隙的执行。
<线程等待解除处理>
图5是通过API调用来解除线程的等待状态的调度处理的详细流程图。
首先,API处理部11进行与API对应的处理(S041),并调用等待解除处理Wakeup。作为给等待处理Wait的自变量,将以API指定的对象传递给调度部12。
之后,调度部12从被传递来的对象的等待队列中取出一个线程(S051)。在将该线程信息的线程状态变更为能够执行状态之后(S052),登记到该线程信息所属的时隙信息的就绪队列(S053)。而且,将该线程信息所属的时隙作为自变量,发出发送请求(S054)。
由于发送请求处理与线程等待调度处理相同,因此省略说明。
<线程生成处理>
图6是通过API调用而对时隙生成线程的调度处理的详细流程图。
首先,作为对API的处理将线程信息确保在线程存储部,并根据从API提供来的信息进行初始化(S601)。之后,将线程程序的启动信息设定到线程所使用的堆栈中(S602),在线程状态被设定为能够执行状态后(S603),对线程所属的时隙调用调度部12的发送请求处理(S604)。据此,在发送处理的寄存器数据恢复,线程的程序开始执行。
由于发送请求处理与线程等待调度处理相同,因此省略说明。
<线程结束处理以及线程结束等待处理>
图7(a)、图7(b)是线程结束处理exit以及线程结束等待处理join的使用例子的说明图。该图(a)、(b)示出了线程A(父线程)和线程B(子线程)的处理流程。实线表示执行状态或能够执行状态,虚线表示等待状态wait或结束状态。
并且,create表示线程A(父线程)生成线程B(子线程)的处理(图6的线程生成处理)。exit表示线程本身从执行状态(或能够执行状态)迁移到结束状态的线程结束处理。线程结束等待处理join是为了等待其他的线程成为结束状态,而线程本身从执行状态迁移到等待状态的处理。
该图(a)中的线程A通过create生成线程B,在执行了规定的处理之后,为了与线程B同步,而通过join从执行状态迁移到等待状态wait。而且,线程B在通过exit迁移到结束状态时,线程A从等待状态wait迁移到执行状态,线程B结束。
该图(b)中的线程A通过create生成线程B,在执行了规定的处理之后,为了与线程B同步,而对join进行API调用。另一方面,在通过线程A进行join的调用之前,线程B通过exit迁移到结束状态。此时,通过由线程A进行的join的调用,从而线程A维持执行状态,线程B结束。
图8A是通过API调用而对时隙结束线程的调度处理(线程结束处理exit)的详细流程图。在该图中,图7(a)、图7(b)的线程B对exit进行API调用。
首先,调用部12将正在执行的线程B设定为结束状态(S612)。检查其他的线程(在此为线程A)是否被登记在该线程的线程状态的等待队列(S614)中,只有在线程A被登记时调用等待解除处理Wakeup(S615)。通过此等待状态解除处理Wakeup,如图7(a)所示,线程A从等待状态被变更为执行状态。而且,对线程B所属的时隙调用调度部12的发送请求处理(S616)。通过此发送请求处理,从线程存储部60中删除线程B的线程信息。
由于发送请求处理与调度处理相同,因此省略说明。
<线程结束等待处理>
图8B是通过API调用而对时隙等待线程的结束的调度处理(线程结束等待处理join)的详细流程图。在该图中,图7(a)、图7(b)的线程A对join进行API调用。并且,参数Th由线程A的子线程即线程B来指定。
首先,调度部12检查以API提供的线程B是否为结束状态(S621)。若该线程B不为结束状态,则调用等待处理Wait,并一直等到线程B结束为止(S622)。若线程B为结束状态,则从线程存储部中删除B的线程信息(S623)。由于等待处理Wait与线程等待调度处理相同,因此省略说明。
<时隙生成、删除、分配时间更新处理>
图9以及图10A是通过API调用而进行时隙的生成、删除以及分配时间的更新的调度处理的详细流程图。
首先,API处理部11作为与API对应的处理将从API提供的时隙的生成、删除以及分配时间的更新中的任一个信息变换为指令(S051),并作为控制请求处理,将以API指定的指令传递给调度部12(S052)。
之后,调度部12将指令设定到指令队列(S061),并检查该时隙是否被正在执行的处理器执行(S062)。若是正在执行的处理器,直接调用控制处理(S063)。若是其他的处理器,则在第二中断发生部14发生中断,且将中断通知给该处理器(S064)。
在该处理器由第二中断受理部23受理中断,并将控制移到时隙状态变更部24。
时隙状态变更部24为了避开时隙信息的矛盾,而指示时隙切换部25,在处理过程中不进行切换。这是通过指示处理器,使中断的发生优先于时隙的切换而实现的。并且,寄存器数据暂时保存到堆栈(S071),由指令队列取出指令(S072),通过根据取出的指令调用控制处理,从而可以根据指令的内容来改写时隙存储部50的时隙信息的内容(S073)。
具体而言,判别被提供的指令(S081),并按照指令的类别进行时隙的状态变更(生成、删除)、分配时间的设定(S082、S083、S084)。
在控制处理结束时,保存的寄存器数据从堆栈中恢复(S074),结束处理。
图10B是在图10A中的步骤S082的时隙生成处理的一个例子的流程图。在该图中,时隙状态变更部24按照每个处理器,算出被分配的有效的所有时隙的分配时间的总和(S082a),选择总和最小的处理器(S082b),并对该处理器生成新的时隙(S082c)。在本实施例中的程序控制装置,各个线程的描述不依赖于处理器,由于可以分配到任意的处理器的任意的时隙,因此如图10B所示,可以使多个处理器的负载均等化。
另外,也可以是,在进行时隙的生成时,事先在时隙状态变更部24算出被设定在进行生成的处理器的时隙的设定时间的总和,在进行下一个时隙的生成时,在调度部12对各个处理器的时隙设定时间的总和进行比较之后,来决定进行时隙的生成的处理器。例如,可以像图10B那样分散负载。相反,也可以是,在全体的处理负载小的情况下,使负载倾向于一个以外的处理器,并将该一个处理器的时隙信息设为全部无效,从而设定为省电模式。
并且,也可以是,在发生了第二中断时,重新使专用的时隙有效。作为不发生切换的时隙,进行时隙状态变更部24的处理,从而可以使其他的时隙处理不受影响并进行处理。
<时隙切换处理>
图11是由定时控制部30的超时通知而对被开始的时隙进行切换的调度处理的详细流程图。
由定时控制部30发出的超时通知在时隙切换部25被执行。时隙切换部25使当前的时隙的前后关系保存到前后关系保持部80(S091),并按照时隙存储部的时隙信息阵列的顺序选择下一个时隙(S092)。并且,从时隙信息中取出该时隙的分配信息,并在定时控制部30进行设定(S093)。最后,前后关系从前后关系保持部80恢复,并许可中断(S094)。
通过中断的许可,第一中断受理部21指定自己的处理器,且判定指定当前的时隙的第一中断是否发生(S095),在发生的情况下受理该第一中断(S096)。据此,可以不受理给其他的时隙的第一中断,而受理以该时隙为接收方的第一中断。第一中断发生部13在受理了第一中断的情况下,将局部Local中断通知给该处理器内的时隙内发送部22。
并且,步骤S095、S096与图4的步骤S30a—S30c的处理相同。
并且,由于在步骤S084直到中断被许可为止,即使发生第一以及第二的中断也不受理,因此可以比时隙内发送部22优先进行时隙切换处理。
<mutex处理>
mutex是两个以上的线程竞争一个资源(变数或设备等)并访问的情况下进行调停的机构,包含管理资源的“锁定”状态以及“锁定解除”状态的信息。mutex的操作有锁定请求操作和锁定解除操作。该机构被设置在两个以上的线程的访问有可能发生竞争的每个资源。某线程在mutex的锁定操作成功时,mutex成为“锁定”状态,即使其他线程进行锁定操作,直到“锁定解除”状态为止也会发生等待。据此,锁定操作成功的线程可以占有对应的资源。在进行锁定操作的线程进行锁定解除操作时,其他的线程可以进行锁定操作。在正在执行的线程访问资源的情况下,必需进行与该资源对应的mutex的锁定操作,只有在成功的情况下才可以访问资源。在失败的情况下,即该mutex已经成为“锁定”状态的情况下,直到“锁定解除”状态为止处于等待状态。
图12是对象信息71、72…在mutex中的构成。mutex信息200包括mutex状态201、等待队列202、以及锁定状态203。mutex状态201以及等待队列202与对象信息相同,锁定状态203是mutex中的对象固有信息73。
图13以及图14是通过API调用的mutex的锁定以及锁定解除处理的详细流程图。
锁定处理MutexLock将由API提供的mutex的锁定状态更新为“锁定”状态,并在更新前检查是否为“锁定”状态(S201、S202)。这些处理是不可分的。若为“锁定”状态,则根据对象mutex调用等待处理Wait。若为“锁定解除”状态,则成为已经确保了mutex的锁定。
锁定解除处理MutexUnlock检查由API提供的mutex的等待队列中是否登记有线程(S211)。若线程被登记,则根据对象mutex调用等待解除Wakeup(S212)。此时,仅mutex的所有线程被变更,因此“锁定”状态不变更。若线程没有被登记,则将该mutex的锁定状态更新为“锁定解除”状态,并解除锁定(S213)。
<cond处理>
在cond与mutex共同使用的机构,在变更一个资源的状态时,对其他的一个以上的线程进行通知。为了避开资源的竞争需要使mutex和cond配成对来使用。此机构是按照每个通知变更的资源而被设置的。cond的操作有等待操作和通知操作。
图15A是对象信息71、72…的cond中的构成。cond信息200包括cond状态201、等待队列202。cond状态201以及等待队列202与对象信息相同,cond不具有对象固有信息73。
图15B是cond的工作说明图。该图的左侧表示直到其他的线程更新为止等待一个资源的cond等待处理,右侧表示通知资源已被变更的cond通知处理。被cond通知的线程解除等待状态,并进入下一个处理。
图16以及图17是通过API调用的cond等待以及等待解除处理的详细流程图。
cond等待处理CondWait首先进行由API提供的mutex的锁定解除(S301),并根据对象cond来调用等待处理Wait(S302)。当从等待状态恢复时,再次进行mutex的锁定(S303)。
cond通知处理CondSignal检查由API提供的cond的等待队列中,线程是否被登记(S311)。只有线程被登记时,才根据对象cond来调用等待解除Wakeup(S312)。
<flag处理>
flag是用于使两个线程同步的机构,包括管理用于同步的条件和状态的信息。flag的操作有flag等待操作和flag设定以及复位操作。
图18是对象信息71、72…的flag的构成。flag信息400包括∶flag状态401、等待队列402、等待解除模式403、等待解除条件404以及flag模式405。flag状态401以及等待队列402与对象信息相同,等待解除模式403、等待解除条件404以及flag模式405是flag中的对象固有信息73。
图19、图20以及图21是通过API调用的flag等待、设定、复位处理的详细流程图。
flag等待处理FlagWait设定由API提供的flag的解除模式(S401),并根据flag调用等待处理Wait(S402)。
flag设定处理FlagSet对由API提供的flag所保持的模式算出由API提供的模式和逻辑和,并保存到flag模式(S411)。检查解除条件(S412),并根据解除条件是“OR”还是“AND”而下一个处理不同。若是“AND”,只有flag模式和解除模式一致时才进入下一个步骤(S413)。若是“OR”,只有flag模式和解除模式的逻辑和不为零时才进入下一个步骤(S414)。之后,检查flag的等待队列中线程是否被登记(S415)。只有线程被登记时才根据flag调用等待解除Wakeup(S416)。
flag复位处理FlagClear对由API提供的flag所保持的模式算出与由API提供的模式的“与非”,并保存到flag模式(S421)。
<semaphore处理>
semaphore是在两个以上的线程竞争一个以上的资源(变数或设备等)并访问时进行调停的机构,包括管理资源的数的信息。semaphore的操作有获得操作和释放操作。
图22是对象信息71、72…的semaphore的构成。semaphore信息500包括semaphore状态500a、等待队列500b以及semaphore数500c。semaphore状态500a以及等待队列500b与对象信息相同,semaphore数500c是semaphore中的对象固有信息73。
图23以及图24是通过API调用的semaphore的资源请求以及释放处理的详细的流程图。
semaphore获得处理SemGet使由API提供的semaphore的数减去1,并检查semaphore的数是否为—1(S501、S502)。这些处理的执行是不可分的。若为—1则根据semaphore调用等待处理Wait。若不为—1则是已经从semaphore中确保了资源。
semaphore释放处理SemRelease使由API提供的semaphore的数加上1(S511),并检查semaphore的等待队列中线程是否被登记(S512)。只有在线程被登记时,才根据semaphore调用等待解除Wakeup(S513)。
并且,根据这些对象的实现例子,可以重新实现针对两个以上的线程的通信同步对象。
本发明所设计的程序控制装置可以在满足多个线程的必要性能的同时,线程上的程序还可以不依赖于处理器而进行描述。
据此,可以按照功能来分配处理性能,并可以以多个线程来实现功能,由此,可以使用于确保处理性能的程序设计变得容易,并可以使程序设计具有柔软性。
这些可以作为同时并行且实时地进行多个声音影像处理的设备或这种设备的开发环境等。

Claims (26)

1.一种程序控制装置,对要按照每个时隙执行的线程进行切换,其特征在于,包括∶
发生单元,发生第一中断信号,该第一中断信号以一个时隙作为接收方;以及
受理单元,在作为所述接收方的时隙和当前的时隙不一致的情况下,不受理该第一中断信号,在一致的情况下受理该第一中断信号。
2.如权利要求1所述的程序控制装置,其特征在于,
所述程序控制装置包括∶
存储单元,存储线程信息和时隙信息,所述线程信息包含被分配了线程的时隙的标识符,所述时隙信息包含表示对应的线程的信息;以及
判别单元,根据所述线程信息以及时隙信息,来判别成为所述第一中断信号的接收方的时隙;
所述发生单元发生将所述判别单元的判别结果作为接收方的第一中断信号。
3.如权利要求2所述的程序控制装置,其特征在于,
所述程序控制装置进一步包括∶
接受处理部,从以当前的时隙正在执行的线程中接受系统调用;以及
调度部,根据所述系统调用来变更线程的状态或时隙的状态;
所述发生单元,
在所述线程的状态由所述调度部变更了的情况下,发生所述第一中断信号,所述第一中断信号包含与该变更相关联的线程的时隙的指定,
在所述时隙的状态由所述调度部变更了的情况下,发生第二中断信号;
所述程序控制装置进一步包括∶
第一发送单元,按照由所述受理单元受理的第一中断信号,在时隙内进行线程的切换;以及
第二发送单元,按照由所述受理单元受理的第二中断信号,变更所述时隙信息。
4.如权利要求3所述的程序控制装置,其特征在于,
所述程序控制装置进一步包括时隙切换部,按照所述时隙的分配时间来切换时隙;
所述时隙切换部在时隙的切换期间禁止中断,在时隙的切换刚好结束时,许可所述受理单元受理中断。
5.如权利要求1所述的程序控制装置,其特征在于,
所述程序控制装置被设置于包括多个处理器的多处理器;
所述发生单元发生所述第一中断信号,所述第一中断信号包含处理器的指定和时隙的指定;
所述受理单元,按照每个处理器来受理所述第一中断信号,且在与处理器的指定不一致的处理器不受理所述第一中断信号。
6.如权利要求5所述的程序控制装置,其特征在于,
所述程序控制装置进一步包括∶
线程存储单元,按照每个线程来存储所述线程信息,所述线程信息包含线程的状态和被分配了线程的时隙的标识符;
时隙信息存储单元,按照每个时隙来存储所述时隙信息,所述时隙信息包含时隙的分配时间、与该时隙对应的线程信息、和被分配了该时隙的处理器的标识符;
接受处理部,被设置于每个处理器,从以当前的时隙正在执行的线程中接受系统调用;以及
调度部,被设置于每个处理器,并根据被接受的所述系统调用来变更定义线程的线程信息或定义时隙的时隙信息;
所述发生单元包括∶
第一中断发生部,被设置于每个处理器,在所述线程信息由对应的调度部变更了的情况下,发生所述第一中断信号,所述第一中断信号包含成为接收方的处理器的指定和成为接收方的时隙的指定;以及
第二中断发生部,被设置于每个处理器,在所述时隙信息由对应的调度部变更了的情况下,发生所述第二中断信号,所述第二中断信号包含成为接收方的处理器的指定。
7.如权利要求6所述的程序控制装置,其特征在于,
所述调度部根据所述时隙标识符以及处理器标识符,来确定与被变更的线程信息对应的处理器以及时隙;
所述第一中断单元按照由所述调度部确定的处理器以及时隙来发生所述第一中断信号。
8.如权利要求6所述的程序控制装置,其特征在于,所述受理单元在与处理器的指定不一致的处理器,不受理所述第二中断信号,且在每个处理器的确定的时隙中受理第二中断信号。
9.如权利要求6所述的程序控制装置,其特征在于,
所述程序控制装置进一步包括∶
时隙切换部,被设置于每个处理器,并按照所述时隙的分配时间来切换时隙;
第一发送单元,被设置于每个处理器,并按照由所述受理单元受理的第一中断信号,在时隙内进行线程的切换;以及
第二发送单元,被设置于每个处理器,并按照由所述受理单元受理的第二中断信号,变更所述时隙信息。
10.如权利要求9所述的程序控制装置,其特征在于,所述时隙切换部在时隙的切换期间禁止中断,在时隙的切换刚好结束时,许可所述受理单元受理中断。
11.如权利要求9所述的程序控制装置,其特征在于,所述第二发送单元按照第二中断信号,进行时隙信息的追加或删除。
12.如权利要求9所述的程序控制装置,其特征在于,所述第二发送单元按照每个处理器算出时隙的分配时间的总和,并根据每个处理器的总和来选择与新追加的时隙信息对应的处理器。
13.如权利要求9所述的程序控制装置,其特征在于,所述第二发送单元按照基于表示分配时间的变更的所述系统调用的第二中断信号,变更时隙信息中的分配时间。
14.如权利要求9所述的程序控制装置,其特征在于,
所述线程信息还包含线程的优先级;
所述第一发送单元按照所述第一中断信号,将正在执行的线程切换到与该时隙对应的一个或多个线程中的优先级最高的线程。
15.如权利要求9所述的程序控制装置,其特征在于,所述时隙切换部在与下一个时隙对应的时隙信息为无效的情况下,进一步按照下一个时隙的时隙信息来切换时隙。
16.如权利要求9所述的程序控制装置,其特征在于,所述第一发送单元在与该时隙对应的线程中不存在能够执行的线程的情况下,直到能够执行的线程被设定为止,使对应的时隙信息无效。
17.如权利要求9所述的程序控制装置,其特征在于,所述时隙切换部在对应的处理器的所有时隙信息为无效的情况下,将该处理器变更为节电模式。
18.如权利要求9所述的程序控制装置,其特征在于,
所述程序控制装置进一步包括对象存储单元,按照每个线程间通信时所使用的对象,存储表示该对象是第一状态还是第二状态的对象信息;
所述接受处理部按照所述系统调用,将所述对象信息从第一状态变更为第二状态,或从第二状态变更为第一状态;
所述调度部,在正在执行的线程将要访问所述第一状态的对象时,将该线程从能够执行状态变更为等待状态,在该对象被变更为所述第二状态时,选择一个或多个等待状态的线程并变更为能够执行状态;
所述线程切换单元从切换候补中除去处于等待状态的线程。
19.如权利要求18所述的程序控制装置,其特征在于,
所述对象与一个资源对应,是用于调解多个线程向该资源访问的竞争的对象;
所述接受处理部,按照系统调用将获得了所述资源的使用权的情况下所对应的对象信息变更为第一状态,按照系统调用将释放了资源的使用权的情况下所对应的对象信息变更为第二状态;
与所述接受处理部对应的第一中断发生部,在所述对象信息的状态被变更的情况下,发生将所述对象信息作为参数的所述第一中断信号;
所述第一发送单元进一步按照将所述对象信息作为参数的所述第一中断信号,进行线程的切换。
20.如权利要求18所述的程序控制装置,其特征在于,
所述对象与一个资源对应,是用于在变更了一个资源状态时对其他的线程进行通知的对象;
所述接受处理部,按照所述系统调用将发出等待所述资源的变更的指示的情况下所对应的对象信息变更为第一状态,按照系统调用将发出由所述线程通知资源的变更的指示的情况下所对应的对象信息变更为第二状态。
21.如权利要求18所述的程序控制装置,其特征在于,
所述对象是为了使两个线程同步,而管理用于同步的条件和状态的对象;
所述接受处理部,按照所述系统调用将发出直到变量的条件成立为止的等待指示时所对应的对象信息变更为第一状态,按照系统调用将发出表示变量的条件成立的指示时所对应的对象信息变更为第二状态。
22.如权利要求18所述的程序控制装置,其特征在于,
所述对象是在两个以上的线程竞争并访问一个以上的资源的情况下进行调解的对象;
与所述对象相对应的对象信息包含关于可由任一个线程访问的资源的资源数;
所述接受处理部,根据所述系统调用对资源的获得被指示的情况下的所述资源数进行减法运算,并在资源数到达规定值时,将对应的对象信息变更为第一状态,按照所述系统调用对资源的释放被指示的情况下的所述资源数进行加法运算,并将所述对象信息变更为第二状态。
23.如权利要求9所述的程序控制装置,其特征在于,
所述调度部进行以下工作∶
按照包含第一线程的结束指示的系统调用,将所述第一线程的状态变更为结束状态;
在所述第一线程的状态被变更为结束状态时,选择一个或多个等待状态的线程,并变更为能够执行状态;
按照包含第二线程的结束等待指示的系统调用,将所述第二线程的状态变更为等待状态;
所述第一发送单元从切换候补中除去处于等待状态的线程。
24.一种操作系统,对要按照每个时隙执行的线程进行切换,其特征在于,包括∶
发生单元,发生第一中断信号,该第一中断信号以一个时隙作为接收方;以及
受理单元,在作为所述接收方的时隙和当前的时隙不一致的情况下,不受理该第一中断信号,在一致的情况下受理该第一中断信号。
25.一种程序控制方法,对要按照每个时隙执行的线程进行切换,其特征在于,
发生第一中断信号,该第一中断信号以一个时隙作为接收方;
判定成为所述接收方的时隙和当前的时隙是否一致,
在判定为不一致的情况下不受理该第一中断信号,在判定为一致的情况下受理该第一中断信号。
26.一种计算机可读取的记录介质,记录对要按照每个时隙执行的线程进行切换的程序,记录使计算机实现以下单元的所述程序,这些单元包括∶
发生单元,发生第一中断信号,该第一中断信号以一个时隙作为接收方;以及
受理单元,在作为所述接收方的时隙和当前的时隙不一致的情况下,不受理该第一中断信号,在一致的情况下受理该第一中断信号。
CN200810214863.3A 2007-09-03 2008-09-03 程序控制装置 Active CN101382911B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP228258/2007 2007-09-03
JP2007228258A JP2009059310A (ja) 2007-09-03 2007-09-03 プログラム制御装置

Publications (2)

Publication Number Publication Date
CN101382911A true CN101382911A (zh) 2009-03-11
CN101382911B CN101382911B (zh) 2013-10-16

Family

ID=40407380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810214863.3A Active CN101382911B (zh) 2007-09-03 2008-09-03 程序控制装置

Country Status (3)

Country Link
US (1) US8413163B2 (zh)
JP (1) JP2009059310A (zh)
CN (1) CN101382911B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729166A (zh) * 2012-10-10 2014-04-16 华为技术有限公司 程序的线程关系确定方法、设备及系统

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8607232B2 (en) * 2010-11-11 2013-12-10 International Business Machines Corporation Identifying a transient thread and excluding the transient thread from a processor load calculation
US9098270B1 (en) * 2011-11-01 2015-08-04 Cypress Semiconductor Corporation Device and method of establishing sleep mode architecture for NVSRAMs
CN104375887B (zh) * 2013-08-16 2019-06-25 联想(北京)有限公司 一种信息处理方法及电子设备
JP6724423B2 (ja) * 2015-09-30 2020-07-15 株式会社リコー 通信端末、通信システム、出力方法、及びプログラム
KR102079499B1 (ko) * 2015-10-20 2020-02-21 엘에스산전 주식회사 Plc 위치 결정 시스템의 축별 제어주기 독립 할당 방법
US10185564B2 (en) * 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
WO2021181989A1 (ja) * 2020-03-11 2021-09-16 株式会社エヌエスアイテクス 演算装置
CN112698872A (zh) * 2020-12-21 2021-04-23 北京百度网讯科技有限公司 语音数据处理的方法、装置、设备及存储介质
JP2024047740A (ja) * 2022-09-27 2024-04-08 日立Astemo株式会社 電子制御装置、車両制御システム、及びタスクの制御方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330807A (ja) * 1999-05-24 2000-11-30 Nec Corp 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
JP2001202258A (ja) * 2000-01-20 2001-07-27 Yaskawa Electric Corp リアルタイム処理装置
US20020044669A1 (en) * 2000-09-29 2002-04-18 Wolfram Meyer Method of operating a hearing aid and hearing-aid arrangement or hearing aid
US20030149864A1 (en) * 2002-01-09 2003-08-07 Kazuya Furukawa Processor and program execution method capable of efficient program execution
JP2004171167A (ja) * 2002-11-19 2004-06-17 Nec Corp マルチプロセッサ計算機及びプログラム
CN1530834A (zh) * 2003-03-13 2004-09-22 ���µ�����ҵ��ʽ���� 任务切换装置、方法和程序

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768599A (en) * 1995-02-28 1998-06-16 Nec Corporation Interrupt managing system for real-time operating system
US5966543A (en) * 1997-06-26 1999-10-12 International Business Machines Corporation Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system
JPH11306149A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
US6697834B1 (en) * 1999-12-01 2004-02-24 Sun Microsystems, Inc. Mutual exculsion system and method for restarting critical sections of code when preempted during a critical section
US7925869B2 (en) * 1999-12-22 2011-04-12 Ubicom, Inc. Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US7308686B1 (en) * 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US6957432B2 (en) * 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
US7047396B1 (en) * 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US7010612B1 (en) * 2000-06-22 2006-03-07 Ubicom, Inc. Universal serializer/deserializer
US6684342B1 (en) * 2000-06-22 2004-01-27 Ubicom, Inc. Apparatus and method of dynamic and deterministic changes in clock frequency for lower power consumption while maintaining fast interrupt handling
US7200846B2 (en) * 2002-08-05 2007-04-03 Sun Microsystems, Inc. System and method for maintaining data synchronization
JP2005135382A (ja) * 2003-08-19 2005-05-26 Toshiba Corp イベントベースの通知を有する共有メモリベースのプロセス間通信キューテンプレートのシステムおよび方法
JP4580845B2 (ja) * 2005-08-24 2010-11-17 パナソニック株式会社 タスク実行装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330807A (ja) * 1999-05-24 2000-11-30 Nec Corp 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
JP2001202258A (ja) * 2000-01-20 2001-07-27 Yaskawa Electric Corp リアルタイム処理装置
US20020044669A1 (en) * 2000-09-29 2002-04-18 Wolfram Meyer Method of operating a hearing aid and hearing-aid arrangement or hearing aid
US20030149864A1 (en) * 2002-01-09 2003-08-07 Kazuya Furukawa Processor and program execution method capable of efficient program execution
JP2003271399A (ja) * 2002-01-09 2003-09-26 Matsushita Electric Ind Co Ltd プロセッサ及びプログラム実行方法
JP2004171167A (ja) * 2002-11-19 2004-06-17 Nec Corp マルチプロセッサ計算機及びプログラム
CN1530834A (zh) * 2003-03-13 2004-09-22 ���µ�����ҵ��ʽ���� 任务切换装置、方法和程序

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729166A (zh) * 2012-10-10 2014-04-16 华为技术有限公司 程序的线程关系确定方法、设备及系统
CN103729166B (zh) * 2012-10-10 2017-04-12 华为技术有限公司 程序的线程关系确定方法、设备及系统

Also Published As

Publication number Publication date
JP2009059310A (ja) 2009-03-19
US8413163B2 (en) 2013-04-02
US20090059951A1 (en) 2009-03-05
CN101382911B (zh) 2013-10-16

Similar Documents

Publication Publication Date Title
CN101382911B (zh) 程序控制装置
JP4750350B2 (ja) タスク切換装置、方法及びプログラム
EP1286264A2 (en) Device for task scheduling with priority levels
CN1127017C (zh) 线程切换控制方法及用于该方法的线程状态寄存器
CN1112636C (zh) 在多线程处理器中选择线程切换事件的方法和装置
JP5427574B2 (ja) 仮想計算機の移動管理方法、前記移動管理方法を用いた計算機、前記移動管理方法を用いた仮想化機構および前記移動管理方法を用いた計算機システム
TWI520056B (zh) Virtual queue processing circuit and work processing device
US8112559B2 (en) Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment
US8473964B2 (en) Transparent user mode scheduling on traditional threading systems
CN1716206A (zh) 根据客户软件的特许级支持向虚拟机监视器转移
CN111190745B (zh) 一种数据处理方法、装置及计算机可读存储介质
US8316365B2 (en) Computer system
KR20180116971A (ko) 하이퍼바이저 기반의 가상 머신 격리 장치 및 방법
CN109445944A (zh) 一种基于dpdk的网络数据采集处理系统及其方法
JP4992408B2 (ja) ジョブ割当プログラム、方法及び装置
JPH03144847A (ja) マルチプロセッサ・システムおよびそのプロセス同期方法
WO2008142137A1 (en) Defragmenting blocks in a clustered or distributed computing system
US20090013209A1 (en) Apparatus for connection management and the method therefor
CN102081554A (zh) 云计算操作系统及其内核控制系统及方法
CN103179048A (zh) 云数据中心的主机QoS策略变换方法及系统
CN104798045A (zh) 用于在并行优先级队列中使用定序器的系统和方法
JP6010975B2 (ja) ジョブ管理装置、ジョブ管理方法、及びプログラム
KR100400165B1 (ko) 처리 시스템 스케쥴링
CN101799772A (zh) 内核调度方法、内核备份方法和多核处理器
CN108459825B (zh) 一种存储系统服务质量控制方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151105

Address after: Kanagawa

Patentee after: Co., Ltd. Suo Si future

Address before: Osaka Japan

Patentee before: Matsushita Electric Industrial Co., Ltd.