(57)【要約】【課題】システムコールの要求によるタスクの中断時に記憶手段に格納されるコンテキスト情報の小容量化，及びそのコンテキスト情報の前記記憶手段への格納処理の迅速化を実現することのできるオペレーティングシステム及びこれが搭載された電子機器を提供すること。【解決手段】実行中のタスクにおいて予め定められた複数のタスクに共通のプログラムアドレスからシステムコールが要求された場合に，該実行中のタスクに関するコンテキスト情報であって前記共通のプログラムアドレスを含まない簡略コンテキスト情報を第１の記憶手段に格納し，前記システムコールに対応する処理の実行後に，該システムコールにより中断した前記タスクの実行を，前記共通のプログラムアドレスと前記第１の記憶手段に格納された前記簡略コンテキスト情報とに基づいて再開させるように構成する。【選択図】図３
2007094941.tif 000002
【特許請求の範囲】
【請求項１】
実行中のタスクから要求されるシステムコールに応じて該実行中のタスクを中断し，前記システムコールに対応する処理を実行するオペレーティングシステムであって，
前記実行中のタスクにおいて予め定められた複数のタスクに共通のプログラムアドレスから前記システムコールが要求された場合に，該実行中のタスクに関するコンテキスト情報であって前記共通のプログラムアドレスを含まない簡略コンテキスト情報を第１の記憶手段に格納する簡略コンテキスト情報格納処理と，
前記システムコールに対応する処理の実行後に，該システムコールにより中断した前記タスクの実行を，前記共通のプログラムアドレスと前記第１の記憶手段に格納された前記簡略コンテキスト情報とに基づいて再開させるタスク再開処理と，
を実行してなることを特徴とするオペレーティングシステム。
【請求項２】
前記タスク再開処理において，前記共通のプログラムアドレスが予め記憶された前記複数のタスクに共通の第２の記憶手段から前記共通のプログラムアドレスが取得されてなる請求項１に記載のオペレーティングシステム。
【請求項３】
請求項１又は２のいずれかに記載のオペレーティングシステムが搭載された電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，電子計算機においてタスクの管理を行うオペレーティングシステムに関し，特に，複数のタスクの並行処理を実行するマルチタスク機能を有するオペレーティングシステムに関するものである。
【背景技術】
【０００２】
プリンタ，複写機，デジタルカメラ，携帯電話などの電子機器には，小規模なＣＰＵやメモリ（主記憶装置）等を有するコンピュータシステム（以下「組み込みシステム」という）が組み込まれている。そして，この組み込みシステムにおいてＣＰＵによって実行されるアプリケーションの各タスク（プロセス）は，オペレーティングシステム（以下「ＯＳ」という）によって管理される。
また，一般にマルチタスクＯＳと呼ばれるＯＳは，タスクスケジューリング機能やシステムコール機能などを実現するカーネルを有しており，これらの機能によって複数のタスクを見かけ上並行して実行させる（例えば，特許文献１参照）。
【０００３】
ここで，図４を用いて，従来のＯＳが搭載されたシステムＹについて説明する。
図４に示すように，前記システムＹは，ＲＯＭ１０１，ＣＰＵ１０２及びＲＡＭ１０３を備えて概略構成されている。前記ＲＯＭ１０１には，前記ＣＰＵ１０２によって実行されるＯＳやアプリケーションなどのプログラムが記憶されている。
前記ＲＡＭ１０３には，前記アプリケーションに含まれる複数のタスク１１１〜１１３のコンテキスト情報を格納するためのＴＣＢ１２１〜１２３が確保されている。前記ＴＣＢ１２１〜１２３に格納されるコンテキスト情報には，前記ＣＰＵ１０２内のレジスタによって管理されるプログラムカウンタ（ＰＣ）やステータスレジスタ（ＳＲ），各種の演算に利用される汎用レジスタ（Ｒ０，Ｒ１，…Ｒ７）などの情報が含まれている。
このように構成された前記システムＹでは，前記ＣＰＵ１０２により実行中のタスク１１１においてシステムコールが要求されると，そのタスク１１１のコンテキスト情報が前記ＣＰＵ１０２内のレジスタから前記ＲＡＭ１０３のＴＣＢ１２１に退避され，前記システムコールに対応する処理（例えば，タスクの生成・起動・終了，セマフォやイベントフラグの生成・管理など）が実行される。
そして，前記システムコールに対応する処理が終了すると，前記ＲＡＭ１０３のＴＣＢ１２１に格納された前記タスク１１１のコンテキスト情報が読み出され，そのコンテキスト情報に含まれた前記プログラムアドレスに従ってタスク１１１が再開される。
ここで，前記コンテキスト情報に含まれる前記プログラムカウンタ（ＰＣ）は，前記タスク１１１〜１１３の各々においてシステムコールが要求されるプログラムアドレスが異なるために，前記システムコールに対応する処理の次工程の処理の開始に必要なものであって，システムコールが要求されたプログラムアドレスを示す。なお，前記システムコールを要求したタスク，即ちシステムコールに対応する処理の実行後に再開するべきタスクがタスク１１１〜１１３のいずれであるかについては，前記マルチタスクＯＳのタスクスケジューリング機能により管理されている。
【特許文献１】特開２００２−２２９８０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで，前記ＴＣＢ１２１〜１２３に格納されるコンテキスト情報の情報量が多いほど，前記ＲＡＭ１０３に大きな記憶領域を確保しておく必要があるため，前記コンテキスト情報の情報量は可能な限り少ないことが望ましい。特に，組み込みシステムにおいては，一般に大容量のメモリを有するパーソナルコンピュータ等とは異なり，メモリの小容量化が強く望まれるという背景がある。さらに，前記コンテキスト情報の情報量が多いほど，前記コンテキスト情報を前記ＴＣＢ１２１〜１２３に格納するための処理に費やす時間が長くなるため，処理速度向上の観点からも前記コンテキスト情報の情報量は可能な限り少ないことが望ましい。
従って，本発明は上記事情に鑑みてなされたものであり，その目的とするところは，システムコールの要求によるタスクの中断時に記憶手段に格納されるコンテキスト情報の小容量化，及びそのコンテキスト情報の前記記憶手段への格納処理の迅速化を実現することのできるオペレーティングシステム及びこれが搭載された電子機器を提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するために本発明は，実行中のタスクから要求されるシステムコールに応じて該実行中のタスクを中断し，前記システムコールに対応する処理を実行するオペレーティングシステムに適用されるものであって，前記実行中のタスクにおいて予め定められた複数のタスクに共通のプログラムアドレスから前記システムコールが要求された場合に，該実行中のタスクに関するコンテキスト情報であって前記共通のプログラムアドレスを含まない簡略コンテキスト情報を第１の記憶手段に格納する簡略コンテキスト情報格納処理と，前記システムコールに対応する処理の実行後に，該システムコールにより中断した前記タスクの実行を，前記共通のプログラムアドレスと前記第１の記憶手段に格納された前記簡略コンテキスト情報とに基づいて再開させるタスク再開処理とを実行するように構成される。
本発明によれば，前記システムコールの要求に応じて実行中のタスクを中断するときに，前記共通のプログラムアドレスを除くコンテキスト情報（前記簡略コンテキスト情報）が前記第１の記憶手段に格納されるため，従来に比べて前記第１の記憶手段の小容量化を実現することができる。また，前記第１の記憶手段に格納される前記簡略コンテキスト情報の情報量が，従来に比べて前記共通のプログラムアドレスを除く分だけ削減されているため，該簡略コンテキスト情報を前記第１の記憶手段へ格納するための処理速度も向上する。
より具体的には，前記タスク再開処理において，前記共通のプログラムアドレスが予め記憶された前記複数のタスクに共通の第２の記憶手段から前記共通のプログラムアドレスが取得されることが考えられる。
また，本発明は，前記オペレーティングシステムが搭載された電子機器として捉えてもよい。
【発明の効果】
【０００６】
本発明によれば，前記システムコールの要求に応じて実行中のタスクを中断するときに，前記共通のプログラムアドレスを除くコンテキスト情報（前記簡略コンテキスト情報）が前記第１の記憶手段に格納されるため，従来に比べて前記第１の記憶手段の小容量化を実現することができる。また，前記第１の記憶手段に格納される前記簡略コンテキスト情報の情報量が，従来に比べて前記共通のプログラムアドレスを除く分だけ削減されているため，該簡略コンテキスト情報を前記第１の記憶手段へ格納するための処理速度も向上する。
【発明を実施するための最良の形態】
【０００７】
以下添付図面を参照しながら，本発明の実施の形態について説明し，本発明の理解に供する。尚，以下の実施の形態は，本発明を具体化した一例であって，本発明の技術的範囲を限定する性格のものではない。
ここに，図１は本発明の実施の形態に係るオペレーティングシステムが搭載されたシステムＸの概略構成図，図２は前記システムＸで実行されるアプリケーションの一例を示す図，図３は前記システムＸで実行されるシステムコール処理の手順の一例を説明するためのフローチャートである。
まず，図１を用いて，本発明の実施の形態に係るオペレーティングシステム（以下「ＯＳ」と略称する）が搭載されたシステムＸの概略構成について説明する。前記システムＸは，プリンタ装置，複写機，デジタルカメラ，携帯電話などの電子機器に実装されて，該電子機器を制御する組み込みシステムの一例である。
図１に示すように，前記システムＸは，ＯＳ及びアプリケーションなどのプログラムや，後述するシステムコール番地（システムコールが要求されるプログラムアドレスに相当）などの各種の情報が格納されたＲＯＭ１（第２の記憶手段の一例）と，該ＲＯＭ１に格納されたプログラムを実行することにより当該システムＸが搭載された電子機器を制御するＣＰＵ２と，該ＣＰＵ２によって実行される後述のシステムコール処理（図３のフローチャート参照）においてコンテキスト情報の読み書きが行われるＲＡＭ３（第１の記憶手段の一例）とを備えて構成されている。前記ＲＡＭ３には，前記アプリケーションに含まれる複数のタスク１１〜１３のコンテキスト情報を，前記ＣＰＵ２内のレジスタから退避するためのＴＣＢ２１〜２３が確保されている。なお，前記ＴＣＢ２１〜２３は，例えば，前記システムＸにおいて初めに前記タスク１１〜１３の実行が開始されたときに，前記ＲＡＭ３に確保されるものである。
【０００８】
このように構成された前記システムＸでは，前記タスク１１〜１３のいずれかのタスクにおいてシステムコールが要求された場合，その実行中のタスクのコンテキスト情報が前記ＲＡＭ３に退避されて該タスクが中断された後，要求されたシステムコールに対応する処理（例えば，タスクの生成・起動・終了，セマフォやイベントフラグの生成・管理など）が実行される。
ここで，前述したように，従来のＯＳが搭載されたシステムＹ（図４参照）では，前記タスク１１１〜１１３の各々においてシステムコールが要求されるプログラムアドレスが異なるため，そのタスク１１１〜１１３の中断時には，システムコールに対応する処理の次工程の処理を開始するために必要なプログラムカウンタ（ＰＣ），即ちシステムコールが要求されたプログラムアドレスを含むコンテキスト情報が前記ＲＡＭ１０３に退避される。
しかし，前記システムＸで実行されるアプリケーションでは，前記タスク１１〜１３のいずれのタスクにおいても，前記ＣＰＵ２のレジスタで管理されるプログラムカウンタ（ＰＣ）が，予め定められた各タスクに共通のプログラムアドレスであるシステムコール番地となる状態でのみシステムコールの要求が行われる。なお，前記したように前記システムコール番地は，前記ＲＯＭ１に予め記憶されている。
【０００９】
ここで，図２を用いて，システムコールの要求が常に同一のプログラムアドレスであるシステムコール番地から行われる前記アプリケーションの一例について説明する。なお，図２に示すプログラムはＣ言語による記述であるが，これに限られるものではない。
図２に示すように，前記ＲＯＭ１に記憶されたアプリケーションのプログラムには，タスク１１〜１３及びこれらに共通する共通ライブラリが含まれている。前記タスク１１〜１３各々は，プログラムアドレス１０００番地，２０００番地，３０００番地から開始され，前記共通ライブラリは，プログラムアドレス４０００番地，５０００番地，６０００番地のいずれかから開始される。
このアプリケーションでは，例えばタスク１１におけるプログラムアドレス１０１０番地のｓｙｓｃａｌｌＡ（）の関数によって，プログラムアドレス４０００番地から開始される前記共通ライブラリのｓｙｓｃａｌｌＡ（）に処理が移行される。このｓｙｓｃａｌｌＡ（）では，プログラムアドレス４０１０番地においてｓｙｓｃａｌｌ（１）の関数によって，プログラムアドレス６０００番地から開始されるｓｙｓｃａｌｌ（）に処理が移行される。ここで，前記ｓｙｓｃａｌｌ（１）は，システムコールの引数を“１”に設定するものである。なお，前記引数“１”は，例えば他のタスクへのデータ送信を示すものである。
続いて，前記ｓｙｓｃａｌｌ（）では，プログラムアドレス６０１０番地においてａｓｍ（“ｔｒａｐ”）の関数によって，システムコールが要求される。これにより，前記システムＸでは，前記タスク１１から要求されたシステムコールに対応する処理，ここでは他のタスクへのデータ送信処理が前記ＣＰＵ２によって実行される。
【００１０】
また，前記アプリケーションでは，前記タスク１２におけるプログラムアドレス２０１０番地のｓｙｓｃａｌｌＢ（）の関数によって，プログラムアドレス５０００番地から開始される前記共通ライブラリのｓｙｓｃａｌｌＢ（）に処理が移行され，プログラムアドレス５０１０番地においてｓｙｓｃａｌｌ（２）の関数によって，プログラムアドレス６０００番地に移行して，プログラムアドレス６０１０番地においてシステムコールを要求するａｓｍ（“ｔｒａｐ”）が実行される。ここで，前記ｓｙｓｃａｌｌ（２）は，システムコールの引数を“２”に設定するものである。なお，前記引数“２”は，例えば他のタスクからのデータ受信を示すものである。
なお，前記タスク１３についても同様にシステムコールが要求される。
即ち，前記アプリケーションでは，前記タスク１１〜１３のいずれにおいても，前記ＣＰＵ１０２内のレジスタで管理されるプログラムカウンタ（ＰＣ）が同一の６０１０番地となる状態で，システムコールが要求される。この６０１０番地が前記システムコール番地に相当し，前記ＲＯＭ１に予め記憶されている。
【００１１】
このように前記システムＸでは，システムコールが要求されるプログラムアドレスであるシステムコール番地が，複数の前記タスク１１〜１３において共通であるため，前記ＯＳに従って実行される後述のシステムコール処理（図３のフローチャート参照）において，前記タスク１１〜１３の中断時に前記ＲＡＭ３に退避されるコンテキスト情報から前記プログラムカウンタ（ＰＣ）を削減することが可能である。
以下，図３のフローチャートを用いて，前記ＣＰＵ２によって前記ＯＳに従って実行されるシステムコール処理の手順の一例について説明する。なお，図示するＳ１，Ｓ２，…は処理手順（ステップ）番号を示している。
【００１２】
図３のフローチャートに示すように，ステップＳ１では，前記タスク１１〜１３のいずれかのタスクの実行中にシステムコールが要求された否かが前記ＣＰＵ２によって判断される。ここで，前記システムコールが要求されていないと判断されている間（Ｓ１のＮｏ側）は，前記タスク１１〜１３のいずれかのタスクが実行されるが，前記システムコールが要求されたと判断されると（Ｓ１のＹｅｓ側），処理はステップＳ２に移行する。ここでは，前記タスク１１（図２参照）の実行中にシステムコールが要求されたと仮定する。したがって，処理はステップＳ２に移行する。
【００１３】
そして，ステップＳ２では，前記ＣＰＵ２内のレジスタで管理された前記タスク１１のコンテキスト情報のうち，プログラムカウンタ（ＰＣ）を除くステータスレジスタ（ＳＲ）や汎用レジスタ（Ｒ０〜Ｒ７）などの情報（以下，「簡略コンテキスト情報」という）が，前記ＣＰＵ２内部のレジスタから前記ＲＡＭ３のＴＣＢ２１に退避される簡略コンテキスト情報格納処理が前記ＣＰＵ２によって実行される。このとき，前記簡略コンテキスト情報格納処理は，従来のように前記プログラムカウンタ（ＰＣ）を含むコンテキスト情報を退避する場合に比べて，前記プログラムカウンタ（ＰＣ）が含まれていない分だけ迅速に行われる。
【００１４】
前記タスク１１の簡略コンテキスト情報が退避されると，該タスク１１の処理は中断され，続くステップＳ３において，前記タスク１１から要求されたシステムコールに対応する処理，例えば，他のタスクへのデータ送信の処理が前記ＣＰＵ２によって実行される。
その後，前記システムコールに対応する処理が終了すると，処理はステップＳ４に移行して，前記ＯＳのタスクスケジュール機能によって，次に実行するべきタスクを選定して切り替えるタスクスケジューリングが実行される。ここでは，前記タスク１１が選定されたと仮定する。
【００１５】
続くステップＳ５では，前記ステップＳ２において前記ＲＡＭ３のＴＣＢ２１に退避された前記タスク１１の簡略コンテキスト情報が読み出される。ここで，前記したように前記ＴＣＢ２１に退避された簡略コンテキスト情報には，前記システムコールが要求されたときのプログラムアドレスを示すプログラムカウンタ（前記システムコール番地）が含まれていない。
そのため，当該システムコール処理においては，ステップＳ６において，前記ＲＯＭ１に記憶された前記システムコール番地を取得するべく，前記ＣＰＵ２によって前記ＲＯＭ１から前記システムコール番地が読み出される。
これにより，続くステップＳ７では，前記簡略コンテキスト情報及び前記システムコール番地に基づいて，前記システムコールに対応する処理の次工程の処理が前記ＣＰＵ２によって実行される。具体的には，前記システムコール番地の次の番地をプログラムの開始（再開）アドレスとして前記タスク１１の実行を再開するタスク再開処理が実行される。なお，前記タスク再開処理は，前記システムコールに対応する処理の終了直後に実行されるとは限らない。
【００１６】
このように，前記システムＸでは，前記タスク１１〜１３の各々においてシステムコールが要求されるプログラムアドレスが共通であるため，前記システムコールに対応する処理が実行された後に，前記ＲＡＭ３のＴＣＢ２１に格納された簡略コンテキスト情報及び前記ＲＯＭ１に記憶されたシステムコール番地が読み出されることによって，前記タスク１１から要求されたシステムコールに対応する処理の次工程の処理を開始すること，即ち中断したタスクの実行をその続きから再開すること等が可能である。
したがって，前記ＯＳが搭載された前記システムＸでは，前記タスク１１〜１３のいずれかのタスクからシステムコールが要求されて，該タスクを中断する場合であっても，そのシステムコールが要求されたときのプログラムアドレスをコンテキスト情報に含めて前記ＲＡＭ３のＴＣＢ１１〜１３に格納する必要がないため，該ＴＣＢ１１〜１３の各々のために確保するべき記憶領域を削減することができ，ひいては前記ＲＡＭ３の小容量化を実現することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態に係るオペレーティングシステムが搭載されたシステムの概略構成図。
【図２】本発明の実施の形態に係るオペレーティングシステムが搭載されたシステムで実行されるアプリケーションの一例を示す図
【図３】本発明の実施の形態に係るオペレーティングシステムが搭載されたシステムで実行されるシステムコール処理の手順の一例を説明するためのフローチャート。
【図４】従来のオペレーティングシステムが搭載されたシステムの概略構成図。
【符号の説明】
【００１８】
１，１０１…ＲＯＭ
２，１０２…ＣＰＵ
３，１０３…ＲＡＭ
１１〜１３，１１１〜１１３…タスク
２１〜２３，１２１〜１２３…タスクコントロールブロック（ＴＣＢ）
Ｘ，Ｙ…システム
【図１】
2007094941.tif 000003
【図２】
2007094941.tif 000004
【図３】
2007094941.tif 000005
【図４】
2007094941.tif 000006