JP2004021610A - Task managing device - Google Patents

Task managing device Download PDF

Info

Publication number
JP2004021610A
JP2004021610A JP2002175727A JP2002175727A JP2004021610A JP 2004021610 A JP2004021610 A JP 2004021610A JP 2002175727 A JP2002175727 A JP 2002175727A JP 2002175727 A JP2002175727 A JP 2002175727A JP 2004021610 A JP2004021610 A JP 2004021610A
Authority
JP
Japan
Prior art keywords
task
register
contents
registers
processing
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.)
Withdrawn
Application number
JP2002175727A
Other languages
Japanese (ja)
Inventor
Munehiro Yoneda
米田 宗弘
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.)
Mitsubishi Heavy Industries Ltd
Original Assignee
Mitsubishi Heavy Industries 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 Mitsubishi Heavy Industries Ltd filed Critical Mitsubishi Heavy Industries Ltd
Priority to JP2002175727A priority Critical patent/JP2004021610A/en
Publication of JP2004021610A publication Critical patent/JP2004021610A/en
Withdrawn legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To accelerate the processing speed of saving and return in a register when system call or interruption is caused during task management processing, especially, task execution. <P>SOLUTION: When system call or interruption is generated during task execution, only the contents of a register which is being used by the task among a plurality of registers owned by a CPU are saved(pushed) in the stack of the task which is being executed (S1). Afterwards, request processing such as system call or the decision of the next execution task is executed (S2 to S9), and then the contents of the register to be used for the task to be executed the next are loaded from the stack of the task to be executed the next to the corresponding register of the CPU (S5, S8). Thus, only the contents of not all the registers but the register to be used are saved/loaded so that the processing quantity can be reduced, and the high speed operation of processing can be achieved. Also, a push instruction and a pop instruction wherein the number of clocks required for processing is smaller than that of a data moving instruction are used, so that the processing speed can be accelated. <P>COPYRIGHT: (C)2004,JPO

Description

【0001】
【発明の属する技術分野】
本発明は,タスク管理装置,タスク管理方法,およびタスク管理プログラムに関し,特に,タスク実行中にシステムコールまたは割り込みが発生した際の処理を高速化するタスク管理装置,タスク管理方法,およびタスク管理プログラムに関する。
【0002】
【従来の技術】
図5は,コンピュータにおいて実行される従来のタスク管理の処理の概要を示している。この図では,コンピュータの一部であるCPU7およびメモリ(RAM)15が示されている。
【0003】
複数のタスク(ジョブ,スレッド)が実行されるコンピュータでは,タスク管理は実行され,タスクを管理している。
【0004】
このタスク管理では,各タスク用にタスク制御ブロック(TCB:Task Control Block)がメモリ15に設けられ,このTCBに,タスクの状態を表す情報が記憶される。TCBには,タスクID,プログラム開始アドレス等に加えて,CPU7の全てのレジスタ(プログラムカウンタ8,スタックポインタ8,汎用レジスタ群10等)を格納する領域が設けられている。図5では,2つのタスクAおよびBのそれぞれのTCB31および33が例示されている。
【0005】
また,メモリ15に一般に設けられるスタック領域は,各タスク用に分割され,図5では,タスクA用のスタック32およびタスクB用のスタック34が例示されている。
【0006】
ここで,従来のタスク管理では,タスクAがCPU7によって実行されている場合において,割り込み(たとえばタイマ割り込み,データ受信割り込み等)や,タスクAからシステムコールが発生すると,CPU7は,その全てのレジスタ(プログラムカウンタ8,スタックポインタ9,汎用レジスタ群10等)のデータをタスクAのTCB31に記憶(セーブ)し,その後,割り込み処理やシステムコールの処理を実行していた。
【0007】
また,従来のタスク管理では,割り込み処理やシステムコールの処理後,タスクスケジューリングによってタスクAからタスクBへの切り替えが発生した場合には,CPU7は,切り替え後のタスクBのTCB33に記憶されている全てのレジスタの内容(データ,アドレス等)をCPU7の対応するレジスタ(プログラムカウンタ8,スタックポインタ9,汎用レジスタ群10等)にロードしていた。
【0008】
【発明が解決しようとする課題】
このように,従来のタスク管理では,CPU7の全てのレジスタをセーブおよびロードしているため,タスクの切り替えに多くの時間を要していた。また,セーブする領域が各タスクのTCBであるため,データのセーブおよびロードを実行する命令には,クロック数を多く必要とする移動命令(たとえばアセンブリ言語の“MOV”命令)が必要となり,これによっても,タスクの切り替えに多くの時間を要していた。
【0009】
このため,リアルタイム性の要求されるプログラム(たとえば高速交通機関制御,航空機管制等のプログラム)では,処理に遅れが生じ,リアルタイム処理を実現できないという問題があった。
【0010】
本発明の目的は,タスク管理の処理,特に,タスク実行中にシステムコールまたは割り込みが発生した際のレジスタの退避および復帰処理を高速化することにある。
【0011】
【課題を解決するための手段】
前記目的を達成するために,本発明によるタスク管理装置は,複数のレジスタを有する処理装置によって実行されるタスクのタスク管理を行うタスク管理装置において,前記レジスタの内容を記憶する記憶手段と,前記タスクの実行中にシステムコールまたは割り込みが発生すると,前記複数のレジスタのうち,該タスクにより使用されるレジスタの内容のみを前記記憶手段に格納するレジスタ退避手段と,前記システムコールまたは割り込みの処理後,前記タスクの実行が開始される際に,前記レジスタ退避手段により退避されたレジスタの内容を前記複数のレジスタのうち対応するレジスタに復帰させるレジスタ復帰手段と,を備えていることを特徴とする。
【0012】
本発明によるタスク管理方法は,複数のレジスタを有する処理装置とメモリとを有するコンピュータによって実行されるタスクの管理方法において,前記タスクの実行中にシステムコールまたは割り込みが発生すると,前記複数のレジスタのうち,前記タスクにより使用されるレジスタの内容のみを前記記憶部に格納し,前記システムコールまたは割り込みの処理後,前記タスクの実行が開始される際に,前記記憶部に格納したレジスタの内容を,前記複数のレジスタのうち対応するレジスタに戻すことを特徴とする。
【0013】
本発明によるタスク管理プログラムは,前記タスク管理方法を,タスクを実行するコンピュータに実行させるものである。
【0014】
ここで,複数のレジスタを有する処理装置は,CPU,マイクロコンピュータ,マイクロプロセッサ等のいずれであってもよい。
【0015】
本発明によると,タスク実行中にシステムコールまたは割り込みが発生すると,タスクを実行する処理装置の有する複数のレジスタのうち,該タスクにより使用されるレジスタの内容のみが記憶手段に格納(退避)される。したがって,従来のように,複数のレジスタのすべての内容を格納する場合よりも,格納に要する処理量が減少し,処理速度を向上させることができる。
【0016】
本発明の一実施の形態において,前記レジスタ退避手段は,前記システムコールが発生した場合には,前記複数のレジスタのうち,前記タスクにより使用されるレジスタの内容のみを前記記憶手段に格納し,前記割り込みが発生した場合には,前記複数のレジスタのすべて,または,スタックポインタを除くレジスタのすべての内容を前記記憶手段に格納する。
【0017】
また,好ましくは,前記記憶手段は,プッシュダウンスタックであり,前記処理装置は,命令セットとして,前記プッシュダウンスタックに前記レジスタの内容を格納するプッシュ命令と,前記プッシュダウンスタックに格納された前記レジスタの内容を前記レジスタに戻すポップ命令とを有し,前記レジスタ退避手段は,前記処理装置に前記プッシュ命令を実行させることにより前記レジスタの内容を退避させ,前記レジスタ復帰手段は,前記処理装置に前記ポップ命令を実行させることにより前記レジスタの内容を前記レジスタに復帰させる。
【0018】
プッシュ命令およびポップ命令は,データの移動命令(たとえばアセンブラ言語の“MOV”)よりも,少ないクロック数で実行することができる。したがって,これによっても,処理速度を向上させることができる。
【0019】
【発明の実施の形態】
以下に,本発明の実施の形態を,図面を参照しながら説明するが,これは一例であって,本発明の技術的範囲を限定するものではない。
【0020】
図1は,本発明の一実施の形態によるタスク管理装置1の構成を示す機能ブロック図である。タスク管理装置1は,レジスタ退避部2,要求処理部3,実行タスク決定部4,TCB更新部5,レジスタ復帰部6,および記憶部20を有する。記憶部20は,スタック(プッシュダウンスタック)21を含んでいる。
【0021】
レジスタ退避部2は,タスクの実行中にシステムコールまたは割り込みが発生した場合に,タスクを実行しているコンピュータの処理装置(CPU,マイクロコンピュータ,マイクロプロセッサ等)の所定のレジスタ(後述)の内容(データ,アドレス等)を,記憶部20のスタック21に格納(セーブ,プッシュ)する。要求処理部3は,レジスタ退避部2によりレジスタの内容がスタック21にセーブされた後,システムコールまたは割り込みの処理を実行する。
【0022】
実行タスク決定部4は,要求処理部3によるシステムコールまたは割り込みの処理後,次に実行すべきタスクを決定(選択)する。システムコールまたは割り込み前に実行されていたタスクが再び選択される場合もあるし,システムコールまたは割り込みによって別のタスクの実行が必要となり,この別のタスクが選択される場合もある。別のタスクが選択された場合に,実行タスク決定部4は,タスク切り替えを実行する。
【0023】
TCB更新部5は,実行タスク決定部4によりタスク切り替えが行われた場合に,タスク切り替え前に実行されていたタスクのタスク制御ブロック(TCB:Task Control Block)の内容およびタスク切り替え後に実行されるタスクのTCBの内容を更新する。タスク切り替えが行われない場合には,TCB更新部5はこの更新処理を実行しない。
【0024】
レジスタ復帰部6は,実行タスク決定部4によって決定されたタスクについての所定のレジスタの内容をスタック21から,タスクを実行するコンピュータの処理装置の対応するレジスタに格納(ロード,ポップ)する。その後,実行タスク決定部4により決定されたタスクが実行される。
【0025】
このタスク管理装置1は,たとえば,タスクを実行するコンピュータ内に設けられ,コンピュータのオペレーティングシステム(OS)の一部として,プログラム(タスク管理プログラム)により実現することができる。図2は,タスク管理装置1がタスク管理プログラムとして実現され,実装されたコンピュータ100の構成の一部を示している。
【0026】
このコンピュータ100は,一般的なコンピュータであり,CPU7,メモリ(RAM)15,図示しないROM等を有する。CPU7,メモリ15,ROM(図示略)等は,図示しないシステムバスによって接続され,CPU7は,メモリ15およびROMからデータを読み出し,また,メモリ15にデータを書き込むことができる。
【0027】
CPU7は,図示しない演算ユニット(ALU)に加えて,処理対象となるデータ,アドレス等を一時的に保持するレジスタ群10,プログラムカウンタ(PC)8,スタックポインタ(SP)9等のレジスタを有する。レジスタ群10は,n個(nは2以上の整数)の汎用レジスタを有する。また,CPU7には,図示しない割り込み信号線が入力されている。割り込みには,タイマ割り込み,外部からのデータ受信割り込み(たとえばシリアルポートからのデータ受信割り込み)等がある。
【0028】
メモリ15には,各タスクの状態を表す情報を格納するタスク制御ブロック(TCB:Task Control Block)および各タスクのスタック領域(プッシュダウンスタック領域)が設けられ,図2では,一例として,タスクAおよびBのそれぞれのTCB11および13ならびにスタック12および14の領域が示されている。
【0029】
なお,このスタック12および14は,図1のスタック21を詳細に示したものである。また,タスクA,B等は,たとえば,リアルタイム性の要求されるプログラム(たとえば高速交通機関制御,航空機管制等のプログラム)のタスクであってもよいし,リアルタイム性が要求されないプログラムのタスクであってもよい。
【0030】
TCB11は,タスクID,プログラム開始アドレス,スタック先頭アドレス,現在のスタックアドレス,スタックサイズ,優先順位,停止原因,タスクの状態等の各データ項目を有する。TCB13も,同じデータ項目を有する。以下では,タスクAのTCB11を例にとり,各データ項目を説明するが,以下の内容はタスクBのTCB13や他の図示しないタスクのTCBにも同様に当てはまる。
【0031】
「タスクID」は,タスクAを他のタスクから一意に識別するための識別情報である。「プログラム開始アドレス」は,タスクAのプログラムが記憶されている記憶装置(ROM(図示略)またはメモリ15)の先頭アドレスである。
【0032】
「スタック先頭アドレス」は,タスクAのスタック12の先頭アドレスである。「現在のスタックアドレス」は,タスクAのスタック12の現在のスタックアドレス,すなわち,次にプッシュ(PUSH)命令が実行された場合にデータが格納されるメモリセルのアドレスである。「スタックサイズ」は,タスクAに割り当てられたスタック領域のサイズ(たとえばバイト数)である。
【0033】
「優先順位」は,タスクAの優先順位であり,「停止原因」は,タスクAが停止している場合にその停止した原因である。この停止原因として,システムコール,割り込み,または終了がある。「タスクの状態」は,タスクAの現在の状態であり,たとえばRUN,READY,およびWAITのいずれかの状態をとる。
【0034】
なお,従来技術の欄で説明した図4のTCBと異なり,SP9以外のレジスタ(PC8,レジスタ群10)の格納領域は,TCB11および13には設けられていない。
【0035】
メモリ15には,処理中のデータ等が一時的に記憶されるワーク領域等(図示略)も設けられる。また,タスク管理プログラムを含むOSのプログラムは,ROM(図示略)に記憶される場合もあるし,ROMまたはハードディスクから読み出されてメモリ15に記憶される場合もある。
【0036】
図3は,コンピュータ100におけるタスク管理装置1(タスク管理プログラム)の処理の流れを示すフローチャートである。このフローチャートは,図1の機能ブロックの詳細な処理を示すものでもある。
【0037】
まず,フローチャートの処理を説明する前に,本実施の形態の前提事項について説明する。タスクA,B等のタスクプログラムおよびシステムコール(OSへの処理要求)の処理プログラムは,そのソースプログラム(ソースコード)が所定の高級言語(たとえばC言語,C++言語等)で記述された後,コンパイラ(たとえばC言語やC++言語のコンパイラ等)でコンパイルされてオブジェクトプログラム(オブジェクトコード,マシン語プログラム)に変換されているものとする。一方,割り込み処理のプログラムは,アセンブラ言語により記述され,オブジェクトプログラムに変換されているものとする。
【0038】
コンパイラは,一般に,コンパイル後のオブジェクトプログラムにおいて使用されるレジスタを所定のものに限定しており,CPU7が備えているすべてのレジスタをオブジェクトプログラムにおいて使用するわけではない。すなわち,オブジェクトプログラムで使用されるレジスタは,CPU7のすべてのレジスタではなく,一部のレジスタである。たとえば,レジスタ群10のレジスタA1〜Anのうち,レジスタA1〜Ai(iはnより小さい整数)がオブジェクトプログラムで使用される。
【0039】
したがって,タスクの実行中にシステムコールまたは割り込み処理が発生し,タスクの処理データやアドレスを格納したレジスタの内容を一時的に退避させる必要がある場合に,すべてのレジスタではなく,コンパイラにより限定されている所定のレジスタの内容のみを退避させるだけで,タスクの処理状況を保存することができる。そして,この所定のレジスタの内容を再びCPU7の対応するレジスタに復帰させるだけで,タスクの処理を再開することができる。所定のレジスタがどのレジスタであるかは,コンパイラを調べることにより知ることができる。
【0040】
そこで,本実施の形態では,タスクの実行中にシステムコールまたは割り込みが発生した場合に,コンパイラにより限定された所定のレジスタ(以下,単に「所定のレジスタ」という。)の内容のみを退避および復帰させることとする。これにより,すべてのレジスタの内容を退避させ,復帰させていた従来の処理よりも,退避および復帰に要する処理量が減少し,処理を高速化することができる。
【0041】
なお,割り込み処理のプログラムはアセンブラ言語で記述されるので,記述するユーザによって様々なレジスタが使用され,一定していないことが想定される。しかし,このような場合であっても,タスクの処理データやアドレスは前述の通り保存されるので,問題はない。
【0042】
また,本実施の形態では,レジスタ(SP9を除く。)が一時的に退避されるメモリ15の領域が従来のようなTCB11,13ではなく,スタック12,14とされる。スタック12,14へレジスタの内容の書き込むプッシュ命令(PUSH)およびスタック12,14からレジスタの内容の読み出すポップ命令(POP)は,TCB11,13へレジスタの内容の書き込む命令や読み出す命令(たとえばいずれも移動命令の“MOV”)よりも,少ないクロック数で処理される。したがって,レジスタの内容の退避先をスタックとすることによって,従来よりも少ないクロック数で退避処理および復帰処理が完了し,これによっても,処理を高速化することができる。
【0043】
以下,このような前提を踏まえて,図3のフローチャートの処理を詳述する。
【0044】
まず,実行中にシステムコールまたは割り込みが発生すると,タスク管理装置1(タスク管理プログラムを実行するCPU7)は,実行中のタスクのスタックに,所定のレジスタの内容をセーブ(プッシュ)する(S1)。
【0045】
たとえば,タスクAの実行中にシステムコールまたは割り込みが発生すると,所定のレジスタとして,PC8およびレジスタ群10のうちのレジスタA1〜Aiの内容がタスクAのスタック12にセーブされる。これにより,タスク管理装置1は,タスクAのTCB11の現在のスタックアドレスを更新する。
【0046】
続いて,タスク管理装置1は,システムコールまたは割り込みの要求を処理すし(S2),処理後,次に実行すべきタスクを決定する(S3)。
【0047】
タスクの決定により,タスク切り替えが行われず,これまで実行されていたタスクが継続して実行される場合には(S4で「なし」),タスク管理装置1は,これまで実行されていたタスクのスタックから所定のレジスタの内容を,CPU7の対応するレジスタにロード(ポップ)する(S5)。このロード処理において,所定のレジスタの内容を読み出すべきスタックのアドレスは,TCBの現在のスタックアドレスにより示されている。ロード後,タスク管理装置1は,TCBの現在のスタックアドレスを更新する。
【0048】
たとえば,これまで実行されていたタスクがタスクAの場合には,タスクAのスタック12の現在のスタックアドレスからPC8およびレジスタA1〜Aiの内容が,CPU7のPC8およびレジスタA1〜Aiにそれぞれロードされる。その後,タスクAのTCB11の現在のスタックアドレスが更新され,タスクAの実行が継続される。
【0049】
一方,タスク切り替えが行われ,別のタスクが実行される場合には(S4で「あり」),タスク管理装置1は,切り替え前に実行されていたタスクのTCBおよび切り替え後に実行されるタスクのTCBを更新する(S6,S7)。
【0050】
たとえば,タスクAの実行後,タスク切り替えによりタスクBが実行される場合に,タスクAのTCB11の停止原因にシステムコールまたは割り込みが書き込まれ,タスクの状態に“WAIT”が書き込まれるとともに,タスクBのTCB13のタスクの状態に“RUN”が書き込まれる。
【0051】
その後,タスク管理装置1は,切り替え後に実行されるタスクの前回の停止原因をTCBの停止原因から読み出し,停止原因がシステムコールまたは割り込みであるか,終了であるかを判断する(S9)。
【0052】
たとえば,タスク切り替えによりタスクBが実行される場合に,タスクBのTCB13の停止原因が調べられる。
【0053】
停止原因がシステムコールまたは割り込みである場合には,前回停止した際にセーブした所定のレジスタの内容がスタックに格納されているので,タスク管理装置1は,これらの内容を所定のレジスタにロードする(S8)。一方,停止原因が終了である場合には,その停止の際に,所定のレジスタの内容をセーブする必要がなく,したがって所定のレジスタの内容はスタックに格納されていないので,タスク管理装置1は,ロード処理を行わない。その後,切り替え後のタスクが実行される。
【0054】
このような処理が,各タスクの実行中にシステムコールまたは割り込みが発生するごとに繰り返される。
【0055】
システムコールの際に退避させるレジスタと割り込みの際に退避させるレジスタとを異ならせることもできる。たとえば,システムコールの際には,前述した所定のレジスタを退避させ,割り込みの場合には,SP9を除く全レジスタを退避させることもできる。
【0056】
図4は,システムコールの際に退避させるレジスタと割り込みの際に退避させるレジスタとが異なる場合におけるタスク管理装置(タスク管理プログラム)1の処理の流れを示すフローチャートである。図3のフローチャートと同じ処理には同じ符号を付し,その詳細な説明を省略する。
【0057】
タスクの実行中に,システムコールまたは割り込みが発生すると,タスク管理装置1は,起動原因がシステムコールであるか,割り込みであるかを判断する(S11)。
【0058】
タスク管理装置1は,起動原因がシステムコールである場合には,ステップS1の処理を実行し,起動原因が割り込みである場合には,実行中のタスクのスタックに,SP9を除く全レジスタ(PC8およびレジスタA1〜An)の内容をセーブする(S12)。
【0059】
続いて,タスク管理装置1は,ステップS2からS4の処理を実行し,ステップS4において,タスク切り替えが行われない場合には(S4で「なし」),起動原因についてステップS11と同じ判断を行う(S13)。
【0060】
タスク管理装置1は,起動原因がシステムコールである場合には,ステップS5の処理を実行し,起動原因が割り込みである場合には,割り込み発生前に実行中であったタスクのスタックからSPを除く全レジスタの内容をCPU7の対応するレジスタにロードする(S14)。その後,実行中であったタスクが再び実行される。
【0061】
一方,ステップS4において,タスク切り替えが行われる場合には(S4で「あり」),タスク管理装置1は,ステップS6およびS7の処理を実行した後,切り替え後のタスクの前回の停止原因をTCBの停止原因により判断する(S15)。
【0062】
タスク管理装置1は,停止原因がシステムコールの場合には(S15で「システムコール」),ステップS8の処理(所定のレジスタの内容を所定のレジスタにロードする処理)を実行する。停止原因が割り込みの場合には(S15で「割り込み」),タスク管理装置1は,この割り込みの際にSP9を除く全レジスタの内容がスタックにセーブされているので,セーブされたレジスタの内容をCPU7の対応するレジスタにロードする(S16)。
【0063】
一方,停止原因が終了である場合には(S15で「終了」),レジスタの内容は退避されていないので,レジスタの内容のロード処理は実行されない。その後,切り替え後のタスクが実行される。
【0064】
このような処理が,各タスクの実行中にシステムコールまたは割り込みが発生するごとに繰り返される。
【0065】
この図4のフローチャートに示す処理によっても,レジスタの退避および復帰に要する処理数が従来よりも減少するので,処理を高速化することができる。また,レジスタの退避先がスタックであるので,これによっても処理速度が向上する。
【0066】
なお,割り込み発生の際に,SP9を除く全てのレジスタを退避し,その後,復帰させているが,SP9を含めて,退避および復帰処理を実行してもよい。
【0067】
【発明の効果】
本発明によると,タスク管理に要する処理,特にレジスタの内容の退避処理および復帰処理に要する処理量が減少するので,タスク管理の処理を高速化することができる。また,レジスタの内容の退避処理および復帰処理を実行する命令として,プッシュ命令およびポップ命令をそれぞれ使用することにより,少ないクロック数で処理が実行され,これによっても処理を高速化することができる。
【図面の簡単な説明】
【図1】本発明の一実施の形態によるタスク管理装置の構成を示す機能ブロック図である。
【図2】本発明の一実施の形態によるタスク管理装置がタスク管理プログラムとして実現され,実装されたコンピュータの構成の一部を示している。
【図3】コンピュータにおけるタスク管理装置(タスク管理プログラム)の処理の流れを示すフローチャートである。
【図4】コンピュータにおけるタスク管理装置(タスク管理プログラム)の処理の流れを示すフローチャートである。
【図5】コンピュータにおいて実行される従来のタスク管理の処理の概要を示す。
【符号の説明】
1 タスク管理装置
2 レジスタ退避部
6 レジスタ復帰部
20 記憶部
21 スタック
7 CPU
8 プログラムカウンタ
9 スタックポインタ
10 レジスタ群
15 メモリ
11,13 タスク制御ブロック
12,14 タスクのスタック
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a task management device, a task management method, and a task management program, and more particularly to a task management device, a task management method, and a task management program that speed up processing when a system call or an interrupt occurs during task execution. About.
[0002]
[Prior art]
FIG. 5 shows an outline of a conventional task management process executed by a computer. In this figure, a CPU 7 and a memory (RAM) 15, which are parts of a computer, are shown.
[0003]
In a computer on which a plurality of tasks (jobs, threads) are executed, task management is executed and the tasks are managed.
[0004]
In this task management, a task control block (TCB: Task Control Block) is provided in the memory 15 for each task, and information indicating the state of the task is stored in the TCB. The TCB is provided with an area for storing all registers of the CPU 7 (the program counter 8, the stack pointer 8, the general-purpose register group 10, and the like) in addition to the task ID, the program start address, and the like. FIG. 5 illustrates TCBs 31 and 33 of two tasks A and B, respectively.
[0005]
In addition, a stack area generally provided in the memory 15 is divided for each task, and FIG. 5 illustrates a stack 32 for the task A and a stack 34 for the task B.
[0006]
Here, in the conventional task management, when a task A is executed by the CPU 7 and an interrupt (for example, a timer interrupt, a data reception interrupt, or the like) or a system call occurs from the task A, the CPU 7 causes all of its registers to operate. The data of the program counter 8, the stack pointer 9, the general-purpose register group 10 and the like are stored (saved) in the TCB 31 of the task A, and thereafter, interrupt processing and system call processing are executed.
[0007]
Further, in the conventional task management, when switching from task A to task B occurs due to task scheduling after interrupt processing or system call processing, the CPU 7 is stored in the TCB 33 of the switched task B. The contents (data, addresses, etc.) of all the registers have been loaded into the corresponding registers (program counter 8, stack pointer 9, general-purpose register group 10, etc.) of the CPU 7.
[0008]
[Problems to be solved by the invention]
As described above, in the conventional task management, since all the registers of the CPU 7 are saved and loaded, it takes a lot of time to switch tasks. Also, since the area to be saved is the TCB of each task, the instructions for saving and loading data require a move instruction requiring a large number of clocks (for example, an assembly language "MOV" instruction). Also required a lot of time to switch tasks.
[0009]
For this reason, there is a problem in that a program that requires real-time properties (for example, a program for high-speed traffic control, air traffic control, etc.) has a delay in processing and cannot realize real-time processing.
[0010]
SUMMARY OF THE INVENTION An object of the present invention is to speed up task management processing, particularly, register saving and restoring processing when a system call or interrupt occurs during task execution.
[0011]
[Means for Solving the Problems]
In order to achieve the above object, a task management device according to the present invention is a task management device that manages tasks executed by a processing device having a plurality of registers. When a system call or an interrupt occurs during the execution of a task, a register saving means for storing only the contents of a register used by the task among the plurality of registers in the storage means; And register return means for returning the contents of the register saved by the register save means to a corresponding register among the plurality of registers when the execution of the task is started. .
[0012]
A task management method according to the present invention is a method for managing a task executed by a computer having a processing device having a plurality of registers and a memory, wherein when a system call or an interrupt occurs during execution of the task, the plurality of registers are managed. Only the contents of the registers used by the task are stored in the storage unit, and when the execution of the task is started after the processing of the system call or the interrupt, the contents of the registers stored in the storage unit are stored. , And returning to the corresponding register among the plurality of registers.
[0013]
A task management program according to the present invention causes a computer that executes a task to execute the task management method.
[0014]
Here, the processing device having a plurality of registers may be any of a CPU, a microcomputer, a microprocessor, and the like.
[0015]
According to the present invention, when a system call or an interrupt occurs during the execution of a task, only the contents of the register used by the task among the plurality of registers of the processing unit that executes the task are stored (evacuated) in the storage unit. You. Therefore, the processing amount required for storage is reduced and the processing speed can be improved as compared with the conventional case where all the contents of a plurality of registers are stored.
[0016]
In one embodiment of the present invention, when the system call occurs, the register saving means stores only the contents of a register used by the task among the plurality of registers in the storage means, When the interrupt occurs, all the contents of the plurality of registers or all the contents of the registers except the stack pointer are stored in the storage means.
[0017]
Preferably, the storage means is a push-down stack, and the processing device is configured to store, as an instruction set, a push instruction for storing the contents of the register in the push-down stack and the push instruction stored in the push-down stack. A pop instruction for returning the contents of the register to the register. The register saving means saves the contents of the register by causing the processing device to execute the push instruction. Executes the pop instruction to restore the contents of the register to the register.
[0018]
The push instruction and the pop instruction can be executed with a smaller number of clocks than a data movement instruction (for example, “MOV” in assembler language). Therefore, this can also improve the processing speed.
[0019]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings, but this is merely an example and does not limit the technical scope of the present invention.
[0020]
FIG. 1 is a functional block diagram showing a configuration of a task management device 1 according to one embodiment of the present invention. The task management device 1 includes a register saving unit 2, a request processing unit 3, an execution task determining unit 4, a TCB updating unit 5, a register returning unit 6, and a storage unit 20. The storage unit 20 includes a stack (pushdown stack) 21.
[0021]
When a system call or an interrupt occurs during execution of a task, the register saving unit 2 stores the contents of a predetermined register (described later) of a processing device (CPU, microcomputer, microprocessor, etc.) of the computer executing the task. The data (address, address, etc.) is stored (save, pushed) in the stack 21 of the storage unit 20. The request processing unit 3 executes a system call or an interrupt process after the register contents are saved in the stack 21 by the register saving unit 2.
[0022]
The execution task determination unit 4 determines (selects) a task to be executed next after the processing of the system call or the interrupt by the request processing unit 3. The task executed before the system call or the interrupt may be selected again, or another task may need to be executed by the system call or the interrupt, and this different task may be selected. When another task is selected, the execution task determination unit 4 executes task switching.
[0023]
When the task switching is performed by the execution task determining unit 4, the TCB updating unit 5 is executed after the task control block (TCB: Task Control Block) of the task executed before the task switching and after the task switching. Update the contents of the TCB for the task. When task switching is not performed, the TCB updating unit 5 does not execute this updating process.
[0024]
The register return unit 6 stores (loads and pops) the contents of the predetermined register for the task determined by the execution task determination unit 4 from the stack 21 to the corresponding register of the processing device of the computer that executes the task. Thereafter, the task determined by the execution task determination unit 4 is executed.
[0025]
The task management device 1 is provided, for example, in a computer that executes a task, and can be realized by a program (task management program) as a part of an operating system (OS) of the computer. FIG. 2 shows a part of a configuration of a computer 100 in which the task management device 1 is implemented as a task management program.
[0026]
The computer 100 is a general computer, and includes a CPU 7, a memory (RAM) 15, a ROM (not shown), and the like. The CPU 7, the memory 15, the ROM (not shown), and the like are connected by a system bus (not shown), and the CPU 7 can read data from the memory 15 and the ROM and write data to the memory 15.
[0027]
The CPU 7 has registers such as a register group 10 for temporarily storing data to be processed and addresses, a program counter (PC) 8, and a stack pointer (SP) 9, in addition to an arithmetic unit (ALU) not shown. . The register group 10 has n general-purpose registers (n is an integer of 2 or more). An interrupt signal line (not shown) is input to the CPU 7. The interrupt includes a timer interrupt, an external data reception interrupt (for example, a data reception interrupt from a serial port), and the like.
[0028]
The memory 15 is provided with a task control block (TCB: Task Control Block) for storing information indicating the status of each task and a stack area (push-down stack area) for each task. In FIG. And B, respectively, the areas of TCBs 11 and 13 and stacks 12 and 14 are shown.
[0029]
The stacks 12 and 14 show the stack 21 of FIG. 1 in detail. The tasks A, B, etc. may be, for example, tasks of a program that requires real-time properties (for example, programs for high-speed traffic control, aircraft control, etc.) or tasks of a program that does not require real-time properties. You may.
[0030]
The TCB 11 has various data items such as a task ID, a program start address, a stack start address, a current stack address, a stack size, a priority, a stop cause, and a task state. The TCB 13 has the same data item. In the following, each data item will be described by taking the TCB 11 of the task A as an example, but the following contents are similarly applied to the TCB 13 of the task B and the TCB of another task (not shown).
[0031]
“Task ID” is identification information for uniquely identifying task A from other tasks. The “program start address” is a head address of a storage device (ROM (not shown) or memory 15) in which the program of the task A is stored.
[0032]
“Stack top address” is the top address of the stack 12 of task A. The “current stack address” is a current stack address of the stack 12 of the task A, that is, an address of a memory cell where data is stored when a next push (PUSH) instruction is executed. “Stack size” is the size (for example, the number of bytes) of the stack area allocated to task A.
[0033]
The “priority” is the priority of the task A, and the “stop cause” is the cause of the stop of the task A when the task A has stopped. The cause of this stop is a system call, interrupt, or termination. The “task state” is the current state of the task A, for example, one of RUN, READY, and WAIT.
[0034]
Note that, unlike the TCB of FIG. 4 described in the section of the related art, the storage areas of the registers (PC8, register group 10) other than SP9 are not provided in the TCBs 11 and 13.
[0035]
The memory 15 is also provided with a work area or the like (not shown) in which data or the like being processed is temporarily stored. The OS program including the task management program may be stored in a ROM (not shown), or may be read from the ROM or a hard disk and stored in the memory 15.
[0036]
FIG. 3 is a flowchart showing the flow of processing of the task management device 1 (task management program) in the computer 100. This flowchart also shows the detailed processing of the functional blocks in FIG.
[0037]
First, before describing the processing of the flowchart, prerequisites of the present embodiment will be described. A task program such as tasks A and B and a processing program for a system call (processing request to the OS) are executed after their source program (source code) is described in a predetermined high-level language (for example, C language, C ++ language, etc.). It is assumed that the object program (object code, machine language program) has been compiled by a compiler (for example, a C language or C ++ language compiler). On the other hand, it is assumed that the interrupt processing program is described in assembler language and has been converted to an object program.
[0038]
The compiler generally limits the registers used in the compiled object program to predetermined ones, and does not use all the registers of the CPU 7 in the object program. That is, the registers used in the object program are not all registers of the CPU 7 but some registers. For example, among the registers A1 to An of the register group 10, the registers A1 to Ai (i is an integer smaller than n) are used in the object program.
[0039]
Therefore, when a system call or interrupt processing occurs during the execution of a task and it is necessary to temporarily save the contents of the register that stores the processing data and address of the task, it is limited by the compiler, not all the registers. The task processing status can be saved only by saving the contents of the specified register. Then, the task processing can be resumed only by returning the contents of the predetermined register to the corresponding register of the CPU 7 again. Which register is the predetermined register can be known by checking the compiler.
[0040]
Thus, in the present embodiment, when a system call or an interrupt occurs during execution of a task, only the contents of a predetermined register limited by the compiler (hereinafter, simply referred to as “predetermined register”) are saved and restored. I will make it. As a result, the amount of processing required for saving and restoring is reduced, and the processing can be sped up as compared with the conventional processing that saves and restores the contents of all registers.
[0041]
Since the interrupt processing program is described in the assembler language, it is assumed that various registers are used by the writing user and are not constant. However, even in such a case, there is no problem because the processing data and the address of the task are stored as described above.
[0042]
Further, in the present embodiment, the areas of the memory 15 where the registers (except for the SP9) are temporarily saved are not the TCBs 11 and 13 as in the conventional case but the stacks 12 and 14. A push instruction (PUSH) for writing register contents to the stacks 12 and 14 and a pop instruction (POP) for reading register contents from the stacks 12 and 14 are instructions for writing and reading register contents to and from the TCBs 11 and 13 (for example, The processing is performed with a smaller number of clocks than the movement instruction “MOV”). Therefore, the saving process and the restoring process can be completed with a smaller number of clocks than in the related art by setting the save destination of the register contents to the stack, which can also speed up the process.
[0043]
Hereinafter, the processing of the flowchart in FIG. 3 will be described in detail based on such a premise.
[0044]
First, when a system call or an interrupt occurs during execution, the task management device 1 (the CPU 7 executing the task management program) saves (pushes) the contents of a predetermined register onto the stack of the task being executed (S1). .
[0045]
For example, when a system call or an interrupt occurs during the execution of task A, the contents of registers A1 to Ai of PC 8 and register group 10 are saved as predetermined registers in stack 12 of task A. Thus, the task management device 1 updates the current stack address of the TCB 11 of the task A.
[0046]
Subsequently, the task management device 1 processes a system call or an interrupt request (S2), and after the processing, determines a task to be executed next (S3).
[0047]
If the task is not switched due to the task determination and the task that has been executed is continuously executed (“none” in S4), the task management device 1 determines whether the task has been executed so far. The contents of the predetermined register are loaded (popped) from the stack into the corresponding register of the CPU 7 (S5). In this load processing, the address of the stack from which the contents of the predetermined register should be read is indicated by the current stack address of the TCB. After the loading, the task management device 1 updates the current stack address of the TCB.
[0048]
For example, if the task that has been executed is task A, the contents of PC8 and registers A1 to Ai are loaded into PC8 and registers A1 to Ai of CPU 7 from the current stack address of stack 12 of task A, respectively. You. After that, the current stack address of the TCB 11 of the task A is updated, and the execution of the task A is continued.
[0049]
On the other hand, when the task switching is performed and another task is executed (“Yes” in S4), the task management device 1 sets the TCB of the task executed before the switching and the task TCB of the task executed after the switching. The TCB is updated (S6, S7).
[0050]
For example, when the task B is executed by task switching after the execution of the task A, a system call or an interrupt is written as the cause of the stop of the TCB 11 of the task A, "WAIT" is written in the task state, and the task B is written. "RUN" is written in the task status of the TCB 13 in the "."
[0051]
Thereafter, the task management device 1 reads out the cause of the previous stop of the task executed after the switching from the cause of the stop of the TCB, and determines whether the cause of the stop is a system call, an interrupt, or an end (S9).
[0052]
For example, when the task B is executed by the task switching, the cause of the stop of the TCB 13 of the task B is examined.
[0053]
If the cause of the stop is a system call or an interrupt, the contents of the predetermined register saved at the previous stop are stored in the stack, so the task management device 1 loads these contents into the predetermined register. (S8). On the other hand, if the cause of the termination is termination, there is no need to save the contents of the predetermined register at the time of the stop, and therefore, the contents of the predetermined register are not stored in the stack. , Does not perform load processing. Then, the task after the switch is executed.
[0054]
Such processing is repeated each time a system call or an interrupt occurs during execution of each task.
[0055]
The register saved at the time of a system call and the register saved at the time of an interrupt can be made different. For example, at the time of a system call, the above-mentioned predetermined register can be saved, and at the time of an interrupt, all the registers except SP9 can be saved.
[0056]
FIG. 4 is a flowchart showing a processing flow of the task management device (task management program) 1 when a register to be saved at the time of a system call is different from a register to be saved at the time of an interrupt. The same processes as those in the flowchart of FIG. 3 are denoted by the same reference numerals, and detailed description thereof will be omitted.
[0057]
When a system call or an interrupt occurs during the execution of a task, the task management device 1 determines whether the activation cause is a system call or an interrupt (S11).
[0058]
If the activation cause is a system call, the task management device 1 executes the process of step S1. If the activation cause is an interrupt, the task management device 1 places all registers (PC8 except for SP9) in the stack of the task being executed. And the contents of the registers A1 to An) are saved (S12).
[0059]
Subsequently, the task management device 1 executes the processing of steps S2 to S4. If the task switching is not performed in step S4 (“none” in S4), the same determination as in step S11 is performed on the activation cause. (S13).
[0060]
If the activation cause is a system call, the task management device 1 executes the processing of step S5. If the activation cause is an interrupt, the task management device 1 deletes the SP from the stack of the task that was being executed before the interrupt occurred. The contents of all the registers except for them are loaded into the corresponding registers of the CPU 7 (S14). After that, the task that was being executed is executed again.
[0061]
On the other hand, if the task switching is performed in step S4 (“Yes” in S4), the task management device 1 executes the processing in steps S6 and S7, and then determines the previous stop cause of the switched task by TCB. (S15).
[0062]
When the cause of the stop is a system call ("system call" in S15), the task management device 1 executes the process of step S8 (the process of loading the contents of a predetermined register into a predetermined register). If the cause of the interruption is an interrupt ("interrupt" in S15), the task management device 1 saves the contents of the saved registers since the contents of all registers except SP9 are saved on the stack at the time of the interruption. The data is loaded into the corresponding register of the CPU 7 (S16).
[0063]
On the other hand, if the cause of the termination is termination (“termination” in S15), the register contents are not saved, so that the register contents are not loaded. Then, the task after the switch is executed.
[0064]
Such processing is repeated each time a system call or an interrupt occurs during execution of each task.
[0065]
According to the process shown in the flowchart of FIG. 4, the number of processes required for saving and restoring the registers is reduced as compared with the related art, so that the process can be sped up. Further, since the register is saved to the stack, the processing speed is also improved.
[0066]
Note that, when an interrupt occurs, all registers except for SP9 are saved and then restored. However, saving and restoring processes including SP9 may be executed.
[0067]
【The invention's effect】
According to the present invention, the amount of processing required for task management, particularly the amount of processing required for saving and restoring the contents of registers is reduced, so that the task management processing can be sped up. Further, by using a push instruction and a pop instruction as instructions for executing the save processing and the restore processing of the contents of the register, respectively, the processing is executed with a small number of clocks, whereby the processing can be sped up.
[Brief description of the drawings]
FIG. 1 is a functional block diagram showing a configuration of a task management device according to an embodiment of the present invention.
FIG. 2 shows a part of a configuration of a computer in which a task management device according to an embodiment of the present invention is implemented as a task management program and is mounted.
FIG. 3 is a flowchart showing a processing flow of a task management device (task management program) in the computer.
FIG. 4 is a flowchart showing a processing flow of a task management device (task management program) in the computer.
FIG. 5 shows an outline of a conventional task management process executed on a computer.
[Explanation of symbols]
DESCRIPTION OF SYMBOLS 1 Task management device 2 Register saving unit 6 Register returning unit 20 Storage unit 21 Stack 7 CPU
8 Program counter 9 Stack pointer 10 Register group 15 Memory 11, 13 Task control block 12, 14 Task stack

Claims (5)

複数のレジスタを有する処理装置によって実行されるタスクのタスク管理を行うタスク管理装置において,
前記レジスタの内容を記憶する記憶手段と,
前記タスクの実行中にシステムコールまたは割り込みが発生すると,前記複数のレジスタのうち,該タスクにより使用されるレジスタの内容のみを前記記憶手段に格納するレジスタ退避手段と,
前記システムコールまたは割り込みの処理後,前記タスクの実行が開始される際に,前記レジスタ退避手段により退避されたレジスタの内容を前記複数のレジスタのうち対応するレジスタに復帰させるレジスタ復帰手段と,
を備えていることを特徴とするタスク管理装置。
In a task management device that manages tasks executed by a processing device having a plurality of registers,
Storage means for storing the contents of the register;
When a system call or an interrupt occurs during execution of the task, register saving means for storing only the contents of the register used by the task among the plurality of registers in the storage means;
Register return means for returning the contents of the register saved by the register save means to a corresponding register among the plurality of registers when execution of the task is started after processing of the system call or interrupt;
A task management device comprising:
請求項1において,
前記レジスタ退避手段は,前記システムコールが発生した場合には,前記複数のレジスタのうち,前記タスクにより使用されるレジスタの内容のみを前記記憶手段に格納し,前記割り込みが発生した場合には,前記複数のレジスタのすべて,または,スタックポインタを除くレジスタのすべての内容を前記記憶手段に格納する,
ことを特徴とするタスク管理装置。
In claim 1,
The register saving means stores only the contents of the registers used by the task in the storage means when the system call occurs, and stores the contents of the registers when the interrupt occurs. Storing all the contents of the plurality of registers or all the contents of the registers except the stack pointer in the storage means;
A task management device, characterized in that:
請求項1または2において,
前記記憶手段は,プッシュダウンスタックであり,
前記処理装置は,命令セットとして,前記プッシュダウンスタックに前記レジスタの内容を格納するプッシュ命令と,前記プッシュダウンスタックに格納された前記レジスタの内容を前記レジスタに戻すポップ命令とを有し,
前記レジスタ退避手段は,前記処理装置に前記プッシュ命令を実行させることにより前記レジスタの内容を退避させ,
前記レジスタ復帰手段は,前記処理装置に前記ポップ命令を実行させることにより前記レジスタの内容を前記レジスタに復帰させる,
ことを特徴とするタスク管理装置。
In claim 1 or 2,
The storage means is a push-down stack,
The processing device has, as an instruction set, a push instruction for storing the contents of the register in the push-down stack, and a pop instruction for returning the contents of the register stored in the push-down stack to the register.
The register saving means saves the contents of the register by causing the processing device to execute the push instruction,
The register returning means causes the processing device to execute the pop instruction, thereby returning the contents of the register to the register.
A task management device, characterized in that:
複数のレジスタを有する処理装置とメモリとを有するコンピュータによって実行されるタスクの管理方法において,
前記タスクの実行中にシステムコールまたは割り込みが発生すると,前記複数のレジスタのうち,前記タスクにより使用されるレジスタの内容のみを前記記憶部に格納し,
前記システムコールまたは割り込みの処理後,前記タスクの実行が開始される際に,前記記憶部に格納したレジスタの内容を,前記複数のレジスタのうち対応するレジスタに戻す,
ことを特徴とするタスク管理方法。
In a method for managing a task executed by a computer having a processing device having a plurality of registers and a memory,
When a system call or an interrupt occurs during execution of the task, only the contents of the registers used by the task among the plurality of registers are stored in the storage unit,
When the execution of the task is started after the processing of the system call or the interrupt, the content of the register stored in the storage unit is returned to a corresponding register among the plurality of registers.
A task management method characterized in that:
タスクを実行するコンピュータに,
前記タスクの実行中にシステムコールまたは割り込みが発生すると,前記コンピュータの処理装置が有する複数のレジスタのうち,前記タスクによって使用されるレジスタの内容のみを前記コンピュータが有するメモリに格納する手順と,
前記システムコールまたは割り込みの処理後,前記タスクの実行が開始される際に,前記メモリに格納されたレジスタの内容を,前記処理装置の複数のレジスタのうち,対応するレジスタに戻す手順と,
を実行させるためのタスク管理プログラム。
On the computer that executes the task,
When a system call or an interrupt occurs during the execution of the task, a procedure of storing only the contents of registers used by the task in a memory of the computer among a plurality of registers of the processing unit of the computer;
Returning the contents of the register stored in the memory to the corresponding register among the plurality of registers of the processing device when the execution of the task is started after the processing of the system call or the interrupt;
A task management program for running
JP2002175727A 2002-06-17 2002-06-17 Task managing device Withdrawn JP2004021610A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002175727A JP2004021610A (en) 2002-06-17 2002-06-17 Task managing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002175727A JP2004021610A (en) 2002-06-17 2002-06-17 Task managing device

Publications (1)

Publication Number Publication Date
JP2004021610A true JP2004021610A (en) 2004-01-22

Family

ID=31174294

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002175727A Withdrawn JP2004021610A (en) 2002-06-17 2002-06-17 Task managing device

Country Status (1)

Country Link
JP (1) JP2004021610A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009063536A1 (en) * 2007-11-16 2009-05-22 Netcleus Systems Corporation Task processing device
US9448844B2 (en) 2009-11-13 2016-09-20 Samsung Electronics Co., Ltd. Computing system and method controlling memory of computing system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009063536A1 (en) * 2007-11-16 2009-05-22 Netcleus Systems Corporation Task processing device
US9448844B2 (en) 2009-11-13 2016-09-20 Samsung Electronics Co., Ltd. Computing system and method controlling memory of computing system

Similar Documents

Publication Publication Date Title
US5701493A (en) Exception handling method and apparatus in data processing systems
US5634046A (en) General purpose use of a stack pointer register
JP4871948B2 (en) Virtual computer system, hypervisor in virtual computer system, and scheduling method in virtual computer system
US6209085B1 (en) Method and apparatus for performing process switching in multiprocessor computer systems
US6904517B2 (en) Data processing apparatus and method for saving return state
KR20130012126A (en) Apparatus and method for handling exception events
US4851992A (en) Register/saving/restoring system for saving and restoring data in a register of a slave processor
US20060277396A1 (en) Memory operations in microprocessors with multiple execution modes and register files
US20030120712A1 (en) Task context switching RTOS
US20050125801A1 (en) Method and apparartus for context switching in computer operating systems
US20030074390A1 (en) Hardware to support non-blocking synchronization
JP2004021610A (en) Task managing device
JPH0916409A (en) Microcomputer
JP3991443B2 (en) Task switching method and data processing apparatus
JPS603229B2 (en) Information processing method
JP2004287618A (en) Starting control method of operating system, program making computer execute its method, and starting control device of operating system
JP3163196B2 (en) Instruction interruption information storage control method in virtual storage control
JP2003505758A (en) Processor architecture
US5778207A (en) Assisting operating-system interrupts using application-based processing
JPH076045A (en) Memory managing method of multi-processing system
JP2591818B2 (en) Auxiliary function selection control method
JP2002268897A (en) Thread managing method and information processor
JP4116752B2 (en) Computer and its control method
JPH11134202A (en) Task switching device
JPH06149595A (en) Computer system and its task switching system

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20050906