JP2009059310A - プログラム制御装置 - Google Patents

プログラム制御装置 Download PDF

Info

Publication number
JP2009059310A
JP2009059310A JP2007228258A JP2007228258A JP2009059310A JP 2009059310 A JP2009059310 A JP 2009059310A JP 2007228258 A JP2007228258 A JP 2007228258A JP 2007228258 A JP2007228258 A JP 2007228258A JP 2009059310 A JP2009059310 A JP 2009059310A
Authority
JP
Japan
Prior art keywords
time slot
thread
state
information
unit
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.)
Pending
Application number
JP2007228258A
Other languages
English (en)
Inventor
Kunihiko Hayashi
邦彦 林
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.)
Panasonic Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp filed Critical Panasonic Corp
Priority to JP2007228258A priority Critical patent/JP2009059310A/ja
Priority to US12/201,235 priority patent/US8413163B2/en
Priority to CN200810214863.3A priority patent/CN101382911B/zh
Publication of JP2009059310A publication Critical patent/JP2009059310A/ja
Pending legal-status Critical Current

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

【課題】複数のスレッドの必要性能を満たし、さらに、プログラム設計の柔軟性を確保するプログラム制御装置を提供する。
【解決手段】本発明のプログラム制御装置は、タイムスロット毎に実行すべきスレッドを切換えるプログラム制御装置であって、1つのタイムスロットを宛先とする第1割込み信号を発生する第1割込み発生部13と、前記宛先とされたタイムスロットと現在のタイムスロットとが一致しない場合に当該第1割込み信号を受理せず、一致する場合に当該第1割込み信号を受理する第1割込み受理部21とを備える。
【選択図】図1

Description

本発明は、タイムスロット毎に実行すべきスレッドを切換えるプログラム制御装置すなわちOS(Operating System)に関する。
OSの主な機能は、ハードウェア管理、スレッド管理、データ管理及び入出力管理である。中でもスレッド管理はスレッドの実行順序を管理するものであり、CPUやメモリ、入出力装置等を効率良く動作させるための重要な機能である。
ここで「スレッド」とは、プログラムの起動とその実行、終了などの流れを一括管理する制御単位のことである。
オペレーティングシステムの管理下で動作するプログラムはスレッドとして扱われ、プログラムの実行に関するOSの操作はすべてスレッドを単位として行われる。
スレッドの実行順序を決定するアルゴリズムの一つとして、ラウンドロビンスケジューリングがある。ラウンドロビンスケジューリングは、制御単位であるスレッドにある実行時間を割り当て、割り当てられた時間の間はプロセッサの実行権がスレッドに与えられ、割り当てられた時間が過ぎると別のスレッドに実行権を移す方法である。これによりすべてのスレッドに平等かつ決められた時間で実行権が割り当てられる。
メディア処理をプロセッサで実施するリアルタイムシステムでは、複数の符号化、復号化、多重化処理などを同時に実施する必要があり、実行権を平等に割り当てるために、メディア処理を実現する各機能をスレッドに分割し、機能毎に実行時間を割り当てることで、ラウンドロビンスケジューリングが適用できる。
しかし、ラウンドロビンスケジューリングは、一旦スレッドが実行権を失うと次に実行権が割り当てられるのは1周期経過後であり、リアルタイムシステムにおいては応答性に問題がある。周期を短く設定することで応答性は改善されるが、周期が短くなるほど実行権を切り換える処理にかかるオーバーヘッドが顕在化する。実行権を切り換える処理にかかるオーバーヘッドを解消するため、実行権を切り換える際に、コンテキストの退避復帰をハードウェアで行うプロセッサが開示されている(特許文献1)。
さらに、マルチプロセッサ構成で上記従来技術を実現する場合、スレッドをどのプロセッサに割り当てるかが問題となる。
対称型マルチプロセッサ構成では、システム負荷を複数のプロセッサに分散するように、スケジュール時に動的にスレッドをプロセッサに割り当てるため、スレッド毎に実行時間を割り当てるのは困難である。
よって、スレッド毎にプロセッサを割り当てる場合、プロセッサも固定的に決定する必要がある。非特許文献1には、スレッド毎に割り当てるプロセッサを決定し、プロセッサごとに優先度スケジューリングを行うリアルタイムOSが開示されている
特許第3813930号公報 情報処理学会誌,"機能分散マルチプロセッサ向けのリアルタイムOS", Vol.47, No.1, 2006.
しかしながら、上記従来技術によれば、スレッド数が増加するに伴って、全タイムスロットの合計時間である一周期で切り換える回数が増えるとともに、コンテキストを管理する領域も増加するため、スレッド毎に必要性能を確保することが困難である。
またマルチプロセッサ構成では、各スレッドに直接何れかのプロセッサを割り当てることは、スレッドがプロセッサに依存した記述になるため、マルチプロセッサの構成が変更された場合のスレッドの記述も変更しなければならないため、スレッド設計の柔軟性が乏しいという問題がある。
本発明では、上記問題を解決するために、複数のスレッドの必要性能を満たすプログラム制御装置を提供することを第1の目的とする。さらに、プログラム設計の柔軟性を確保するプログラム制御装置を提供することを第2の目的とする。
上記目的を達成するために、本発明のプログラム制御装置は、タイムスロット毎に実行すべきスレッドを切換えるプログラム制御装置であって、1つのタイムスロットを宛先とする第1割込み信号を発生する発生手段と、前記宛先とされたタイムスロットと現在のタイムスロットとが一致しない場合に当該第1割込み信号を受理せず、一致する場合に当該第1割込み信号を受理する受理手段とを備える。
この構成によれば、宛先でないタイムスロットにおいて無用な割込み処理(割込みハンドラ)を起動させることを防止することができる。言い換えれば、スレッドが実行されるタイムスロットは1つの仮想プロセッサと考えられるので上記構成によれば、宛先でない仮想プロセッサでは第1割込み信号が受理されないので、第1割込み信号によって宛先でない仮想プロセッサの性能を劣化させることを防止することとなる。これにより、各スレッドの必要性能を確保することができる。
ここで、前記プログラム制御装置は、スレッドが割り当てられるタイムスロットの識別子を含むスレッド情報と、対応するスレッドを示す情報を含むタイムスロット情報とを記憶する記憶手段と、前記スレッド情報およびタイムスロット情報に基づいて前記第1割込み信号の宛先となるタイムスロットを判別する判別手段とを備え、前記発生手段は、前記判別手段の判別結果を宛先とする第1割込み信号を発生するようにしてもよい。
この構成によれば、第1割り込み信号の宛先がスレッド情報及びタイムスロット情報に基づいて決定されるので、各スレッドのプログラム設計においてスレッドを実行するプロセッサの記述、およびスレッド間通信における通信先スレッドの記述を不要にすることができ、プログラム設計の柔軟性を確保することができる。
ここで、前記プログラム制御装置は、さらに、現在のタイムスロットで実行中のスレッドからシステムコールを受け付ける受付処理部と、前記システムコールに基づいてスレッドの状態またはタイムスロットの状態を変更するスケジューリング部とを備え、前記発生手段は、前記スケジューリング部によって前記スレッドの状態が変更された場合、関連するスレッドのタイムスロットの指定を含む前記第1割込み信号を発生し、前記スケジューリング部によって前記タイムスロットの状態が変更された場合、第2割込み信号を発生し、前記プログラム制御装置は、さらに、前記受理手段によって受理された第1割込み信号に応じてタイムスロット内でスレッドの切換を行なう第1ディスパッチ手段と、前記受理手段によって受理された第2割込み信号に応じて前記タイムスロット情報を変更する第2ディスパッチ手段とを備えるようにしてもよい。
この構成によれば、各スレッドからのシステムコールに基づいて、例えば、通信先のスレッドが属しているタイムスロットのプロセッサを知ることができ、通信先スレッドに該当するタイムスロットに対して第1割込み信号用いて第1ディスパッチ手段を駆動する。これにより、スレッド間通信による性能劣化を押さえることができる。
ここで、前記プログラム制御装置は、さらに、前記タイムスロットの割り当て時間に従ってタイムスロットを切り換えるタイムスロット切換部を備え、前記タイムスロット切換部は、タイムスロットの切換期間では割込みを禁止し、タイムスロットの切換完了直後に前記受理手段に割込みの受理を許可するようにしてもよい。
この構成によれば、タイムスロットの切換は、第1割込み信号よりも優先、つまりタイムスロット内の実行に優先して行われるため、タイムスロットに割り当てた時間が損なわれることはない。
ここで、前記プログラム制御装置は、複数のプロセッサを含むマルチプロセッサに備えられ、前記発生手段は、プロセッサの指定とタイムスロットの指定とを含む前記第1の割込み信号を発生し、前記受理手段は、プロセッサ毎に前記第1割込み信号を受理し、かつプロセッサの指定と一致しないプロセッサにおいて前記第1の割込みを受理しないようにしてもよい。
この構成によれば、第1割込み信号の宛先でないプロセッサにおいて無用な割込み処理(割込みハンドラ)を起動させることを防止し、宛先でないプロセッサのおけるタイムスロット毎のスレッドの処理性能を確保することができる。
ここで、前記プログラム制御装置は、さらに、スレッド毎に、スレッドの状態と、スレッドが割り当てられるタイムスロットの識別子とを含む前記スレッド情報を記憶するスレッド記憶手段と、タイムスロットの割り当て時間と、当該タイムスロットに対応するスレッド情報と、当該タイムスロットが割り当てられるプロセッサの識別子とを含む前記タイムスロット情報をタイムスロット毎に記憶するタイムスロット情報記憶手段と、プロセッサ毎に設けられ、現在のタイムスロットで実行中のスレッドからシステムコールを受け付ける受付処理部と、プロセッサ毎に設けられ、受け付けられた前記システムコールに基づいてスレッドを定義するスレッド情報またはタイムスロットを定義するタイムスロット情報を変更するスケジューリング部とを備え、前記発生手段は、プロセッサ毎に設けられ、対応するスケジューリング部によって前記スレッド情報が変更された場合に、宛先となるプロセッサの指定と宛先となるタイムスロットの指定とを含む前記第1割込み信号を発生する第1割込み発生部と、各プロセッサに設けられ、対応するスケジューリング部によって前記タイムスロット情報が変更された場合に宛先となるプロセッサの指定を含む第2割込み信号を発生する第2割込み発生部とを備えるようにしてもよい。
この構成によれば、スレッド情報およびタイムスロット情報は、スレッドに割り当てられたタイムスロットおよびプロセッサの対応関係を含むので、プログラム制御装置において、スレッドを任意のタイムスロットおよび任意のプロセッサに動的に割り当てることを可能にする。これにより、各スレッドのプログラム設計においてスレッドを実行するプロセッサを記述する必要がなく、プログラム設計の柔軟性を確保することができる。
ここで、前記スケジューリング部は、前記タイムスロット識別子およびプロセッサ識別子に基づいて、変更されたスレッド情報に対応するプロセッサおよびタイムスロットを特定し、前記第1割込み手段は、前記スケジューリング部による特定されたプロセッサおよびタイムスロットに従って前記第1割込み信号を発生するようにしてもよい。
ここで、前記受理手段は、プロセッサの指定と一致しないプロセッサにおいて前記第2割込み信号を受理せず、かつ各プロセッサにおける特定のタイムスロットにおいて第2割込み信号を受理するようにしてもよい。
ここで、前記プログラム制御装置は、さらに、プロセッサ毎に設けられ、前記タイムスロットの割り当て時間に従ってタイムスロットを切り換えるタイムスロット切換部と、プロセッサ毎に設けられ、前記受理手段によって受理された第1割込み信号に応じてタイムスロット内でスレッドの切換を行なう第1ディスパッチ手段と、プロセッサ毎に設けられ、前記受理手段によって受理された第2割込み信号に応じて前記タイムスロット情報を変更する第2ディスパッチ手段とを備えるようにしてもよい。
ここで、前記タイムスロット切換部は、タイムスロットの切換期間では割込みを禁止し、タイムスロットの切換完了直後に前記受理手段に割込みの受理を許可するようにしてもよい。
この構成によれば、第1ディスパッチ手段によるスレッド切換、例えば、タイムスロットに割り当てられた複数のスレッドから実行するスレッドを選択し実行を開始する処理は、タイムスロットに割り当てられた時間内でのみ行われる。また、第2ディスパッチ手段によるタイムスロット情報の変更は、タイムスロット内のスレッド切換に優先して行われるため、タイムスロットに割り当てた時間が損なわれることはない。これにより、タイムスロット内のスレッドの必要性能を確保することができる。
ここで、前記第2ディスパッチ手段は、第2割込み信号に応じてタイムスロット情報の追加または削除を行なうようにしてもよい。
ここで、前記第2ディスパッチ手段は、プロセッサ毎にタイムスロットの割り当て時間の総和を算出し、プロセッサ毎の総和に基づいて、新たに追加されるタイムスロット情報に対応するプロセッサを選択するようにしてもよい。
ここで、前記第2ディスパッチ手段は、割り当て時間の変更を示す前記システムコールに基づく第2割込み信号に応じて、タイムスロット情報中の割り当て時間を変更するようにしてもよい。
この構成によれば、スレッド内のプログラム記述によりプロセッサの指定が不要であるため、新たなタイムスロットを任意のプロセッサに割り当てることができ、個々のプロセッサの処理性能を柔軟に動的に分配でき、マルチプロセッサ全体の処理性能を柔軟に設定することができる。
ここで、前記スレッド情報はさらにスレッドの優先度を含み、前記第1ディスパッチ手段は、前記第1割込み信号に応じて、当該タイムスロットに対応する1つまたは複数のスレッドの中から最も優先度の高いスレッドに切り換えるようにしてもよい。
タイムスロット情報およびスレッド情報には、タイムスロットがどのプロセッサに割り当てられているかが動的に記録されているため、スレッド間の同期や資源の排他制御などのためにスレッド間通信を行う場合に、スケジュール部は、通信先のスレッドが属しているタイムスロットおよびプロセッサを特定することができる。このことから、スレッド上でのスレッド間通信に必要な情報は、通信先スレッドを示す指定子とスレッド間通信オブジェクトを示す指定子だけあればよい。よって、各スレッドがどのプロセッサに属し、どのタイムスロットに属しているかを知る必要がなく、プロセッサやタイムスロットの構成が変更された場合でもスレッド上のプログラムは変更する必要がない。これにより、システムの構成をプログラムに影響することなく柔軟に変更することができる。
なお、本発明は、このような特徴的な手段を備えるプログラム制御装置として実現できるだけでなく、プログラム制御装置に含まれる特徴的な手段をステップとするプログラム制御方法として実現したり、プログラム制御装置に含まれる特徴的な手段としてコンピュータを機能させるOSとして実現したりすることもできる。そして、そのようなOSは、CD−ROM(Compact Disc-Read Only Memory)等の記憶媒体やインターネット等の通信媒体を介して流通させることができるのは言うまでもない。
本発明によると、スレッド毎に一定の処理性能を保証しつつ、システムの構成変更に伴うプログラム変更の負担を軽減することができる。
[全体構成]
図1は本発明の実施の形態における、タイムスロット毎に実行すべきスレッドを切り換えるプログラム制御装置の主要部の構成を示すブロック図である。同図は、プロセッサにおいてOSの一部の機能としてスレッド切換を行うソフトウェアを実行することにより実現される機能を模式的に表している。
プロセッサのハードウェア構成は、シングルプロセッサの場合は一般的なものでよい。マルチプロセッサの場合は、一般的な対称型マルチプロセッサ構成とし、各プロセッサコアからアクセス可能なメモリが接続され、それぞれのプロセッサコアから別のプロセッサコアに対して割込みを掛けて割込みハンドラを起動することが可能なものとする。
このプログラム制御装置は、各々が割り当て時間の指定を有する複数のスレッド群を1つないしは複数のプロセッサ内で扱い、各スレッド群の必要な性能を確保しながら実行するように構成されている。
このプログラム制御装置において、各プロセッサは、1つのタイムスロットを宛先とする第1割込み信号を全プロセッサに対して発生し、前記宛先とされたタイムスロットと現在のタイムスロットとが一致しない場合に当該第1割込み信号を受理せず、一致する場合に当該第1割込み信号を受理するように構成されている。
これにより、宛先でないタイムスロットにおいて無用な割込み処理(割込みハンドラ等)を起動させることを防止することができる。言い換えれば、スレッドが実行されるタイムスロットは1つの仮想プロセッサと考えられるので上記構成によれば、宛先でない仮想プロセッサでは第1割込み信号が受理されないので、第1割込み信号によって宛先でない仮想プロセッサの性能を劣化させることを防止することとなる。これにより、各スレッドの必要性能を確保することができる。
さらに、プログラム制御装置は、スレッドが割り当てられるタイムスロットの識別子を含むスレッド情報と、対応するスレッドを示す情報を含むタイムスロット情報とを記憶する記憶部を備え、前記スレッド情報およびタイムスロット情報に基づいて前記第1割込み信号の宛先となるタイムスロットを決定し、上記の発生手段が決定されたタイムスロットを宛先とする第1割込み信号を発生するように構成されている。
これにより、第1割り込み信号の宛先がスレッド情報及びタイムスロット情報に基づいて決定されるので、各スレッドのプログラム設計においてスレッドを実行するプロセッサの記述、およびスレッド間通信における通信先スレッドの記述を不要にすることができ、プログラム設計の柔軟性を確保することができる。
同図のようにプログラム制御装置は、プロセッサ100、110、…120のそれぞれに存在する、ディスパッチ発行部10、ディスパッチ処理部20、タイマ制御部30、実行制御部40、タイムスロット記憶部50及びコンテキスト保持部80と、全てのプロセッサに共有される、スレッド記憶部60及びオブジェクト記憶部70より構成される。
ディスパッチ発行部10は、スレッド上のプログラムから呼び出されるAPIの処理を行い、必要に応じてディスパッチ処理部20に対して割込みを出力する。
ディスパッチ処理部20は、ディスパッチ発行部10からの割込みを受理し、タイムスロット及びスレッドの情報を変更する。また、予め定められた周期内において、タイムスロットを少なくとも1回選択するラウンドロビンスケジューリングを行う。
タイマ制御部30は、ディスパッチ処理部20から割当時間を設定される毎に、時間のカウントを開始し、当該割当時間に達したときにタイムアウト信号を出力する。このタイムアウト信号は、タイムスロットの切換タイミングを知らせるために、ディスパッチ処理部20に通知される。
実行制御部40は、ディスパッチ処理部20により選択されたスレッドを実行する。実行制御部40は、スレッドを実行するCPU等のハードウェアに相当する。
タイムスロット記憶部50は、タイムスロットに関する情報を記憶する。
スレッド記憶部60は、スレッドに関する情報を記憶する。
オブジェクト記憶部70は、スレッドが他のスレッドとの通信を行う際に用いるオブジェクトに関する情報を記憶する。
コンテキスト保持部80は、実行しているスレッドを中断し別のスレッドの実行を再開する際に、中断するスレッドのコンテキストを退避し、再開するスレッドのコンテキストを復帰するために、コンテキストを保持する。コンテキストにはプロセッサのレジスタ情報やキャッシュ情報などが含まれる。
[ディスパッチ発行部10の構成]
ディスパッチ発行部10は、API処理部11、スケジューリング部12、第1割込み発生部13、第2割込み発生部14及びAPI終了処理部15から構成される。
<API処理部11>
API処理部11は、スレッドが実行するプログラムより発行されたAPIコールを受理し、APIに従って処理を行う。APIはオブジェクトとともに与えられ、対応するオブジェクト情報記憶部70の操作を行う。操作の結果、スケジューリングが必要と判断された場合は、スケジューリング部12に対して通知を行う。
<スケジューリング部12>
スケジューリング部12は、API処理部11より通知を受け、タイムスロット記憶部50、スレッド記憶部60、オブジェクト記憶部70の情報を更新する。更新した結果、あるタイムスロットに割り当てられたスレッドの情報を更新した場合は第1割込み発生部13に、タイムスロットの情報を更新した場合は第2割込み発生部14にそれぞれ通知を行う。
<第1割込み発生部13>
第1割込み発生部13は、スケジューリング部12より通知を受け、情報を更新したスレッドが割り当てられているタイムスロットのプロセッサに対して割込みを掛ける。割込みは当該プロセッサのディスパッチ処理部20の第1割込み受理部21により受理される。
<第2割込み発生部14>
第2割込み発生部14は、スケジューリング部12より通知を受け、情報を更新したタイムスロットのプロセッサに対して割込みを掛ける。割込みは当該プロセッサのディスパッチ処理部20の第2割込み受理部23により受理される。
<API終了処理部15>
API終了処理部15は、第1割込み発生部13または第2割込み発生部14により割込みを掛けた後、APIコールの後処理を行う。具体的には、APIコールに対する戻り値をプログラムに返す処理を行う。
[ディスパッチ処理部20の構成]
ディスパッチ処理部20は、第1割込み受理部21、タイムスロット内ディスパッチ部22、第2割込み受理部23、タイムスロット状態変更部24及びタイムスロット切換部25から構成される。タイムスロット内ディスパッチ部22は特許請求の範囲における第1ディスパッチ手段に相当し、タイムスロット状態変更部24は特許請求の範囲における第2ディスパッチ手段に相当する。
<第1割込み受理部21>
第1割込み受理部21は、プロセッサ100〜プロセッサ120のいずれかのプロセッサに属するディスパッチ発行部10の第1割込み発生部13により発生した割込みを受理する。割込みを受理すると、タイムスロット内ディスパッチ部22に通知する。
<タイムスロット内ディスパッチ部22>
タイムスロット内ディスパッチ部22は、第1割込み受理部21から通知を受け、タイムスロット記憶部50より次に実行するスレッドを判別し、タイムスロット内の実行中のスレッドを当該スレッドに切り換える処理を行う。この時、当該スレッドについてスレッド記憶部60の更新を行う。スレッドが切り換えることができなかった場合、タイムスロット状態変更部24に通知し、タイムスロットの状態を変更する。また、スレッドを切り換える際に、コンテキスト保持部80よりスレッドのコンテキストの退避及び復帰を行う。
<第2割込み受理部23>
第2割込み受理部は、プロセッサ100〜プロセッサ120のいずれかのプロセッサに属するディスパッチ発行部10の第2割込み発生部14により発生した割込みを受理する。割込みを受理すると、タイムスロット状態変更部24に通知する。
<タイムスロット状態変更部24>
タイムスロット状態変更部24は、第1割込み受理部21から通知を受け、スケジューリング部12で設定された情報を元に、タイムスロット記憶部50に対してタイムスロット情報の設定を行う。タイムスロット状態変更部24の処理を行う際には、情報の矛盾が起こらないようにするため、全ての割込み要求やタイマによる切り換え要求を禁止する。
<タイムスロット切換部25>
タイムスロット切換部25は、現在のタイムスロットにおいてスレッドの実行時間が割当時間に達したときに、タイムスロットの切換を行う。割当時間に達したかどうかはタイマ制御部30によるタイムアウト信号によって通知される。通知を受けたタイムスロット切換部25は、次のタイムスロット情報を選択する。このとき、選択したタイムスロット情報から割当時間を取得してタイマ制御部30に設定する。これにより、次のタイムスロットの割当時間のカウントが開始される。また、タイムスロットに属するスレッドを再開する前に、コンテキスト保持部80よりコンテキストの退避及び復帰を行う。また、タイムスロット内ディスパッチ部22が処理を行う際にタイムスロットの切換が発生する場合は、切換を優先して実施し、タイムスロット状態変更部24が処理を行う際には、タイムスロットの切換を中断して処理を実施する。
[タイムスロット記憶部50の構成]
タイムスロット記憶部50は、割当時間による時間の割り当てを有するスレッド群に対して、切換の基準となるタイムスロットを生成するためのタイムスロット情報を記憶する。
図2はタイムスロット記憶部50とスレッド記憶部60内のスレッド情報との具体例を示す図である。同図のように、タイムスロット記憶部50は、複数のタイムスロット情報51、52、…53を記憶する。
タイムスロット情報51は、1つのタイムスロットに対応し、タイムスロット状態51a、動作プロセッサ51b、割当時間51c、次実行スレッド51d及びレディキュー51eからなる。他のタイムスロット情報も同様である。タイムスロット情報51、52、…53はプロセッサごとに配列を構成し、その順序はタイムスロットの生成順を表すものとする。
タイムスロット状態51aは、当該タイムスロットがどのような状態であるかを示す。状態は、有効、無効、休止の3つの状態を示す。有効状態は、タイムスロット切換部25の切換対象となる状態である。タイムスロット情報の生成時には有効と設定される。無効状態は、タイムスロット切換部25の切換対象とならない状態である。休止状態は、タイムスロットに対して第1割込みが入るのを待っている状態で、第1割込みが入ると有効状態に遷移する。
動作プロセッサ51bは、当該タイムスロットがどのプロセッサに属しているかを示す。割り当てられたプロセッサがタイムスロット情報の生成と同時に設定される。
割当時間51cは、当該タイムスロットに含まれるスレッドが実行することができる時間を示す。当該タイムスロットに含まれるスレッドが実際に実行された時間が割当時間に達すると、次のタイムスロットに切り換えられる。割当時間はタイムスロット情報の生成と同時に設定される。
次実行スレッド51dは、タイムスロット内ディスパッチ部22によりスレッドを切り換える際に参照され、当該タイムスロット内で次に実行するスレッドの情報を保持する。
レディキュー51eは、当該タイムスロットに属するスレッドに対応するスレッド情報へのポインタを示している。レディキュー51eは、タイムスロット内で実行可能状態である複数のスレッド情報が接続されており、スケジューリング部12により次に実行スレッド54の設定候補をレディキューから選択する。
[スレッド記憶部60の構成]
スレッド記憶部60は、タイムスロットに割り当てられたスレッドに対応するスレッド情報61、62、…を記憶する。スレッド情報61、62、…はそれぞれ1つのスレッドに対応し、当該スレッドを管理するための情報である。
スレッド情報61は、スレッド状態61a、待ちキュー61b、実行タイムスロット61c、スタックポインタ値61d、優先度61e及びリンクアドレス61fからなる。
スレッド状態61aは、当該スレッドがどのような状態であるかを示す。状態は、実行中状態、実行可能状態、待ち状態、終了状態の4つの状態を示す。
実行中状態は、タイムスロットの実行時間内に当該スレッドが実行している状態を示している。実行可能状態は、タイムスロット内で当該スレッドより優先度の高いスレッドが存在しているため、それらのスレッドが実行しなくなったときに実行中状態として選択される状態を示している。待ち状態は、当該スレッドがオブジェクトの要因を待っている状態で、実行中状態として選択されず、要因が解消されたときに実行可能状態に遷移する。終了状態は、スレッドの終了を発行した状態で再開することはなく、スレッド記憶部60にスレッド情報が残っている状態を示している。
待ちキュー61bは、当該スレッドが終了状態に遷移することを要因として待ち状態になっている複数のスレッド情報が接続されている。スケジューリング部12により当該スレッドが実行中状態から終了状態に遷移する際に、実行可能状態に遷移させるスレッドの設定候補を待ちキューから選択する。
実行タイムスロット61cは、当該スレッドが属するタイムスロットに対応するタイムスロット情報へのポインタとして保持する。
スタックポインタ値61dは、当該スレッドが切り換えられる時のスタックポインタを保持する。タイムスロット内ディスパッチ部22によりスレッドを切り換える時は、当該時点でのスタックポインタの値を示す。
優先度61eは、当該スレッドのタイムスロット内での実行順を決定する指標となる優先度を示す。スケジューリング部12では、当該スレッドが接続しているレディキュー51eの中から実行権を与えるスレッドの選択を行う際に、当該優先度61eを選択の指標として用いる。
リンクアドレス61fは、当該スレッドが要素としてレディキュー又は待ちキューに接続された場合に、レディキュー又は待ちキューにおける次の要素であるスレッド情報へのポインタを保持する。
具体的には、リンクアドレス61fは、当該スレッドが実行中状態及び実行可能状態である場合は、レディキューを形成する次の要素を指すポインタであり、当該スレッドが待ち状態である場合は待ちキューを形成する次の要素を指すポインタである。
[オブジェクト記憶部70の構成]
図3はオブジェクト記憶部70に記憶されるオブジェクト情報71、72、…と、スレッド記憶部60に記憶される待ちキューとを示す図である。
オブジェクト情報71は、オブジェクト状態71a、待ちキュー71b、オブジェクト固有情報71cからなる。
オブジェクト状態71aは、当該オブジェクトがどのような状態であるかを示す。状態は、無効または有効の2つの状態を示す。
待ちキュー71bは、当該オブジェクトを要因として待ち状態になっているスレッドを示す待ちキューの先頭のスレッド情報を指す。待ちキューに接続されたスレッド情報61’、62’、…はそれぞれリンクアドレス61f’、62f’…によって順に接続された待ちキューを形成する。当該オブジェクトの固有情報が更新される際に、スケジューリング部12により実行可能となるスレッドの設定候補を待ちキューから選択する。
オブジェクト固有情報71cは、オブジェクトが必要な情報が記憶されており、オブジェクトの種別によって記憶されている情報が異なる。具体的な情報はオブジェクトの種別ごとの詳細にて説明する。
[処理の詳細]
以下、本発明のプログラム制御装置における処理の詳細として、スレッド待ちスケジューリング処理、スレッド待ち解除スケジューリング処理、スレッド生成処理、スレッド終了処理、スレッド終了待ち処理、タイムスロット生成・削除処理について詳細に説明する。さらに、オブジェクトに対する具体的な適用例として、mutex、cond、フラグ、セマフォについて説明する。
<スレッド待ちスケジューリング処理>
図4は、API呼び出しによりスレッドを待ち状態に遷移するスケジューリング処理の詳細を示すフローチャートである。
まず、API処理部11は、APIに対応する処理を行い(S001)、待ち処理Waitを呼び出す(S002)。このときAPI処理部11は、待ち処理Waitの引数として、実行中のスレッドThの識別子とAPIで指定されたオブジェクトObjの識別子とをスケジューリング部12に渡す。APIで指定されたオブジェクトObjの識別子は、APIの対象となるオブジェクトを指す。ここで指定されるオブジェクトは、具体的には、mutex、cond、フラグ、セマフォ等があり、あるいは他のスレッドである場合もある。
次に、スケジューリング部12は、渡されたスレッドThの属するタイムスロットのレディキュー51eからスレッドThのスレッド情報を外し(S011)、当該スレッド情報のスレッド状態を待ち状態に変更した上で(S012)、当該スレッド情報をオブジェクトObjのオブジェクト情報の待ちキューに登録し(S013)、スレッドThのスレッド情報に含まれる「実行タイムスロット61c」を読み出す。さらに、読み出した実行タイムスロット61c(タイムスロットTSとする)を引数としてディスパッチ要求を出す(S014)。
ディスパッチ要求処理として、与えられたタイムスロットのレディキューを起点として、実行可能状態であるスレッドが見つかるまでスレッド情報のリンクアドレスをたどる(S021)。見つかったスレッドをTとする。タイムスロット情報の次実行スレッドにスレッドTを登録する(S022)。スレッドTが見つからなければNULL(無効)を登録する。さらに、タイムスロットTSのタイムスロット情報から「動作プロセッサ51b」を読み出す。この「動作プロセッサ51b」はタイムスロットTSが割り当てられたプロセッサを示し、第1割込みの割込み先の指定に用いられる。最後に、第1割込み発生部13は、当該タイムスロットTSが割り当てられたプロセッサに対して第1割込みを発生させる(S023)。この第1割込みは、割込み先のプロセッサの指定とタイムスロットTSの指定とを含む。
第1割込み発生部13により発生した第1割込みは、指定されたプロセッサ以外のプロセッサでは受理されず、かつ指定されたタイムスロット以外のタイムスロットでは受理されない(S30a、S30b)。つまり、第1割込みは、指定されたプロセッサの現在のタイムスロットと、指定されたタイムスロットとが一致する場合に第1割込み受理部21により受理され、タイムスロット内ディスパッチ部22に通知される。タイムスロット内ディスパッチ部22が実際に実行されるのは、指定されたタイムスロットが時間を割り当てられているときである。指定されたプロセッサにおける第1割込み発生部13によって指定されたタイムスロットで受理されると、第1割込み発生部13は、当該プロセッサ内でタイムスロット内ディスパッチ部22にローカル割込みを通知する。
タイムスロット内ディスパッチ部22は、レジスタを一旦スタックに退避し(S031)、スタックポインタを実行中のスレッドに対応するスレッド情報のスタックポインタ値61dに保存する(S032)。
次に、当該タイムスロットの次実行スレッドにスレッドが登録されているかどうかを検査する(S033)。スレッドが登録されていれば、当該スレッドに対応するスレッド情報のスタックポインタ値61dを取り出し、スタックポインタに設定する(S034)。さらに、当該スレッドの状態を実行中状態に設定し(S035)、レジスタをスタックから復帰する(S036)。これにより、スケジューリング処理終了後は当該スレッドに実行が移っている。
次実行スレッドにスレッドが登録されていない、つまりNULL(無効)であれば、タイムスロット内に実行を移すスレッドが存在しないため、タイムスロット状態変更部24に対して通知し、タイムスロット状態変更部24にて当該タイムスロットを「休止」状態に設定する(S037)。これにより、当該タイムスロットはタイムスロット切換部25の実行対象から除外される。
なお、タイムスロット状態変更部24にて、タイムスロットが全て待ち状態に設定されたときは、プロセッサを省電力モード移行してもよい。このとき、当該モードはプロセッサに含まれるタイムスロットが1つでも有効状態になると、当該モードを解除し、当該タイムスロットの実行をS033から再開する。
<スレッド待ち解除処理>
図5は、API呼び出しによりスレッドの待ち状態を解除するスケジューリング処理の詳細を示すフローチャートである。
まず、API処理部11は、APIに対応する処理を行い(S041)、待ち解除処理Wakeupを呼び出す(S042)。待ち処理WaitへはAPIで指定されたオブジェクトをスケジューリング部12に渡す。
次に、スケジューリング部12は、渡されたオブジェクトの待ちキューからスレッドを1つ取り出し(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)。別のプロセッサであれば、第2割込み発生部14にて割込みを発生し、当該プロセッサに割込みが通知される(S064)。
当該プロセッサでは第2割込み受理部23により割込みを受理し、タイムスロット状態変更部24に制御を移す。
タイムスロット状態変更部24は、タイムスロット情報の矛盾を避けるため、タイムスロット切換部25に対して、処理中に切換を行わないように指示する。これは、割込みの発生をタイムスロットの切換より優先して行うようにプロセッサに指示することで実現できる。さらに、レジスタを一旦スタックに退避し(S071)、コマンドキューよりコマンドを取り出し(S072)、取り出したコマンドを元に制御処理を呼び出すことで、コマンドの内容を元にタイムスロット記憶部50のタイムスロット情報の内容を書き換える(S073)。
具体的には、与えられたコマンドを判別し(S081)、その種別に従ってタイムスロットの状態変更(生成、削除)、割当時間の設定を行う(S082,S083,S084)。
制御処理が完了すると、退避したレジスタスタックから復帰し(S074)、処理を完了する。
図10Bは、図10Bは、図10A中のステップS082におけるタイムスロット生成処理の一例を示すフローチャートである。同図において、タイムスロット状態変更部24は、プロセッサ毎に、割り当てられている有効な全タイムスロットの割り当て時間の総和を算出し(S082a)、総和が最小のプロセッサを選択し(S082b)、当該プロセッサに対して新たなタイムスロットを生成する(S082c)。本実施形態におけるプログラム制御装置では、各スレッドの記述がプロセッサに依存することなく、任意のプロセッサの任意のタイムスロットに割り当てることができるので、図10Bのように、複数のプロセッサの負荷を均等化することができる。
なお、タイムスロットの生成を行う際に、タイムスロット状態変更部24にて、生成を行うプロセッサに設定されているタイムスロットの設定時間の総和を算出しておき、次のタイムスロットの生成を行う場合に、スケジューリング部12にて、各プロセッサのタイムスロット設定時間の総和を比較した上で、タイムスロットの生成を行うプロセッサを決定してもよい。例えば、図10Bのように負荷を分散することができる。逆に、全体の処理負荷が小さい場合には、1つ以外のプロセッサに負荷を偏らせて当該1つのプロセッサのタイムスロット情報を全部無効にして省電力モードにするようにしてもよい。
なお、第2割込みが発生した際に、新たに専用のタイムスロットを有効にしてもよい。切換が起こらないタイムスロットとしてタイムスロット状態変更部24の処理を行うことで、他のタイムスロットの処理の影響を受けることなく処理を行うことができる。
<タイムスロット切換処理>
図11は、タイマ制御部30のタイムアウト通知により開始されるタイムスロット切換を行うスケジューリング処理の詳細を示すフローチャートである。
タイマ制御部30よりタイムアウト通知がタイムスロット切換部25に行われる。タイムスロット切換部25は、現在のタイムスロットのコンテキストをコンテキスト保持部80に退避し(S091)、タイムスロット記憶部のタイムスロット情報配列順に従って次のタイムスロットを選択する(S092)。さらに、当該タイムスロットの割当情報をタイムスロット情報から取り出し、タイマ制御部30に設定を行う(S093)。最後に、コンテキスト保持部80よりコンテキストを復帰し、割込みを許可する(S094)。
割込みの許可により第1割込み受理部21は、自身のプロセッサを指定しかつ現在のタイムスロットを指定する第1割込みが発生しているか否かを判定し(S095)、発生している場合には当該第1割込みを受理する(S096)。これにより、他のタイムスロット宛の第1割込みを受理しないで、当該タイムスロットを宛先とする第1割込みを受理することができる。第1割込み発生部13は、第1割込みを受理した場合、当該プロセッサ内のタイムスロット内ディスパッチ部22にローカル割込みを通知する。
なお、ステップS095、S096は、図4のステップS30a〜S30cと同じ処理を示している。
また、ステップS084により割込み許可される時点まで、第1および第2の割込みが発生していても受理されないので、タイムスロット切換処理をタイムスロット内ディスパッチ部22よりも優先することができる。
<mutex処理>
mutexは、2つ以上のスレッドが1つの資源(変数やデバイスなど)を競合してアクセスする場合に調停を行う機構であり、資源の「ロック中」状態及び「ロック解除」状態を管理する情報を含む。mutexの操作はロック要求操作とロック解放操作がある。この機構は、2つ以上のスレッドからのアクセスが競合する可能性のある資源毎に設けられる。あるスレッドが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のロック状態を「ロック解除」状態に更新し、ロックを解除する(S213)。
<cond処理>
condはmutexとともに用いる機構で、1つの資源の状態を変更した際に、他の1つ以上のスレッドに対して通知を行う。資源の競合を避けるためにmutexを対として用いる必要がある。この機構は、変更を通知する資源毎に設けられる。condの操作は待ち操作と通知操作がある。
図15Aは、オブジェクト情報71、72、…のcondにおける構成である。
cond情報200は、cond状態201、待ちキュー202からなる。cond状態201及び待ちキュー202はオブジェクト情報と同じであり、condはオブジェクト固有情報73を持たない。
図15Bは、condの動作説明図である。同図左側は1つの資源を他のスレッドが更新するまで待つ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)。
<フラグ処理>
フラグは、2つのスレッドが同期を取るための機構であり、同期のための条件と状態を管理する情報を含む。フラグの操作はフラグ待ち操作とフラグセット及びクリア操作がある。
図18は、オブジェクト情報71、72、…のフラグにおける構成である。
フラグ情報400は、フラグ状態401、待ちキュー402、待ち解除パターン403、待ち解除条件404及びフラグパターン405からなる。フラグ状態401及び待ちキュー402はオブジェクト情報と同じであり、待ち解除パターン403、待ち解除条件404及びフラグパターン405はフラグにおけるオブジェクト固有情報73である。
図19、図20及び図21は、API呼び出しによりフラグ待ち、セット及びクリア処理の詳細を示すフローチャートである。
フラグ待ち処理FlagWaitは、APIより与えられたフラグの解除パターンを設定し(S401)、フラグを元に待ち処理Waitを呼び出す(S402)。
フラグセット処理FlagSetは、APIより与えられたフラグが保持するパターンに対して、APIより与えられたパターンとの論理和を算出し、フラグパターンに保存する(S411)。解除条件を検査し(S412)、解除条件が「OR」か「AND」かによって次の処理が異なる。「AND」ならば、フラグパターンと解除パターンが一致した場合のみ、次のステップへ進む(S413)。「OR」ならば、フラグパターンと解除パターンとの論理和が0でない場合のみ、次のステップへ進む(S414)。次に、フラグの待ちキューにスレッドが登録されているかどうかを検査する(S415)。スレッドが登録されるときのみ、フラグを元に待ち解除Wakeupを呼び出す(S416)。
フラグクリア処理FlagClearは、APIより与えられたフラグが保持するパターンに対して、APIより与えられたパターンとの否定論理積を算出し、フラグパターンに保存する(S421)。
<セマフォ処理>
セマフォは、2つ以上のスレッドが1つ以上の資源(変数やデバイスなど)を競合してアクセスする場合に調停を行う機構であり、資源の数を管理する情報を含む。セマフォの操作は獲得操作と解放操作がある。
図22は、オブジェクト情報71、72、…のセマフォにおける構成である。
セマフォ情報500は、セマフォ状態501及びセマフォ数502からなる。セマフォ状態501及び待ちキュー502はオブジェクト情報と同じであり、セマフォ数502はセマフォにおけるオブジェクト固有情報73である。
図23及び図24は、API呼び出しによりセマフォの資源要求及び解放処理の詳細を示すフローチャートである。
セマフォ獲得処理SemGetは、APIより与えられたセマフォの数を1つ減らし、セマフォの数が−1かどうかを検査する(S501,S502)。これらの処理は不可分で行われなければならない。−1であれば、セマフォを元に待ち処理Waitを呼び出す(S503)。−1でなければ、すでにセマフォから資源を1つ確保したことになる。
セマフォ解放処理SemReleaseは、APIより与えられたセマフォの数を1つ加算し(S511)、セマフォの待ちキューにスレッドが登録されているかどうかを検査する(S512)。スレッドが登録されるときのみ、セマフォを元に待ち解除Wakeupを呼び出す(S513)。
また、これらオブジェクトの実現例を元に、2つ以上のスレッドに対する通信・同期オブジェクトを新たに実現することができる。
本発明にかかるプログラム制御装置は、複数のスレッドの必要性能を満たすとともに、スレッド上のプログラムはプロセッサ構成によらない記述が可能となる。
このことから、処理性能を機能ごとに割り当て、機能を複数スレッドで実現することで、処理性能を確保するためのプログラム設計を容易にすることができ、プログラム設計の柔軟性をもたらす。
これらは、複数の音声映像処理を同時並行的にリアルタイムに行う機器や、当該機器の開発環境等として適用可能である。
本発明の実施の形態におけるプログラム制御装置の主要部の構成を示すブロック図である。 タイムスロット記憶部内のタイムスロット情報と、スレッド記憶部内のスレッド情報との具体例を示す図である。 オブジェクト記憶部内のオブジェクト情報と、スレッド記憶部に記憶されている待ちキューとを示す図である。 スレッド待ち処理の詳細を示すフローチャートである。 スレッド待ち解除処理の詳細を示すフローチャートである。 スレッド生成処理(ThreadCreate)の詳細を示すフローチャートである。 (a)(b)スレッド終了処理とスレッド終了待ち処理の説明図である。 スレッド終了処理(ThreadExit)の詳細を示すフローチャートである。 スレッド終了待ち処理(ThreadJoin)の詳細を示すフローチャートである。 タイムスロット制御処理の詳細を示すフローチャートである。 タイムスロット制御処理内のコマンド処理の詳細を示すフローチャートである。 タイムスロット生成処理の一例を示すフローチャートである。 タイムスロット切換処理の詳細を示すフローチャートである。 オブジェクト記憶部内のmutex情報の具体例を示す図である。 mutexロック処理(MutexLock)の詳細を示すフローチャートである。 mutexロック解除処理(MutexUnlock)の詳細を示すフローチャートである。 オブジェクト記憶部内のcond情報の具体例を示す図である。 condの動作説明図である。 cond待ち処理(CondWait)の詳細を示すフローチャートである。 cond通知処理(CondSignal)の詳細を示すフローチャートである。 オブジェクト記憶部内のフラグ情報の具体例を示す図である。 フラグ待ち処理(FlagWait)の詳細を示すフローチャートである。 フラグセット処理(FlagSet)の詳細を示すフローチャートである。 フラグクリア処理(FlagClear)の詳細を示すフローチャートである。 オブジェクト記憶部内のセマフォ情報の具体例を示す図である。 セマフォ獲得処理(SemGet)の詳細を示すフローチャートである。 セマフォ解放処理(SemRelease)の詳細を示すフローチャートである。
符号の説明
10 ディスパッチ発行部
11 API処理部
12 スケジューリング部
13 第1割込み発生部
14 第2割込み発生部
15 API終了処理部
20 ディスパッチ処理部
21 第1割込み受理部
22 タイムスロット内ディスパッチ部
23 第2割込み受理部
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 フラグ情報
500 セマフォ情報

Claims (26)

  1. タイムスロット毎に実行すべきスレッドを切換えるプログラム制御装置であって、
    1つのタイムスロットを宛先とする第1割込み信号を発生する発生手段と、
    前記宛先とされたタイムスロットと現在のタイムスロットとが一致しない場合に当該第1割込み信号を受理せず、一致する場合に当該第1割込み信号を受理する受理手段と
    を備えることを特徴とするプログラム制御装置。
  2. 前記プログラム制御装置は、
    スレッドが割り当てられるタイムスロットの識別子を含むスレッド情報と、対応するスレッドを示す情報を含むタイムスロット情報とを記憶する記憶手段と、
    前記スレッド情報およびタイムスロット情報に基づいて前記第1割込み信号の宛先となるタイムスロットを判別する判別手段とを備え、
    前記発生手段は、前記判別手段の判別結果を宛先とする第1割込み信号を発生する
    ことを特徴とする請求項1記載のプログラム制御装置。
  3. 前記プログラム制御装置は、さらに、
    現在のタイムスロットで実行中のスレッドからシステムコールを受け付ける受付処理部と、
    前記システムコールに基づいてスレッドの状態またはタイムスロットの状態を変更するスケジューリング部とを備え、
    前記発生手段は、
    前記スケジューリング部によって前記スレッドの状態が変更された場合、関連するスレッドのタイムスロットの指定を含む前記第1割込み信号を発生し、
    前記スケジューリング部によって前記タイムスロットの状態が変更された場合、第2割込み信号を発生し、
    前記プログラム制御装置は、さらに、前記受理手段によって受理された第1割込み信号に応じてタイムスロット内でスレッドの切換を行なう第1ディスパッチ手段と、
    前記受理手段によって受理された第2割込み信号に応じて前記タイムスロット情報を変更する第2ディスパッチ手段とを備える
    ことを特徴とする請求項2記載のプログラム制御装置。
  4. 前記プログラム制御装置は、さらに、前記タイムスロットの割り当て時間に従ってタイムスロットを切り換えるタイムスロット切換部を備え、
    前記タイムスロット切換部は、タイムスロットの切換期間では割込みを禁止し、タイムスロットの切換完了直後に前記受理手段に割込みの受理を許可する
    ことを特徴とする請求項3記載のプログラム制御装置。
  5. 前記プログラム制御装置は、複数のプロセッサを含むマルチプロセッサに備えられ、
    前記発生手段は、プロセッサの指定とタイムスロットの指定とを含む前記第1の割込み信号を発生し、
    前記受理手段は、プロセッサ毎に前記第1割込み信号を受理し、かつプロセッサの指定と一致しないプロセッサにおいて前記第1の割込みを受理しない
    ことを特徴とする請求項1記載のプログラム制御装置。
  6. 前記プログラム制御装置は、さらに
    スレッド毎に、スレッドの状態と、スレッドが割り当てられるタイムスロットの識別子とを含む前記スレッド情報を記憶するスレッド記憶手段と、
    タイムスロットの割り当て時間と、当該タイムスロットに対応するスレッド情報と、当該タイムスロットが割り当てられるプロセッサの識別子とを含む前記タイムスロット情報をタイムスロット毎に記憶するタイムスロット情報記憶手段と、
    プロセッサ毎に設けられ、現在のタイムスロットで実行中のスレッドからシステムコールを受け付ける受付処理部と、
    プロセッサ毎に設けられ、受け付けられた前記システムコールに基づいてスレッドを定義するスレッド情報またはタイムスロットを定義するタイムスロット情報を変更するスケジューリング部とを備え、
    前記発生手段は、
    プロセッサ毎に設けられ、対応するスケジューリング部によって前記スレッド情報が変更された場合に、宛先となるプロセッサの指定と宛先となるタイムスロットの指定とを含む前記第1割込み信号を発生する第1割込み発生部と、
    各プロセッサに設けられ、対応するスケジューリング部によって前記タイムスロット情報が変更された場合に宛先となるプロセッサの指定を含む第2割込み信号を発生する第2割込み発生部とを備える
    ことを特徴とする請求項5記載のプログラム制御装置。
  7. 前記スケジューリング部は、前記タイムスロット識別子およびプロセッサ識別子に基づいて、変更されたスレッド情報に対応するプロセッサおよびタイムスロットを特定し、
    前記第1割込み手段は、前記スケジューリング部による特定されたプロセッサおよびタイムスロットに従って前記第1割込み信号を発生する
    ことを特徴とする請求項6記載のプログラム制御装置。
  8. 前記受理手段は、プロセッサの指定と一致しないプロセッサにおいて前記第2割込み信号を受理せず、かつ各プロセッサにおける特定のタイムスロットにおいて第2割込み信号を受理する
    ことを特徴とする請求項6記載のプログラム制御装置。
  9. 前記プログラム制御装置は、さらに、
    プロセッサ毎に設けられ、前記タイムスロットの割り当て時間に従ってタイムスロットを切り換えるタイムスロット切換部と、
    プロセッサ毎に設けられ、前記受理手段によって受理された第1割込み信号に応じてタイムスロット内でスレッドの切換を行なう第1ディスパッチ手段と、
    プロセッサ毎に設けられ、前記受理手段によって受理された第2割込み信号に応じて前記タイムスロット情報を変更する第2ディスパッチ手段と
    を備えることを特徴とする請求項6記載のプログラム制御装置。
  10. 前記タイムスロット切換部は、タイムスロットの切換期間では割込みを禁止し、タイムスロットの切換完了直後に前記受理手段に割込みの受理を許可する
    ことを特徴とする請求項9記載のプログラム制御装置。
  11. 前記第2ディスパッチ手段は、第2割込み信号に応じてタイムスロット情報の追加または削除を行なう
    ことを特徴とする請求項9記載のプログラム制御装置。
  12. 前記第2ディスパッチ手段は、プロセッサ毎にタイムスロットの割り当て時間の総和を算出し、プロセッサ毎の総和に基づいて、新たに追加されるタイムスロット情報に対応するプロセッサを選択する
    ことを特徴とする請求項9記載のプログラム制御装置。
  13. 前記第2ディスパッチ手段は、割り当て時間の変更を示す前記システムコールに基づく第2割込み信号に応じて、タイムスロット情報中の割り当て時間を変更する
    ことを特徴とする請求項9記載のプログラム制御装置。
  14. 前記スレッド情報はさらにスレッドの優先度を含み、
    前記第1ディスパッチ手段は、前記第1割込み信号に応じて、当該タイムスロットに対応する1つまたは複数のスレッドの中から最も優先度の高いスレッドに切り換える
    ことを特徴とする請求項9記載のプログラム制御装置。
  15. 前記タイムスロット切換部は、次のタイムスロットに対応するタイムスロット情報が無効である場合に更に次のタイムスロットのタイムスロット情報に従ってタイムスロットを切り換える
    ことを特徴とする請求項9記載のプログラム制御装置。
  16. 前記第1ディスパッチ手段は、当該タイムスロットに対応するスレッドの中に実行可能なスレッドが存在しない場合に、実行可能なスレッドが設定されるまで対応するタイムスロット情報を無効にする
    ことを特徴とする請求項9記載のプログラム制御装置。
  17. 前記タイムスロット切換部は、対応するプロセッサの全てのタイムスロット情報が無効である場合に当該プロセッサを省電力モードに変更する
    ことを特徴とする請求項9記載のプログラム制御装置。
  18. 前記プログラム制御装置は、さらに
    スレッド間通信に用いられるオブジェクト毎に、当該オブジェクトが第1の状態か第2の状態かを示すオブジェクト情報を記憶するオブジェクト記憶手段を備え、
    前記受付処理部は、前記システムコールに応じて、前記オブジェクト情報を第1の状態から第2の状態にまたは第2の状態から第1の状態に変更し、
    前記スケジューリング部は、
    実行中のスレッドが前記第1の状態のオブジェクトをアクセスしようとしたときに、当該スレッドを実行可能状態から待ち状態に変更し、当該オブジェクトが前記第2の状態に変更されたときに、待ち状態のスレッドを1つまたは複数選択して実行可能状態に変更し、
    前記スレッド切換手段は、待ち状態にあるスレッドを切換先の対象から除外する
    ことを特徴とする請求項9記載のプログラム制御装置。
  19. 前記オブジェクトは、1つの資源に対応し、複数のスレッドからの当該資源へのアクセスの競合を調停するためのオブジェクトであり、
    前記受付処理部は、システムコールに従って前記資源の使用権の獲得をした場合に対応するオブジェクト情報を第1の状態に変更し、システムコールに従って資源の使用権を解放した場合に対応するオブジェクト情報を第2の状態に変更し、
    前記受付処理部に対応する第1割込み発生部は、前記オブジェクト情報の状態が変更された場合に前記オブジェクト情報をパラメータとする前記第1割込み信号を発生し、
    前記第1ディスパッチ手段は、さらに、前記オブジェクト情報をパラメータとする前記第1割込み信号に応じてスレッドの切換を行なう
    ことを特徴とする請求項18記載のプログラム制御装置。
  20. 前記オブジェクトは、1つの資源に対応し、1つの資源の状態を変更した際に他のスレッドに対して通知を行うためのオブジェクトであり、
    前記受付処理部は、前記システムコールに従って前記資源の変更を待つ指示をした場合に対応するオブジェクト情報を第1の状態に変更し、システムコールに従って前記スレッドによって資源の変更を知らせる指示をした場合に対応するオブジェクト情報を第2の状態に変更する
    ことを特徴とする請求項18記載のプログラム制御装置。
  21. 前記オブジェクトは、2つのスレッドの同期を取るために、同期のための条件と状態を管理するオブジェクトであり、
    前記受付処理部は、前記システムコールに従って変数の条件が成立するまで待つ指示をした場合に対応するオブジェクト情報を第1の状態に変更し、システムコールに従って変数の条件が成立したことを示す指示をした場合に対応するオブジェクト情報を第2の状態に変更する
    ことを特徴とする請求項18記載のプログラム制御装置。
  22. 前記オブジェクトは、2つ以上のスレッドが1つ以上の資源を競合してアクセスする場合に調停を行うオブジェクトであり、
    前記オブジェクトに対応するオブジェクト情報は、いずれかのスレッドよりアクセス可能な資源についての資源数を含み、
    前記受付処理部は、前記システムコールによって資源の獲得が指示された場合に前記資源数を減算し、資源数が所定値に到達したとき、対応するオブジェクト情報を第1の状態に変更し、システムコールに従って資源の解放が指示された場合に資源数を加算し、前記情報を第2の状態に変更する
    ことを特徴とする請求項18記載のプログラム制御装置。
  23. 前記スケジューリング部は、
    第1のスレッドの終了指示を含むシステムコールに従って前記第1のスレッドの状態を終了状態に変更し、
    前記第1のスレッドの状態が終了状態に変更されたときに、待ち状態のスレッドを1つまたは複数選択して実行可能状態に変更し、
    第2のスレッドの終了待ち指示を含むシステムコールに従って前記第2のスレッドの状態を待ち状態に変更し、
    前記第1ディスパッチ手段は、待ち状態にあるスレッドを切換先の対象から除外する
    ことを特徴とする請求項9記載のプログラム制御装置。
  24. タイムスロット毎に実行すべきスレッドを切換えるオペレーティングシステムであって、
    1つのタイムスロットを宛先とする第1割込み信号を発生する発生手段と、
    前記宛先とされたタイムスロットと現在のタイムスロットとが一致しない場合に当該第1割込み信号を受理せず、一致する場合に当該第1割込み信号を受理する受理手段と
    を備えることを特徴とするオペレーティングシステム。
  25. タイムスロット毎に実行すべきスレッドを切換えるプログラム制御方法であって、
    1つのタイムスロットを宛先とする第1割込み信号を発生し、
    前記宛先とされたタイムスロットと現在のタイムスロットとが一致するか否かを判定し、
    一致しないと判定された場合に当該第1割込み信号を受理せず、一致すると判定された場合に当該第1割込み信号を受理する
    ことを特徴とするプログラム制御方法。
  26. タイムスロット毎に実行すべきスレッドを切換えるプログラムを記録するコンピュータ読み取り可能な記録媒体であって、
    1つのタイムスロットを宛先とする第1割込み信号を発生する発生手段と、
    前記宛先とされたタイムスロットと現在のタイムスロットとが一致しない場合に当該第1割込み信号を受理せず、一致する場合に当該第1割込み信号を受理する受理手段と
    をコンピュータに発揮させる前記プログラムを記録する記録媒体。
JP2007228258A 2007-09-03 2007-09-03 プログラム制御装置 Pending JP2009059310A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007228258A JP2009059310A (ja) 2007-09-03 2007-09-03 プログラム制御装置
US12/201,235 US8413163B2 (en) 2007-09-03 2008-08-29 Program control device including per-timeslot switching of thread execution
CN200810214863.3A CN101382911B (zh) 2007-09-03 2008-09-03 程序控制装置

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
JP2009059310A true JP2009059310A (ja) 2009-03-19

Family

ID=40407380

Family Applications (1)

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

Country Status (3)

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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375887A (zh) * 2013-08-16 2015-02-25 联想(北京)有限公司 一种信息处理方法及电子设备
JP2017069936A (ja) * 2015-09-30 2017-04-06 株式会社リコー 通信端末、通信システム、出力方法、及びプログラム
WO2021181989A1 (ja) * 2020-03-11 2021-09-16 株式会社エヌエスアイテクス 演算装置
WO2024070015A1 (ja) * 2022-09-27 2024-04-04 日立Astemo株式会社 電子制御装置、車両制御システム、及びタスクの制御方法

Families Citing this family (6)

* 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
CN103729166B (zh) * 2012-10-10 2017-04-12 华为技术有限公司 程序的线程关系确定方法、设备及系统
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
CN112698872A (zh) * 2020-12-21 2021-04-23 北京百度网讯科技有限公司 语音数据处理的方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11306149A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JP2000330807A (ja) * 1999-05-24 2000-11-30 Nec Corp 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
JP2001202258A (ja) * 2000-01-20 2001-07-27 Yaskawa Electric Corp リアルタイム処理装置
JP2003271399A (ja) * 2002-01-09 2003-09-26 Matsushita Electric Ind Co Ltd プロセッサ及びプログラム実行方法
JP2004171167A (ja) * 2002-11-19 2004-06-17 Nec Corp マルチプロセッサ計算機及びプログラム
JP2004280297A (ja) * 2003-03-13 2004-10-07 Matsushita Electric Ind Co Ltd タスク切換装置、方法及びプログラム
JP2005135382A (ja) * 2003-08-19 2005-05-26 Toshiba Corp イベントベースの通知を有する共有メモリベースのプロセス間通信キューテンプレートのシステムおよび方法

Family Cites Families (13)

* 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
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
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
JP4693326B2 (ja) 1999-12-22 2011-06-01 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法
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
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
DE10048341C5 (de) * 2000-09-29 2004-12-23 Siemens Audiologische Technik Gmbh Verfahren zum Betrieb eines Hörhilfegerätes sowie Hörgeräteanordnung oder Hörhilfegerät
US7200846B2 (en) 2002-08-05 2007-04-03 Sun Microsystems, Inc. System and method for maintaining data synchronization
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
JPH11306149A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JP2000330807A (ja) * 1999-05-24 2000-11-30 Nec Corp 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
JP2001202258A (ja) * 2000-01-20 2001-07-27 Yaskawa Electric Corp リアルタイム処理装置
JP2003271399A (ja) * 2002-01-09 2003-09-26 Matsushita Electric Ind Co Ltd プロセッサ及びプログラム実行方法
JP2004171167A (ja) * 2002-11-19 2004-06-17 Nec Corp マルチプロセッサ計算機及びプログラム
JP2004280297A (ja) * 2003-03-13 2004-10-07 Matsushita Electric Ind Co Ltd タスク切換装置、方法及びプログラム
JP2005135382A (ja) * 2003-08-19 2005-05-26 Toshiba Corp イベントベースの通知を有する共有メモリベースのプロセス間通信キューテンプレートのシステムおよび方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375887A (zh) * 2013-08-16 2015-02-25 联想(北京)有限公司 一种信息处理方法及电子设备
CN104375887B (zh) * 2013-08-16 2019-06-25 联想(北京)有限公司 一种信息处理方法及电子设备
JP2017069936A (ja) * 2015-09-30 2017-04-06 株式会社リコー 通信端末、通信システム、出力方法、及びプログラム
WO2021181989A1 (ja) * 2020-03-11 2021-09-16 株式会社エヌエスアイテクス 演算装置
WO2024070015A1 (ja) * 2022-09-27 2024-04-04 日立Astemo株式会社 電子制御装置、車両制御システム、及びタスクの制御方法

Also Published As

Publication number Publication date
US8413163B2 (en) 2013-04-02
CN101382911A (zh) 2009-03-11
US20090059951A1 (en) 2009-03-05
CN101382911B (zh) 2013-10-16

Similar Documents

Publication Publication Date Title
JP2009059310A (ja) プログラム制御装置
JP4750350B2 (ja) タスク切換装置、方法及びプログラム
WO2017166777A1 (zh) 一种任务调度方法及装置
CN108920267B (zh) 任务处理装置
JP5626690B2 (ja) マルチプロセス間のバリアの物理マネージャ
US6389446B1 (en) Multi-processor system executing a plurality of threads simultaneously and an execution method therefor
JP3557947B2 (ja) 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
JP2006515690A (ja) 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法
JP5516728B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
JPH10116192A (ja) キャッシュメモリシステム
US8321874B2 (en) Intelligent context migration for user mode scheduling
US9336049B2 (en) Method, system, and program for scheduling jobs in a computing system
JP4857325B2 (ja) タスク切換装置、方法及びプログラム
JP2007172611A (ja) 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法)
JP2684993B2 (ja) プロセッサシステムとその制御方法
JPWO2012032572A1 (ja) 計算機
JP5003673B2 (ja) マルチプロセッシング方法及びマルチプロセッサシステム
JP2014139702A (ja) 仮想計算機システムとその制御方法、プログラム、および集積回路
CN112749020A (zh) 一种物联网操作系统的微内核优化方法
KR101818410B1 (ko) 병렬 처리 시스템
JPH0877026A (ja) 情報処理方法とその装置
JP5708861B2 (ja) マルチプロセッサシステム、制御方法、および制御プログラム
JP2011248469A (ja) 情報処理装置および情報処理方法
EP1228429B1 (en) Sharing resources among entities
JP3904251B2 (ja) 排他制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110712

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111207