Warning: copy(.htaccess): failed to open stream: Permission denied in /home/jp321/public_html/header.php on line 8
スタック切り換え制御装置 - 松下電器産業株式会社
米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 松下電器産業株式会社

発明の名称 スタック切り換え制御装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開平7−78092
公開日 平成7年(1995)3月20日
出願番号 特願平5−223249
出願日 平成5年(1993)9月8日
代理人 【弁理士】
【氏名又は名称】小鍜治 明 (外2名)
発明者 大石 昇平
要約 目的
リアルタイムオペレーティングシステムのなかのスタックの切り換え制御において、各タスクに対応したスタックデータを格納するための領域(スタック領域)の空き領域を共有化することで、システム全体として確保しなければならないスタック領域の容量を少なくし、メモリ資源の有効活用を図る。

構成
共通の空き領域5aを有したスタック格納手段5に各タスクのスタック領域11〜14を設けており、スタックを切り換える場合には、スタックポインタ4のデータを切り換える代わりにスタックデータ11〜14のいずれかを移動し、起動タスクのスタックと共通の空き領域5aを隣接させてスタックデータの出し入れを行う。
特許請求の範囲
【請求項1】複数のタスクのうち起動中のタスクを他のタスクに切り換えるタスク切り換え制御手段と、各タスクに対応したスタックデータを集めて共通に格納し、かつ共通の空き領域を有したスタック格納手段と、前記スタックデータを前記スタック格納手段内で移動させるスタックデータ移動制御手段と、少なくとも前記各タスクに対応したスタックデータのアドレス情報を記憶するスタック情報記憶手段とを備え、前記タスク切り換え制御手段によるタスクの切り換えに応じて起動を開始するタスクに対応するスタックを前記スタック切り換え制御手段により前記共通の空き領域の隣りに移動させるスタック切り換え制御装置。
発明の詳細な説明
【0001】
【産業上の利用分野】本発明は、リアルタイムオペレーティング装置(リアルタイムOS)のなかでも、特にスタックの切り換え制御をする装置に関するものである。
【0002】
【従来の技術】通常のリアルタイムOSでは、プログラムを独立した仕事の単位ごとに分けることができる。この単位当りの仕事のことをタスクという。一つのタスクを実行し、次のタスクへ切り換えてそのタスクを実行するというように、タスクを切り換えながら順に起動することにより、プログラムを実行することができる。
【0003】これらの各々のタスクは個別にスタックという記憶手段を持っており、アドレス情報や各種のデータを格納することができる。たとえば、起動タスクを切り換える場合にタスクを途中で停止するが、再びこのタスクを起動するときには停止した続きからタスクを実行する。この再起動時の開始点となるアドレスをスタックに格納することにより、タスク切り換えをスムーズに行うことができる。したがって、起動タスクが切り換えられると、それに応じてスタックも切り換えられる。スタックの切り換えは、スタックポインタを切り換えることにより行う。スタックポインタは、スタックデータの出し入れを行う位置(アドレス)を指し示しているので、スタックポインタを起動タスク(これから実行しようとするタスク)に対応するスタックのアドレスに移動することにより、スタックへのデータの出し入れが可能になる。
【0004】以下、従来のリアルタイムOSにおけるスタック切り換え制御装置について説明する。
【0005】図3は、従来のスタック切り換え制御装置の構成を示すブロック図である。図において、101は起動中のタスクを他のタスクに切り換えるためのタスク切り換え制御部、102はスタックポインタを移動するためのスタックポインタ切り換え制御部、103はスタックアドレスの情報を記憶しているスタック情報記憶部、104はスタックポインタである。
【0006】このように構成されたスタック切り換え制御装置について、その動作を説明する。
【0007】まず、タスク切り換え要求が発生すると、タスク切り換え制御部101がタスク切り換え要求を受け付ける。次に、タスク切り換え制御部101は起動タスクと停止タスクの情報をスタックポインタ切り換え制御部102に送る。次に、スタックポインタ切り換え制御部102は、スタックポインタ104のデータを停止タスクのスタックアドレスとしてスタック情報記憶部103に記憶させる。次に、スタックポインタ切り換え制御部102はスタック情報記憶部103から起動タスクのスタックアドレスを入力し、スタックポインタ104のデータを起動タスクのスタックアドレスに切り換える。その結果、使用するスタック領域が起動タスクのスタック領域に切り換わる。
【0008】スタックの切り換え動作について図4を用いてさらに詳しく説明する。図4はタスク1からタスク3へ切り換えた場合の例であり、同図(a)はタスク切り換え前のスタック領域を示し、また同図(b)はタスク切り換え後のスタック領域を示している。
【0009】図4に示すように、タスク1〜タスク4の各タスクはそれぞれ空き領域を持っている。この空き領域の大きさは、各タスクごとに設定されており、タスクを実行した場合にスタックデータ量が最大になっても格納できるように設定している。
【0010】図4(a)に示すように、タスク切り換え前には、スタックポインタ104は起動中のタスクであるタスク1のスタックアドレスを指し示している。これによってタスク1のスタック領域へのデータの出し入れが自由に行える。次に、タスク1からタスク3に切り換えると、図4(b)に示すようにスタックポインタ104はタスク3のスタックアドレスを指し示す。これによってタスク3のスタック領域へのデータの出し入れが自由に行えるようになる。
【0011】
【発明が解決しようとする課題】しかしながら、上記従来の構成では、各々のタスクに個別に空き領域を持たせなければならないので、タスク単位に必要最大容量のスタック領域を確保しなければならず、装置全体として大容量のスタック領域を必要とする。その詳細について図5を用いて説明する。
【0012】図5は、三つのタスクを実行した場合の各タスクごとのスタック使用容量と、装置全体のスタック使用容量の時間変化との関係の一例を示す。縦軸が容量(バイト)を示し、横軸が時間を示す。図5に示すように、各スタック使用容量は時間とともに変化し、また、この変化の仕方は各タスクごとに異なっている。同図の場合、各タスクのスタック最大使用容量は、タスク1では5バイト、タスク2では4バイト、そしてタスク3では3バイトになっている。従来ではこれらの各タスクごとの最大使用容量を想定してスタック空き領域を設けていたので、装置全体としては(5+4+3)=12バイトを空き領域として確保していた。しかし、図5にも示すように、これらのスタック使用容量が同時に最大になることはほとんどなく、装置全体としては12バイトもの容量を必要としない。すなわち、12バイトよりも小さい容量(図5の場合は8バイト)を確保しておくだけで充分である。したがって、従来のように各タスクごとに最大使用容量のスタック領域を確保しておくことは、装置全体としてはスタック領域を必要以上にとっていることになり、メモリ資源を効率よく活用できていないことになる。
【0013】本発明は、各スタック領域の空き領域を共有化することによって、装置全体として確保しなければならないスタック領域の容量を少なくし、メモリ資源の有効活用を図ることを目的としている。
【0014】
【課題を解決するための手段】この目的を達成するために、本発明のスタック切り換え制御装置は、共通の空き領域を有したスタック格納手段に各タスクのスタック領域を設けており、スタックを切り換える場合には、スタックポインタのデータを切り換える代わりにスタックデータを移動し、起動タスクのスタックと共通の空き領域を隣接させてスタックデータの出し入れを行うものである。
【0015】
【作用】この構成によって、起動タスクが切り換えられた場合には、この起動タスクに対応するスタックデータをスタックポインタの指すスタックアドレスに移動できるため、各タスク間で一つの空き領域を共有することができ、この共有の空き領域を用いてデータの出し入れをすることができる。
【0016】
【実施例】以下、本発明の実施例について、図面を参照しながら説明する。
【0017】図1は本発明の一実施例におけるスタック切り換え制御装置の構成を示すブロック図である。同図において、1は起動中のタスクを他のタスクに切り換えるためのタスク切り換え制御部(タスク切り換え制御手段)、2はスタックデータ移動制御部(スタックデータ移動制御手段)であり、スタック領域内で各スタックの位置を入れ換える。3はスタックアドレスの情報を記憶しているスタック情報記憶部(スタック情報記憶手段)、4はスタック領域の1箇所を指し示しているスタックポインタであり、このスタックポインタで指し示された位置からデータの出し入れを行う。5は各タスクに対応したスタックがまとめて格納されているスタック領域(スタック格納手段)であり、未だデータが入っていない空き領域5aと、すでにデータが入っている領域であるスタックデータ群5bとで構成されている。空き領域5aとスタックデータ群5bとの境界アドレス6は、スタックデータの格納されている量に応じて変化する。この境界アドレス6をスタックポインタ4がつねに指し示している。
【0018】次にスタック領域5について図2を用いてさらに詳しく説明する。図2は起動タスクをタスク1からタスク3ヘ切り換えた場合を示しており、図2(a)はタスク切り換え前のスタック領域を示し、また図2(b)はタスク切り換え後のスタック領域を示す。スタック領域5のうちのスタックデータ群5bはタスク1〜タスク4の各タスクに対応したスタックデータに分かれており(図中では11〜14)、これらのスタックデータには従来のように個別の空き領域は設けられていない。その代わりに共通の空き領域5aが設けられている。
【0019】図2(a)に示すタスク切り換え前においては、タスク1が起動中であるのでこのタスク1に対応したスタックデータ11が空き領域5aに隣接している。共通の空き領域5aとスタックデータ11の境界のアドレス6をスタックポインタ4が指し示しており、ここからデータの出し入れを行うことができる。すなわち、データを取り込む場合には、共通の空き領域5a中に取り込んでこれをスタックデータ11の一部とする。また、データを取り出す場合には、スタックデータ11から取り出す。これによって共通の空き領域5aが大きくなる。
【0020】図2(b)に示すタスク切り換え後においては、タスク3が起動タスクとなるので、このタスク3に対応したスタックデータ13が空き領域5aに隣接し、スタックデータ13からのデータの出し入れが可能となる。
【0021】このように、本発明ではタスク切り換えの前後において、スタックポインタ4は移動せずにスタックデータが移動する。すなわち、従来ではタスク切り換えの前後でデータの位置を固定したままでデータの取り出し位置(スタックポインタ)を切り換えていたが、本発明では、データの取り出し位置(スタックポインタ)を固定したままデータの位置を入れ換えてデータの出し入れを行っている。
【0022】以上のように構成されたスタックデータ切り換え制御装置について、その動作を説明する。
【0023】まず、タスク切り換え要求が発生すると、タスク切り換え制御部1がタスク切り換え要求を受け付ける。次に、タスク切り換え制御部1は起動タスクと停止タスクの情報をスタックデータ移動制御部2に送る。次に、スタックデータ移動制御部2はスタック情報記憶部3から各タスクのスタックアドレスとスタックデータサイズの情報を入力する。次に、スタックデータ移動制御部2はスタック領域5のスタックデータ群5b内で各スタックデータを移動させて、起動タスクに対応するスタックデータをスタックポインタ4の指すスタックアドレスに持ってくる。次に、スタックデータ移動制御部2は移動した各スタックデータに合わせて、各スタックアドレスとスタックデータサイズの情報をスタック情報記憶部3に記憶させる。
【0024】スタック領域5内の具体的な動作について図2を用いて説明する。まず、図2(a)に示すようにタスク切り換え前では、タスク4のスタックデータ14がもっとも深い位置に存在し、その次の深い位置にタスク3のスタックデータ13が存在し、その次の深い位置にタスク2のスタックデータ12が存在する。そして、もっとも浅い位置で、かつスタックポインタ4の指すスタックアドレスに存在するのが、現在起動中のタスク1のスタックデータ11である。このスタック状態でタスク1からタスク3に起動タスクが切り換えられた場合、各タスクのスタックデータを図2(b)に示すスタック領域のように移動する。
【0025】まず、タスク3のスタックデータ13をスタックポインタ4の指すスタックアドレスの位置に移動する。次に、スタックデータ13よりも浅い位置に存在したタスク1のスタックデータ11およびタスク2のスタックデータ12を、スタックデータ13の代わりに下へと移動する。一方、スタックデータ13よりも深い位置に存在したタスク4のスタックデータ14は移動せずにそのままとする。
【0026】以上のようにスタックポインタのデータを切り換えずに各タスクのスタックデータを移動することにより、各タスク間で一つの空き領域を共用することができる。したがって、装置全体として必要なスタック領域を確保しておくだけでよく、各タスクごとにスタック領域を確保することにより生じる無駄を省くことができる。
【0027】
【発明の効果】本発明は、各タスクのスタックデータを移動できるスタックデータ移動制御部を設けることにより、各タスク間で一つのスタック領域を共用でき、スタック領域として確保しなければならない容量を少なくすることができる優れたスタック切り換え制御装置を実現するものである。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013