JPH0736713A - プログラム実行管理装置 - Google Patents

プログラム実行管理装置

Info

Publication number
JPH0736713A
JPH0736713A JP17863793A JP17863793A JPH0736713A JP H0736713 A JPH0736713 A JP H0736713A JP 17863793 A JP17863793 A JP 17863793A JP 17863793 A JP17863793 A JP 17863793A JP H0736713 A JPH0736713 A JP H0736713A
Authority
JP
Japan
Prior art keywords
thread
authority
information
program
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP17863793A
Other languages
English (en)
Other versions
JP3585510B2 (ja
Inventor
Atsushi Fukumoto
淳 福本
Toshio Okamoto
利夫 岡本
Shiyoukou Shin
承昊 申
Hideki Yoshida
英樹 吉田
Toshinari Takahashi
俊成 高橋
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP17863793A priority Critical patent/JP3585510B2/ja
Publication of JPH0736713A publication Critical patent/JPH0736713A/ja
Priority to US08/779,118 priority patent/US5892944A/en
Application granted granted Critical
Publication of JP3585510B2 publication Critical patent/JP3585510B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 同一仮想アドレス空間を共有しているスレッ
ド間でのスレッド操作からの保護を柔軟に行えるプログ
ラム実行管理装置の提供を目的とする。 【構成】 複数の並行に実行されるプログラム実行スレ
ッドが存在する場合に、あるスレッドをどのスレッドか
らであれば操作できるかという権限情報を記憶する記憶
部7と、あるスレッドが他のスレッドが操作を加えよう
とする際、操作元と操作対象のスレッド番号を検出する
検出部6及び13と、記憶部7の権限情報によりこの操
作が不当であるか否かを判定する判定部12を備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、計算機システム中での
プログラム実行スレッドの実行を管理する装置に関する
ものである。
【0002】
【従来の技術】近年マイクプロセッサの性能向上により
複数の小型のコンピュータをネットワークでつないで使
用することが通常のこととなった。またマイクロプロセ
ッサの使用範囲の拡大により、オペレーティングシステ
ム(OS)はさまざまな適用範囲に対応することが必要
であり、柔軟な構成をとることができることが求められ
ている。このため、従来は、利用用途やハードウェアの
種類により複数のOSを使いわけてきた。1つのOSで
広い用途をカバーするためにマイクロカーネル化させた
オペレーティングシステムの技術がある。これは、必要
最小限の機能のみをこのマイクロカーネルにもたせ、そ
れ以外の機能は、マイクロカーネル外のユーザプログラ
ムとして提供するものである。こうすることで、従来の
複数のOS機能を1つのマイクロカーネル上にユーザプ
ログラムの形で提供することが可能となり、柔軟な構成
が実現できる。
【0003】このようなオペレーティングシステムで
は、プログラム実行の制御対象としてプロセスまたはス
レッドと呼ばれる制御単位が用いられる。個々のスレッ
ドは独立にプロセッサのレジスタ値やスタックなどを持
ち、オペレーティングシステムによりプロセッサを割り
当てられた間だけプログラムを実行し、一定時間後また
はハードウェア割り込みなどが発生したときにオペレー
ティングシステムはスレッドに対するプロセッサの割り
当てを解除して他のスレッドへプロセッサを割り当て
る。個々のスレッドは独立したレジスタ値を持っている
ため、仮想的に並列に動いているプロセッサであるとみ
なすことができる。
【0004】このようなオペレーティングシステム上で
スレッド自体を操作したいとき、すなわちスレッドの実
行を一時停止したり再開したりしたいときやスレッドを
強制的に消滅させたいとき、またはスレッドの情報(レ
ジスタ値やスタック等の内部状態)を調べたいときのた
め、オペレーティングシステムはスレッド操作命令群を
備えており、あるスレッドから別のスレッドを操作する
ことが可能である。このようなスレッド操作命令群は、
ユーザプログラムからシステムコールとしてOSに指示
し、利用できるようになっている。
【0005】このようなスレッド操作命令があるとき
に、どのスレッドからでもスレッド操作命令を発行でき
るようにすると、不当な操作もできることになってしま
うので保護の機能が必要になる。たとえば、スレッドを
強制的に消滅させるようなことは特定の権限を持つスレ
ッドだけから行えるようにすることが必要になる。
【0006】さらに、仮想空間が複数あり、仮想空間ご
とに1つのプログラムやデータが配置されており、スレ
ッドもその空間内しか動きまわれないようなMach
(参考文献:「分散オペレ−ティングシステム」前川守
他編、共立出版)をはじめとするシステムの場合、同じ
空間内に存在するスレッドの保護を同一とし、スレッド
の保護をメモリ空間の保護に依存する方法をとってい
る。しかし、それらのスレッドを区別して保護すること
はできない。また、単一仮想空間のシステムのように、
1つのアドレス空間内にすべてのプログラムが配置さ
れ、複数のスレッドが存在する場合、スレッドの保護は
メモリ保護だけではなくオペレーティングシステムによ
り権限の設定が必要になる。
【0007】ひとつの方法は、スレッドの所有者を決め
て、同一の所有者のスレッド間ではスレッドの操作を許
す方式であり、Unixオペレーティングシステムのs
ignalはこれに相当する。しかしこれでは同一の所
有者のスレッド間の保護の柔軟性に欠け、さらに、操作
権限を他の所有者のスレッドに渡すことができない。ま
た、複数の所有者のスレッドからのスレッド操作を可能
にしたりできないなど、柔軟にスレッドの操作ができる
ようなスレッド保護機能が不足していた。
【0008】
【発明が解決しようとする課題】このように、従来のス
レッド実行管理メカニズムでは、操作権限の設定に柔軟
性に欠けたか、または、同一の仮想アドレス空間を共有
しているスレッド間では保護がなかったか、または制約
が強かった。
【0009】以上のような状況に鑑み、本発明は別々の
仮想空間にいるスレッド間はもとより、同一仮想アドレ
ス空間を共有しているスレッド間でのスレッド操作命令
において、同一の方法で柔軟性があり、かつ十分な保護
を行うプログラム実行管理装置を提供することを目的と
する。
【0010】
【課題を解決するための手段】本発明では個々のスレッ
ドに対してどのスレッドから操作できるかという情報を
登録したリストを設け、このリストにより許可されてい
る場合に限り、操作を許可する。また、メモリ保護機構
を用いたスレッド保護方法により、スレッド保護のため
に新規のハードウェアを必要とせずに実現できるように
なる。
【0011】
【作用】本発明によれば、スレッドごとにアクセス可否
を示す情報があるので、不当な操作命令や誤った操作命
令からスレッドを保護することができる。さらに、この
ような誤った操作命令を検出できるため、プログラムの
誤り(バグ)の検出が容易になる。
【0012】また、複数のスレッドが同一の論理アドレ
ス空間を共有し、当該論理アドレス空間が複数のセグメ
ントに分割されていて各セグメントに対してアクセス制
御リストを指定できるようなシステムにおいて、各スレ
ッドに対して一意に対応するセグメントを割り当て、そ
のセグメントのアクセス制御リストをスレッドのアクセ
ス制御リストとして用いることにより、新たにスレッド
操作の権限判定のための命令をプロセッサの命令セット
に追加せずとも高速なスレッドアクセス権限管理が可能
になる。
【0013】
【実施例】以下、図面を参照して本発明の一実施例につ
いて説明する。 (実施例1)本装置は、オペレーティングシステム(O
S)と呼ばれる計算機システム全体の実行制御を行うも
のの構成要素の一部である。OSは計算機資源であるメ
モリ、プロセッサ、周辺機器を管理し、また、ユーザプ
ログラムとよばれるユーザが指示した実務上の処理を行
うプログラムの実行を制御する。一つの装置上には複数
のユーザプログラムがのっており、OSがそれらのプロ
グラム間の制御も行う。
【0014】ユーザプグラムは、実行上に必要となる物
理メモリなどの資源を確保したり、周辺機器にデータを
入出力したり、他のユーザプログラムにデータを転送し
たり、処理を依頼したり、実行を制御するためにOSに
対して指示を行うことが必要となる。このOSへ対する
指示をシステムコールを呼ばれる特別な手段で行う。本
実施例では、システムコールのうち、ユーザプログラム
の制御に関して説明する。
【0015】図1は、本実施例の全体構成図である。プ
ログラム記憶部1には、計算機で処理する命令が記述さ
れたユーザプログラムや処理する対象のデータ、計算機
で処理途中の結果を一時的に記憶するスタックなどのデ
ータがメモリ空間上に蓄えられている。メモリ空間は、
複数の領域に区切られて管理され、それぞれの領域に
は、お互いを区別するための識別子がついており、メモ
リ領域ごとにプログラムやデータやスタックを配置して
いる。
【0016】さらに、プログラム記憶部1に蓄えられて
いるプログラムを解釈実行し、データを処理する実行主
体であるプロセッサ2と、プロセッサ内の状態を管理す
るスレッド管理部3、プロセッサの実行状態の切り替え
処理を行う実行状態切り替え部4がある。
【0017】プロセッサ2内には、命令の実行途中に一
時的に利用するレジスタ類、現在実行している命令のプ
ログラム記憶部での位置を示すためのプログラムカウン
タ(PC)、スタックデータの先頭位置を示すスタック
ポインタ(SP)などが存在し、これら一連のデータを
入れ替えることで、複数の別々のユーザプログラムの処
理を時分割で並行して進めることが可能となる。
【0018】スレッドとは、上記プロセッサ内で使用す
る一連のデータのことを呼び、これを複数組用意し、こ
のスレッドを切り替えてプロセッサにセットし実際に実
行させることにより、時分割処理が可能となる。
【0019】メモリ領域ID記憶部5は、現在実行中の
プログラムがプログラム記憶部1のどのメモリ領域に存
在しているかを、そのメモリ領域のIDとして記憶して
いるものである。これは、プロセッサ内のPCの値を利
用し、現在実行中のメモリ領域IDを求めて、記憶して
いる。このメモリ領域IDは、現在実行中のプログラム
IDとみなすこともできる。
【0020】スレッド管理部3の中にはスレッド管理テ
ーブルと呼ぶ表があり、プロセッサにセットするレジス
タの情報やその他の情報がスレッドごとに管理されてい
る。スレッドには、お互いを区別するためにスレッド識
別子(スレッドID)がついている。
【0021】実行状態切替部4は、現在プロセッサ上で
実行しているスレッド(スレッドID=1)を中断し、
スレッド(スレッドID=1)の状態をスレッド管理テ
ーブルの所定の位置に退避し、別のスレッド(スレッド
ID=2)を起動すべく、スレッド管理テーブルのスレ
ッド(スレッドID=2)の情報をプロセッサ1に再セ
ットし、スレッド(スレッドID=2)の実行を再開さ
せる。また、実行状態切替部4は、現在実行中のスレッ
ドIDをスレッドID記憶部6にセットする。実行状態
切替部4には、さらに、どのスレッドをセットし退避す
るかを決定するスレッドスケジューリング機構と、いつ
スケジューリングするか指示するタイマ部が存在する
(図示していない)。
【0022】スレッド操作権限記憶部7は、スレッド保
護に関するテーブルを保持し、スレッドごとにスレッド
に対する操作を実行する権限がどうなっているかを記憶
するもので、操作権限判定部12で使用される。
【0023】さて、システムコールとしてユーザプログ
ラムを実行しているあるスレッドが他のスレッドに対し
て制御しようとする例として、Thread_Get_
Statusシステムコールを発行する場合について説
明する。
【0024】このシステムコールは、スレッドIDで指
示されたスレッドの状態、つまりそのスレッドのレジス
タ類の情報を、このシステムコ−ルの呼び出し元のユー
ザプログラムに通知するものである。 いま、スレッド
1(スレッドID=1)のスレッドがプログラムA(メ
モリ領域ID=A)を実行中、そこでスレッド2(スレ
ッドID=2)の情報をこのシステムコールで得ようと
したとする。C言語で記載されているプログラムAで
は、次のように記されている。
【0025】 err =Thread_Get _Status(2,&Thread_Statu
s);ここで、関数Thread_Get_Statu
sがスレッドの情報を得るシステムコールであって、第
1引数の2は、スレッドID=2の情報を得ることを指
示しており、第2引数の&Thread_Status
はシステムコールの結果得られたスレッド2の情報を格
納するメモリ領域の先頭位置を指示している。また、こ
のシステムコールの実行が成功したかどうかは、この関
数の返り値として変数errに入る。
【0026】この関数をプログラムAのスレッド1が実
行すると、スレッド1はシステムコールによりプロセッ
サの実行モードをユーザレベルから特権レベルに遷移さ
せ、OSを呼び出す。特権レベルとは、OSが処理を行
う専用レベルのことである。
【0027】呼び出されたOSでは、OS内のシステム
コール受付部8に処理が移る。ここでは、このシステム
コールを呼び出した元のユーザプログラムの中断処理を
行い、要求されたシステムコールの種類と指示された引
数を受取り、それぞれその情報を引数検出部9とシステ
ムコールの種類判別部10に送る。
【0028】本例では、指示されたシステムコールは、
Thread_Get_Statusなので、システム
コールの種類判定部10で、次には、Thread_G
et_Status実行部11を呼び出す。
【0029】そこでの処理は、図2に示したスレッド操
作権限記憶部7を使って行われる。この記憶部には、図
に示したようなテーブルを保持している。テーブルに
は、操作スレッドID、対象スレッドID、操作スレッ
ドが存在するメモリ領域ID、スレッド操作権限の各エ
リアを持っている。
【0030】操作スレッドIDとはスレッド操作のシス
テムコールを実行しようとしているスレッドのスレッド
IDのことで、対象スレッドIDとはこのシステムコー
ルの引数で指定された操作対象のスレッドIDを示す。
また、操作スレッドが存在するメモリ領域IDとは、こ
の実行されようとしているシステムコールを含むプログ
ラムの存在するメモリ領域のIDのことであり、スレッ
ド操作権限とは、どういうスレッド操作が可能かを示す
もので、スレッドの内部状態を読み出す権限、スレッド
の内部状態を変更する権限、スレッドの実行を停止/再
開する権限の3つの権限を独立に指定できる。
【0031】たとえば図の例では、スレッド1(スレッ
ドID=1)が発したシステムコールでは、スレッド2
(スレッドID=2)の内部状態の参照と変更は可能だ
が、スレッド2(スレッドID=2)の実行の停止/再
開はできないことを示している。また、スレッド1(ス
レッドID=1)は、スレッド3(スレッドID=3)
に対しては実行の停止/再開はできるがそれ以外のスレ
ッド操作はできない。さらに、スレッド1(スレッドI
D=1)は、スレッド2(スレッドID=2)とスレッ
ド3(スレッドID=3)以外のスレッドに対しては、
何のスレッド操作も受け付けないことを示している。
【0032】スレッド1(スレッドID=1)が対象ス
レッドの場合の例で、テーブル中の操作スレッドが存在
するメモリ領域IDの部分にallという情報が保持さ
れているが、これは、このシステムコールがどのユーザ
プログラムから行われていても同等で、システムコ−ル
を実行するスレッドIDのみに実効権限が依存すること
を示している。
【0033】メモリ領域IDの欄がallでないとき
は、そのIDのメモリ領域に存在するプログラムからシ
ステムコールが実行された時の操作権限を規定する。た
とえば、スレッド3(スレッドID=3)が、プログラ
ムA(メモリ領域ID=A)の実行中、スレッド1(ス
レッドID=1)に対しては、すべての操作が可能であ
るが、それ以外のときは、操作不可である。つまり、ス
レッド3(スレッドID=3)がプログラムB(メモリ
領域ID=B)の実行中、スレッド1(スレッドID=
1)に対して同様なシステムコールを実行しても操作で
きないし、スレッド5(スレッドID=5)がプログラ
ムA(メモリ領域ID=A)においてスレッド1(スレ
ッドID=1)に対して同じシステムコールを実行して
も操作できない。このテ−ブルに記載のないスレッド操
作は一切できない。
【0034】Thread_Get_Status処理
部では、図3に示すステップに従って処理する。まず、
ステップ1にて、このシステムコールを実行した操作ス
レッドID、メモリ領域IDをそれぞれスレッドID記
憶部6とメモリ領域ID記憶部5から情報を得る。上述
したように、現在実行中のスレッドIDは、実行状態切
替部4でセットされ、現在実行中のメモリ領域IDは、
プロセッサの内部にあるPCの情報からセットされてい
る。さらに、システムコールの第一引数から対象スレッ
ドID検出部13が対象スレッドIDを得ている。第二
引数からは、スレッド情報格納位置検出部14が、この
システムコ−ルの実行結果を格納するユ−ザプログラム
のメモリ位置を検出する。
【0035】次にステップ2にて、以上の3つの情報を
もとにスレッド操作権限記憶部7のテーブルを引き、該
当エントリをサーチする。もし、見つかれば、ステップ
3に進み、なければステップ8を行うエラー処理部15
へ進む。
【0036】サーチは、テーブルの上から順に比較を行
い、最初にマッチしたエントリの情報を次のステップ以
降で利用する。テーブルのフィールドのall部分は、
すべてにマッチすることを意味する。もし、テーブルの
最後のエントリまで比較し、マッチしなかったらサーチ
の失敗となる。
【0037】ステップ3では、見つかったエントリの操
作権限を表す部分のうち、スレッド内部状態読出権限に
該当する部分の情報を読み出し、許可か否かを判断す
る。この判定は操作権限判定部12で行う。もし判定で
許可されればステップ4へ進み、不許可になればステッ
プ8のエラー処理へ移る。
【0038】次のステップ4では、対象スレッドに対し
て、許可されたスレッドの内部状態を読み出すためのス
レッド管理テ−ブルの参照操作を実行する。この処理は
スレッド状態参照実行部16にて行う。ここでは、該当
スレッドの内部状態であるスレッド情報を、スレッド情
報格納位置検出部14で指示されたメモリ中に格納す
る。
【0039】ステップ5にて、ステップ4での処理結果
を判定する。処理が成功するとステップ6にて、成功を
示すコードをシステムコール終了部17へ伝える。失敗
するとステップ7にて、失敗を示すコードをシステムコ
ール終了部17へ伝える。
【0040】ステップ8では、エラーコードをシステム
コール終了部17へ伝える。Thread_Get_S
tatus実行部11での処理を終えると、最後にシス
テムコール終了部17に処理が進む。このシステムコ−
ルを実行したユ−ザプログラムに返す返値をシステムコ
ールの返値として戻るように処理を行い、中断していた
呼出元のユーザプログラムの実行ができるように復帰処
理を行い、実行レベルを特権レベルからユーザレベルへ
戻す処理を行う。
【0041】以下にはスレッドを操作する他のシステム
コ−ルについて説明する。Thread_Set_St
atus(スレッドID、スレッドステータス)なるシ
ステムコールは、上記で説明した、Thread_Ge
t_Statusの逆の操作で、第1引数に指定された
スレッドに引き数に指定されたスレッド情報をセットす
る。
【0042】OS内部の処理は、システムコール受付部
8からシステムコールの種類判別部10を経てThre
ad_Set_Status実行部に移る。Threa
d_Set_Status実行部は、Thread_G
et_Status実行部11のうちスレッド状態参照
実行部16をスレッド状態変更実行部に置き換えた構成
を持つ。内部処理は、Thread_Get_Stat
usと同様であるが、スレッド操作権限記憶部7のテー
ブルをサーチする際、先ほどの例と違い、スレッドの内
部状態を変更する権限をチェックして、権限があるかど
うか判定する。そして、権限があるとスレッド状態変更
実行部にて、変更処理する。変更処理は、第2引数で指
定されたスレッド情報をスレッド管理部3の内部のスレ
ッド管理テーブルの該当スレッドの該当部分に格納する
ものである。
【0043】Thread_Suspend(スレッド
ID)なるシステムコールは、引き数で指定されたスレ
ッドに対し実行の一時停止の処理を行うものである。こ
の処理は、Thread_Get_Status実行部
11に代る、Thread_Suspend実行部が行
う。実行権があるかどうかの判定は、上記と同様で、ス
レッド操作権限のうちのスレッドの実行を停止/再開す
る権限で判定するところがちがう。そして権限がある場
合には、Thread_Suspend実行部の中のス
レッド停止処理実行部が、対象スレッドの状態をスレッ
ド管理部3内のスレッド管理テーブルから得る。管理テ
ーブル内部には、ステータス情報を格納しているところ
がある。その情報が実行可能状態なら、停止状態へ変更
する。また、停止状態なら、何もしない。また、対象ス
レッドがこのシステムコールを発したスレッド自身のと
きは、上記処理に続き、本システムコール終了時に実行
状態切替部4に制御を移し、次に動作するスレッドを決
定し起動してもらう。
【0044】別の実施例として、停止状態に複数の停止
状態レベルをとることができる場合、実行可能状態のと
きにThread_Suspendシステムコ−ルが発
せられたら、停止状態レベルを0へ変更し、既に停止状
態であったならば停止状態レベルを1つ上げる。このレ
ベルは、停止状態が厳しくなかなか実行に移らない状態
なほど大きな値が与えられるものである。
【0045】Thread_Resume(スレッドI
D)なるシステムコールは、引数で指定されたスレッド
に対し実行再開の処理を行うものである。この処理は、
Thread_Resume実行部が行い、実行権があ
るかどうかの判定は、Thread_Supend実行
部におけるのと同様である。権限がある場合には、Th
read_Resume実行部中のスレッド再開実行部
が、対象スレッドの状態をスレッド管理部3内のスレッ
ド管理テーブルから得る。管理テーブル内部には、ステ
ータス情報を格納しているところがあり、その情報を停
止状態なら、実行可能状態へ変更する。既に実行可能状
態であったならば何もしない。
【0046】別の実施例として、停止状態に複数の停止
状態レベルをとることができる場合、Thread_R
esumeシステムコ−ルが発せられたら、停止状態な
ら停止状態レベルを1つ下げる。もし、既に停止状態レ
ベルが0なら、実行可能状態へ変更し、既に実行可能状
態なら何もしない。
【0047】本実施例では、スレッド実行/再開の権限
を1つの権限にまとめているが、別々の権限にするため
に、実行停止の権限を、スレッドの内部状態を書き出す
権限とスレッドの実行を停止/再開する権利の2つとも
ある場合に可能とし、実行再開の権限を、スレッドの内
部状態を読み出す権限とスレッドの実行を停止/再開す
る権利の2つともある場合に可能とする実施例も可能で
ある。
【0048】なお、本実施例ではスレッドの内部状態を
読み出す権限、変更する権限(消去する権限を含む)、
スレッドの実行を停止/再開する権限の3種類を独立に
指定できるようにしているが、これに限られるものでは
ない。指定できる種類(スレッド操作権限記憶部の操作
権限に含まれるフィールドの数)を増やし、停止権限、
再開権限を別個に指定できるようにしても、スレッドを
消去する権限をこれらとは別に設けてもよい。
【0049】また、上では各システムコールに対応する
実行部について別々に説明したが、実際のシステムでは
これら実行部を必要な分だけ並列に設けておく。その
際、共通の機能である13,14,15,7,12につ
いてはいずれのシステムコールについても同一のものあ
るいは共通のものを利用するようにし、各システムコー
ルで実行する内容が異なる16に相当するもののみを並
列に設けて、操作権限判定と並行してあるいはその後に
対応する実行部へ処理を振り分ければよい。 (実施例2)次に、実施例1にスレッド制御に関して時
間的制約を付加した例を説明する。これは、プラント制
御のためのリアルタイム処理のように決められた時間内
に処理を終わらさなければならない場合に必要な処理で
ある。
【0050】実施例のプログラム構成を図4に示す。実
際にプラント制御用のリアルタイム処理を行うプロセス
制御プログラム(メモリ領域ID=B)と、そのプログ
ラムに常駐し、リアルタイム処理を実行するリアルタイ
ムスレッド(スレッドID=5)がある。
【0051】さらにそのプロセス制御プログラム、リア
ルタイムスレッドを制御する制御プログラム(メモリ領
域ID=C)、制御スレッド(スレッドID=4)があ
る。その他、上記以外の一般のユ−ザプログラムやスレ
ッドが同じシステム上に複数存在できる。その例とし
て、上記のプログラムを保守するためのデバッグプログ
ラム(メモリ領域ID=D)とデバック処理をする任意
のスレッド(スレッドID=6)がある。なお、本例で
のメモリ空間上でのプロクラム配置を図の(b)に示
す。
【0052】この例では、プラント制御の運用中でリア
ルタイム処理が必要な時間は、9:00から17:00
である。この間は、リアルタイムスレッドはその処理に
専念するため、他のスレッドからの制御を受けない。例
外は、制御スレッドからの制御である。つまり、制御プ
ログラムを実行する制御スレッドのみが、たとえば、プ
ラント異常動作時の停止等の処理のみが可能となる。
【0053】プラントの操業の終わる17:00以降
は、リアルタイム処理が必要ないので、上記のような制
限はなくなり、一般のスレッドでも制御できる。これに
より、デバッガーがプロセス制御プログラムをデバッグ
する際にリアルタイムレッドを制御可能になり、有効な
措置である。
【0054】本実施例システムの全体構成は、実施例1
の図1とほぼ等しい。付け加わった機能のみを図5を用
いて説明する。まず、スレッド操作権限記憶部7のテー
ブルの構成が図5のように変わる。新しくテーブルに有
効期限を表すエントリが付加されている。ここには、設
定されているスレッド操作の権限がどの時刻に有効かを
示す情報が保持されている。
【0055】以上の設定を用いてプラント制御の例を実
現するため、スレッド操作権限記憶部7のテーブルに図
5に示すようにスレッド操作権限を設定する。なお、こ
のテーブルへの新たな設定/削除/変更は、ユーザプロ
グラムからそれぞれ専用のシステムコールで行う。その
際に今までに設定されている権限と矛盾があるかどうか
チェックも行われ、テーブルの設定の反映は、設定に矛
盾のない形で行われる。
【0056】テーブルの(1)の設定により、運用時間
の9:00から17:00については、スレッドID=
4の制御スレッドは、メモリ領域ID=Cの制御プログ
ラムの実行中には、スレッドID=5のリアルタイムス
レッドに対して、すべてのスレッド操作ができる。ま
た、(3)の設定により、17:00以降も同様な操作
が可能な設定となっている。
【0057】さて、スレッドID=4の制御スレッド以
外のスレッドは、(2)の設定により、スレットID=
5のリアルタイムスレッドに対して、9:00から1
7:00までは、すべてのスレッド操作ができない。し
かし、その時間帯をすぎると(3)の設定中で操作スレ
ッドの欄がallなので、どのスレッドからでもすべて
の操作が可能となる。
【0058】以上の制御を実現するために、実施例1の
構成に現在時刻記憶部18を追加する。そして、実施例
1における図3のステップ2にて、現在時刻情報を付加
してテーブルを検索する。他は変わらない。
【0059】以下にはスレッド操作権限記憶部7のテー
ブルを図7のように変更した例を説明する。これは、従
来のテーブルに新たに、対象スレッドが存在するメモリ
領域IDのフィールドを付加したものである。この場
合、指定された操作メモリ領域のプログラムを実行中の
指定された操作スレッドが、指定された対象メモリ領域
にいる指定された対象スレッドに対するスレッド操作の
権限を制限することになる。
【0060】これによれば、前例のようなプロセス制御
リアルタイム処理を実現しようとする場合、メモリとス
レッドの配置は図6のようにできる。この場合、前例と
異なり、それぞれ制御プログラム実行用の専用の制御ス
レッド、プロセス制御用の専用リアルタイムスレッドは
不要で任意のスレッドで実現できる。
【0061】つまり、複数のプログラム間に制御を移し
ながら一連の処理を行うようなスレッド構成でも実現で
きる。この例でのスレッド操作権限記憶部7のテーブル
の指定は、図7のようになる。つまり、テーブルの
(1)の記述により、メモリ領域C(制御プログラム)
を実行している任意のスレッドが、メモリ領域B(プロ
セス制御プログラム)を実行している任意のスレッドに
対しては、9:00から17:00間は、すべてのスレ
ッド操作が可能になる。また、(3)の記述により、1
7:00以降も同様にすべての操作が可能である。とこ
ろが、(2)の記述により、メモリ領域C以外のメモリ
領域を実行している任意のスレッドからは、メモリ領域
Bに存在するすべてのスレッドに対して9:00から1
7:00の間はいっさいのスレッド操作ができない。し
かし、17:00以降は、(3)の記述によりすべての
スレッド操作が可能である。
【0062】スレッド操作権限記憶部7を含めた全体構
成を図8に示す。新たにつけ加わったものは、対象メモ
リ領域ID検出部19である。これは、システムコール
で指定された対象スレッドIDから、現在そのスレッド
が存在するメモリ領域IDをスレッド管理テーブルを用
いて検出するものである。その検出フローチャートを図
9に示す。
【0063】そして、実施例1における図3のステップ
2にて、現在時刻情報と対象メモリ領域ID情報を付加
して検索する。他は変わらない。 (実施例3)本実施例は、スレッド操作の許否の制御と
メモリ管理とを連携させて行うものである。
【0064】図10は、本実施例におけるメモリ管理の
仕組みを示したものである。図に示すような論理アドレ
ス空間は64ビットの大きさを持っており、その中をい
くつかの領域(セグメント)に分割されている。
【0065】ここでアドレス64ビットを2つのフィー
ルドに分割し、上位32ビットをセグメント番号を示す
ものとし、下位32ビットをそのセグメント内のオフセ
ットを示すものとする。なお、1つのセグメントの大き
さは可変である。
【0066】このセグメントは、それぞれがお互いに不
正なアクセスをされないようにメモリ管理機構のメモリ
保護機能により保護される。このメモリ保護機能はプロ
セッサがメモリアクセスを行う際に高速にそのアクセス
が正当かどうかチェックするものであり、これはOSに
よって管理されている。
【0067】図11は上記メモリ保護の機能を図示した
もので、メモリ管理装置MMU30によって実現してい
る。このMMUには、現在実行しているスレッドの番号
CURTHを保持するレジスタであるスレッドID記憶
部25、プロセッサ21内のプログラムカウンタ(P
C)22の値から現在実行しているプログラムの存在す
るセグメント番号を抽出するセグメント抽出部26、こ
れからアクセスしようとするアドレス(23)のセグメ
ント番号を抽出するセグメント抽出部27、及びメモリ
保護情報を高速に検索するためのキャッシュである連想
メモリTLB28を備えている。連想メモリTLBの各
エントリは、操作スレッドID、対象セグメントID、
操作セグメントID(以上を「タグ」と言う)、メモリ
アクセス権限(読み出しR、書き込みW、実行X)のフ
ィールドで構成される。
【0068】ここで、64ビットの論理アドレスADD
Rの上位32ビットをセグメント番号MSIDとし、下
位32ビットをセグメント内オフセットOFSとして、
このメモリ保護機構の動作について以下に説明する。あ
る論理アドレスADDRのメモリをプロセッサがアクセ
スしようとするとき、MMUのセグメント抽出部27セ
グメント抽出部26はADDRをセグメント番号MSI
Dとセグメント内オフセットOFSに分離する。また現
在実行中のプログラムを示すプログラムカウンタPCの
値から現在実行中のプログラムの存在するセグメント値
PCMSIDを抽出する。これらMSIDとPCMSI
D及び現在のスレッド番号を示すCURTHを連想メモ
リTLB28に加える。TLBはこれら入力に適合する
タグを持つエントリを探す。ただし全ビットが1である
ようなフィールドがタグ中にある場合、それは任意の入
力に適合する項目とみなされる。例えば、操作セグメン
トIDのフィールドが全ビット1であれば、操作スレッ
ドかどのセグメントに存在する場合にも、そのタグは現
在の状況に適合するものとしてこれをもつエントリが選
択される。
【0069】そして、もし適合するエントリがあれば、
TLBはそれに対するメモリアクセス権限のフィールド
の内容PERMを出力する。アクセス権限判定部29で
は、PERMの値を、これからしようとしているアクセ
スの種別記憶部24の内容を表す信号ACCESSと比
較し、このメモリアクセス要求が許可されているかどう
かを判定する。許可されない場合はプロセッサ21のエ
ラー処理部31に対してFAULT信号を返す。また適
合するタグがTLB28中に見つからない場合も同様に
プロセッサ21に対してFAULT信号を返す。もし許
可される場合は、MMU30はここに図示しないアドレ
ス変換機構によりプロセッサの出力する仮想アドレスを
物理アドレスへ変換し、システムアドレスバスへと出力
する。オペレーティングシステムはTLBの内容を適切
に更新することによりユーザ及びオペレーティングシス
テムの要求するメモリアクセス保護を実現する。
【0070】このようなメモリ管理機構を備えたシステ
ムにおいて、図12(a)のように各実行スレッドに対
して固有のセグメントを割り付け、そのセグメント内に
スレッド情報のうちユーザ書き換え可能な部分を置くこ
とにより、スレッド操作の保護属性メモリ操作の保護に
帰着させ、新たなハードウェアの追加をすることなく、
メモリ保護のハードウェアを用いてスレッド操作のアク
セス管理を行うことができる。
【0071】実施例1と同様に、プログラムセグメント
A上のプログラムを実行しているスレッド1がスレッド
2の制御情報にアクセスしようとする例で説明する。実
施例1の場合と違って上記のメモリ管理機構を備えてい
るため、同一論理アドレス空間内であっても異なるメモ
リセグメント上のプログラムでは異なるメモリ保護条件
を設定することができる。そこで、オペレーティングシ
ステムを構成するプログラムをあるセグメント中に置
き、そのセグメント中のプログラムからは任意のメモリ
にアクセスできるようにメモリ保護条件を設定すること
により、メモリアクセスに関しては特権レベルへの遷移
と同等の効果を得ることができる。この場合、OSに対
するシステムコールは特別な命令ではなく、通常のセグ
メント間サブルーチン呼出し命令により行うことができ
る。
【0072】ここで、スレッド情報が図13に示すよう
にスレッド1の情報がセグメント番号101に、スレッ
ド2の情報がセグメント番号102にというように1対
1に対応しているとする。オペレーティングシステムは
この対応関係を図12(a)のようにスレッド管理テー
ブル中に記録している。
【0073】図12(b)は実施例1で示した動作例と
同じように動作するようにTLB28の内容を設定した
例を示している。たとえばこの例においてスレッド1が
セグメント91中のプログラムを実行している時にスレ
ッド2の内部情報を調べるためセグメント102内にあ
るメモリ内容を読み出す場合、MMU30はプロセッサ
がアクセスしたい仮想アドレスからセグメント番号10
2を抽出し、これとスレッド番号1とセグメント番号9
1をキーとしてTLB28を検索し、適合するエントリ
があるのでそれに対するメモリ保護情報をアクセス権限
判定部29へ出力する。この例では読み出し権限(R)
があるため、アクセスを許可する。
【0074】またもう1つの例として、図12(b)の
状況でスレッド1がスレッド4の情報をアクセスしよう
とした場合はセグメント104内のメモリをアクセスす
るが、スレッド番号1とセグメント番号104をキーと
してTLBを検索する。この場合は適合するエントリが
ないのでTLBは不一致信号を出力し、MMUはアクセ
ス不許可を示すFAULT信号をプロセッサへ伝える。
【0075】すなわち、本実施例は、実施例1における
スレッド管理テーブルの内容を論理アドレス空間の所定
の位置に配置し、スレッド操作権限記憶部をTLBに置
き換えで実施例1と同様に動作させるようにしたもので
ある。
【0076】
【発明の効果】以上詳述したように、本発明によればあ
るスレッドによる操作からあるスレッドを保護すること
を適切に行うことができる。またメモリ保護機構を用い
ることにより新規ハードウェアの必要なく高速なスレッ
ド操作保護を行うことができる。
【図面の簡単な説明】
【図1】 本発明の実施例1に係るシステムの全体構成
を示す図。
【図2】 図1のスレッド操作権限記憶部7の内部構成
例を示す図。
【図3】 本実施例システムの動作を示すフロー図。
【図4】 実施例2におけるプログラム構成例を示す
図。
【図5】 実施例2におけるスレッド操作権限記憶部7
の内部構成例と関連システム構成を示す図。
【図6】 実施例2における別のプログラム構成例を示
す図。
【図7】 図6に対応するスレッド操作権限記憶部7の
内部構成例を示す図。
【図8】 実施例2で図7に対するシステムの全体構成
を示す図。
【図9】 図8の対象メモリ領域ID検出部19の動作
を示すフロー図。
【図10】 実施例3における論理アドレス空間の説明
図。
【図11】 実施例3に係るシステムの全体構成を示す
図。
【図12】 実施例3におけるスレッド情報とセグメン
トの関係の説明図及び図11のTLB28の設定例を示
す図。
【図13】 実施例3におけるスレッドの制御情報の論
理アドレス空間への配置例を示す図。
【符号の説明】
1…プログラム記憶部、 2,21…プロセッサ、 3
…スレッド管理部、4…実行状態切替部、 5…メモリ
領域ID記憶部、 6…スレッドID記憶部、 7…ス
レッド操作権限記憶部、 8…システムコール受付部、
9…引数検出部、 10…システムコールの種類判定
部、 11…システムコール実行部、12…操作権限判
定部、 13…対象スレッドID検出部、 14…操作
の種類判定部、 15…エラー処理部、 16…スレッ
ド状態参照実行部、 17…システムコール終了部、
18…現在時刻記憶部、 19…対象メモリ領域ID検
出部、 22…プログラムカウンタ、 23…アクセス
アドレス記憶部、24…アクセス種別記憶部、 25…
スレッドID記憶部、 26,27…セグメント抽出
部、 28…TLB、 29…アクセス権限判定部、
30…MMU。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 吉田 英樹 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 (72)発明者 高橋 俊成 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 複数の並行に実行されるスレッドにより
    プログラムを実行する手段と、 あるスレッドをどのスレッドから操作できるかを示す権
    限情報を記憶する手段と、 あるスレッドが他のスレッドに操作を加えようとする際
    に前記権限情報によりこの操作を行う権限があるか否か
    を検証する手段と、 権限があると検証された場合に前記操作の実行を許可す
    る手段とを具備したことを特徴とするプログラム実行管
    理装置。
  2. 【請求項2】 スレッドに対する操作の権限情報に加え
    て、時刻間隔を指定する情報を記憶しておき指定された
    時刻間隔の間に権限が適用されるような検証を行うこと
    を特徴とする請求項1記載のプログラム実行管理装置。
  3. 【請求項3】 複数の並行に実行されるスレッドによ
    り、複数の領域に分割された論理アドレス空間に配置さ
    れた各プログラムを実行する手段と、 あるスレッドをどのスレッドがどの領域に存在するとき
    に操作できるかを示す権限情報を記憶する手段と、 あるスレッドがある領域から他のスレッドに操作を加え
    ようとする際に前記権限情報によりこの操作を行う権限
    があるか否かを検証する手段と、 権限があると検証された場合に前記操作の実行を許可す
    る手段とを具備したことを特徴とするプログラム実行管
    理装置。
  4. 【請求項4】 複数の並行に実行されるスレッドによ
    り、複数の領域に分割された論理アドレス空間に配置さ
    れた各プログラムを実行する手段と、 ある領域をどのスレッドがアクセスできるかを示すメモ
    リアクセス許否情報を記憶する手段と、 あるスレッドが他の領域にアクセスしようとする際に前
    記許否情報によりこのアクセスが許可されるか否かを検
    証する手段と、 許可されると検証された場合にアクセスしようとする論
    理アドレスを物理アドレスに変換する手段とを備え、 各スレッドに対応して確保された論理アドレス空間中の
    領域に各スレッドの情報を記憶することにより、 あるスレッドが他のスレッドに操作を加えようとする際
    に前記許否情報により示される許否によりこの操作を行
    う権限があるかを検証するようにしたことを特徴とする
    プログラム実行管理装置。
JP17863793A 1993-07-20 1993-07-20 プログラム実行管理装置及びプログラム実行管理方法 Expired - Fee Related JP3585510B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP17863793A JP3585510B2 (ja) 1993-07-20 1993-07-20 プログラム実行管理装置及びプログラム実行管理方法
US08/779,118 US5892944A (en) 1993-07-20 1997-01-06 Program execution and operation right management system suitable for single virtual memory scheme

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17863793A JP3585510B2 (ja) 1993-07-20 1993-07-20 プログラム実行管理装置及びプログラム実行管理方法

Publications (2)

Publication Number Publication Date
JPH0736713A true JPH0736713A (ja) 1995-02-07
JP3585510B2 JP3585510B2 (ja) 2004-11-04

Family

ID=16051944

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17863793A Expired - Fee Related JP3585510B2 (ja) 1993-07-20 1993-07-20 プログラム実行管理装置及びプログラム実行管理方法

Country Status (1)

Country Link
JP (1) JP3585510B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH099674A (ja) * 1996-04-19 1997-01-10 Sony Corp ブラシレスモータの駆動方法
JPH0919183A (ja) * 1996-04-19 1997-01-17 Sony Corp ブラシレスモータ
WO2003104948A1 (ja) * 2002-06-05 2003-12-18 富士通株式会社 メモリ管理ユニット、コード検証装置およびコード復号装置
KR100791437B1 (ko) * 2002-12-31 2008-01-04 인터내셔널 비지네스 머신즈 코포레이션 멀티스레드 어플리케이션에서 스레드 실행을 관리하기위한 방법 및 장치
JP2017027627A (ja) * 2004-03-31 2017-02-02 インテル コーポレイション ユーザーレベルのマルチスレッドを提供する方法およびシステム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH099674A (ja) * 1996-04-19 1997-01-10 Sony Corp ブラシレスモータの駆動方法
JPH0919183A (ja) * 1996-04-19 1997-01-17 Sony Corp ブラシレスモータ
WO2003104948A1 (ja) * 2002-06-05 2003-12-18 富士通株式会社 メモリ管理ユニット、コード検証装置およびコード復号装置
CN1296790C (zh) * 2002-06-05 2007-01-24 富士通株式会社 存储器管理单元、代码验证装置以及代码译码装置
US7908450B2 (en) 2002-06-05 2011-03-15 Fujitsu Limited Memory management unit, code verifying apparatus, and code decrypting apparatus
KR100791437B1 (ko) * 2002-12-31 2008-01-04 인터내셔널 비지네스 머신즈 코포레이션 멀티스레드 어플리케이션에서 스레드 실행을 관리하기위한 방법 및 장치
JP2017027627A (ja) * 2004-03-31 2017-02-02 インテル コーポレイション ユーザーレベルのマルチスレッドを提供する方法およびシステム
US10585667B2 (en) 2004-03-31 2020-03-10 Intel Corporation Method and system to provide user-level multithreading
US10613858B2 (en) 2004-03-31 2020-04-07 Intel Corporation Method and system to provide user-level multithreading
US10628153B2 (en) 2004-03-31 2020-04-21 Intel Corporation Method and system to provide user-level multithreading
US10635438B2 (en) 2004-03-31 2020-04-28 Intel Corporation Method and system to provide user-level multithreading

Also Published As

Publication number Publication date
JP3585510B2 (ja) 2004-11-04

Similar Documents

Publication Publication Date Title
US5892944A (en) Program execution and operation right management system suitable for single virtual memory scheme
JP4519738B2 (ja) メモリアクセス制御装置
US6542919B1 (en) Operating system for use with protection domains in a single address space
US7765395B2 (en) Operating system rebooting method and apparatus for continuing to execute a non-stop module even during rebooting
US5845129A (en) Protection domains in a single address space
US6772419B1 (en) Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US7272832B2 (en) Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
JPH07200317A (ja) 操作権管理装置
US20070214340A1 (en) Symmetric Multiprocessor Fault Tolerant Computer System
JPH0619798A (ja) セレクタの値のロードを回避する方法とシステム
JPH04247528A (ja) データ空間への共通アクセス装置及び方法
EP0431326A2 (en) Inter-processor interrupts in an n-element multi-processor
JPH10312299A (ja) データベース情報をアクセスする方法
US5293597A (en) Concurrent context memory management unit
JP3765201B2 (ja) 計算機システム
JP2004501407A (ja) 呼出し元アドレスを使用した安全なソフトウェアsmiディスパッチング
EP0348053B1 (en) Controlling the initiation of logical systems in a data processing system with logical processor facility
US5745676A (en) Authority reduction and restoration method providing system integrity for subspace groups and single address spaces during program linkage
JP2001056783A (ja) プログラム単位メモリ属性管理方式
JP3585510B2 (ja) プログラム実行管理装置及びプログラム実行管理方法
JP3485940B2 (ja) 仮想記憶制御装置及び方法
JPH04291660A (ja) プロセッサ間通信方法およびそのための並列プロセッサ
CA2551045C (en) Input-output control apparatus, input-output control method, process control apparatus and process control method
JPH05134930A (ja) メモリ保護装置
JP2798140B2 (ja) 仮想空間制御方式

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040203

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040323

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040517

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040520

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Effective date: 20040730

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040804

LAPS Cancellation because of no payment of annual fees