JPH041370B2 - - Google Patents

Info

Publication number
JPH041370B2
JPH041370B2 JP19292981A JP19292981A JPH041370B2 JP H041370 B2 JPH041370 B2 JP H041370B2 JP 19292981 A JP19292981 A JP 19292981A JP 19292981 A JP19292981 A JP 19292981A JP H041370 B2 JPH041370 B2 JP H041370B2
Authority
JP
Japan
Prior art keywords
task
resource
ospcb
processing
queue
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.)
Expired
Application number
JP19292981A
Other languages
English (en)
Other versions
JPS5896350A (ja
Inventor
Hiroshi Kobayashi
Keiichi Nakane
Toshiro Jinnai
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP19292981A priority Critical patent/JPS5896350A/ja
Publication of JPS5896350A publication Critical patent/JPS5896350A/ja
Publication of JPH041370B2 publication Critical patent/JPH041370B2/ja
Granted legal-status Critical Current

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Description

【発明の詳細な説明】 本発明は、電子計算機、特に、オペレーテイン
グシステム(以下、OSと略す。)のスケジユーリ
ング方式に関する。
計算機システムにおいては、多くのリソースを
効率良く利用するために、リソースの要求者とし
てある論理的概念を設定するのが一般的であり、
その要求者はジヨブ、あるいはタスクと呼ばれて
いる。以下では、タスクという名称で統一するこ
とにする。
OSは、リソース要求者としてのタスクに対す
るリソール管理者として位置づけられる。OSは
タスクにリソースの占有・解放の手段を与え、そ
の要求に応じてリソースを最適に配分し、システ
ムを効率良く稼働させるものである。
ところで、計算機内のリソースを考えてみると
処理装置、主記憶、各種入出力装置等多種多様で
あるが、その数は有限であり、一般的には1度に
1つの要求しか処理できない。つまり、あるタス
クがリソースを占有した場合、後から同一リソー
スを占有しようとしたタスクは、そのリソースが
解放されるまで待つ必要があるわけである。OS
は、リソースに関連した上記タスクの動作制御を
統一的に行なつている。
一般に計算機システムでは、システムを円滑に
機能させるために、OSとタスクを異なるプログ
ラム実行状態で動作させる。つまり、タスク実行
中は、通常すべての割込を受け付ける、書き込み
可能エリアが限定されていてOSエリアへの書き
込みはできない、特権命令が使用できない、とい
つた所謂、タスクモードで動作する。それに対し
て、OS実行中は、割込をすべて受け付けない、
あるいは、一部の割込のみ受け付ける、全エリア
書き込み可能である、特権命令が使用可能であ
る、といつた、所謂、OSモードで動作する。こ
れらのモード制御は、プログラル状態語レジスタ
(PSWと略す。)やプロテクシヨンレジスタと呼
ばれるハードウエアレジスタにより制御する。
OSが動作する時は、ハードウエアあるいはOS自
身により前記レジスタにOSモード実行のための
制御情報を設定し、タスクが動作する時は、OS
がタスクモード実行のための制御情報を設定す
る。
第1図は、PSW及びプロテクシヨンレジスタ
を示す。
PSW110には、OS実行中を示すビツトOSB
111、プログラムの動作レベルを示すデータ
LEVEL112及びプロテクシヨンの有効・無効
を示すビツトPEB113を持つ。プロテクシヨ
ンレジスタは、0と1の2本あり、それぞれプロ
テクシヨンオープンエリアの先頭アドレス、最終
アドレスをポイントする。
PSW110のOSB111は、特権命令の使用
可否を制御するためのビツトで、OSB110が
1の時はOS実行中で特権命令を使用できる。逆
に0の時は使用不可となる。タスク実行中は通常
0とする。
PSW110のLEVEL112は、割込の可否の
制御に使用する。LEVEL112は、3ビツトあ
るので0〜7の8通りの割込レベルを指定でき、
LEVEL112で示された値以上の割込は受け付
けられない。たとえば、LEVEL112の値が
101すなわち5の時は割込レベルが5、6、及び
7の割込が抑止される。
PSW110のPEB113は、プロテクシヨン
をかけるかかけないかの制御に使用するもので、
PEB113が1の時はプロテクシヨンレジスタ
0、1にセツトされた値で定まる主記憶エリアが
プロテクシヨンオープン(アクセス可能)とな
る。一方、PEB113が0の時は、プロテクシ
ヨンレジスタの値は無効となり、主記憶全部がプ
ロテクシヨンオープンとなる。
ところでOSは処理能力、応答性等が要求され
るため、通常は、待ち状態、すなわち、処理の中
断を許されないプログラム構造をとつている。し
かし、スシテムが大規模、複雑化して、OSの機
能が増加するにつれ、OSモードで待たざるを得
ない場合が生じる。従来、待ちタスクにしか許さ
れていなかつたため、本来OSとして作成すべき
部分をタスクとして作成することになる。そのた
め、プログラムがタスクモードで動作し、割込に
よる処理の中断、OSのテーブルエリアへの書き
込み不可、特権命令使用不可といつた問題が発生
する。
第2図を用いて従来技術の問題点について具体
例を説明する。
第2図は、非常駐タスクのローデイングに関す
るOSのサポート処理を示したものである。
各タスクに対応してタスクコントロールブロツ
ク(TCB)とよばれるテーブルが設けられてい
る。すなわち、各タスクごとに、タスク実行に必
要な情報たとえば常駐タスクか否かを示すビツ
ト、動作中か否かを示すビツトなどを有するテー
ブルTCBがあり、OSがTCBの内容に基づいてタ
スクの実行を制御する。タスクには、該タスクに
対応するプログラムが常に主記憶に常駐している
常駐タスクと、該タスクが起動された時にプログ
ラムを主記憶にローデイングする非常駐タスクが
ある。OSはどちらのタスクを、起動するときも
対応するTCBを実行待行列に接続し、実行待状
態とする。その後、タスクデイスパツチヤ
TDISPと呼ばれるOSの部分210にリンクす
る。TDISPは、第2図に示す様に、指定された
レベルから実行待行列をサーチする。まず、指定
されたレベルの実行待行列の先頭にあるTCBを
取り出す(ステツプ211)。実行待ちのタスクがな
ければ、次のレベルの実行待行列のサーチを行な
う(ステツプ212)。もし、実行待ちのタスクがあ
れば、該タスクの状態をTCBに基づいてチエツ
クする(ステツプ213)。実行待ちのタスクが実行
可能であればコアシエアモジユール(CSM(Core
Share Module))と呼ばれるOS部分230にリ
ンクする。実行不可であれば同じレベルの実行待
行列の次のタスクを取り出す。こうして、実行可
能なタスクが見つかるまで、各レベルの実行待行
列をサーチする(ステツプ215、214)。実行可能
なタスクが1つもなければ、idle処理ルーチンに
リンクする(ステツプ220)。
一方、実行可能なタスクは、CSM230にて
プログラムが主記憶に存在するかどうかチエツク
される(ステツプ231)。常駐タスクあるいは非常
駐タスクのプログラムローデイング後は、主記憶
にプログラムが存在するので、EXECモジユール
240にリンクする。非常駐タスクの初期起動で
は、プログラムが主記憶に存在しないので、まず
主記憶上の動作領域の確保を行なう(ステツプ
232)。動作領域が確保できなければ、空くまで該
タスクを待状態とする(ステツプ234)。確保でき
れば、プログラムをデイスクから読出し該動作領
域にローデイングするためデイスクアクセスをす
る必要がある。しかし、デイスクが他の処理を実
行中であればデイスクアクセスのためのI/O終
了待ちが発生しうる。しかし、前記した様に、従
来はOS内で待ち状態を作ることはできないため、
デイスクアクセス部分をOSから切離し、タスク
として作成している。本例ではコアシエアタスク
(CST(Core Share Task))と呼ばれるタスク2
50がデイスクアクセスのために切り出したタス
クである。これにより、動作領域確保時は、
CSM230はCST250のためのパラメータを
パラメータエリアCSTB(Core Share Task
Block)にセツトしてCST250を起動すること
になる。CST250が起動されると、CST25
0のTCBが実行待行列に接続され、TDISP21
0で選択され、CSM230→EXEC240を経
由してCST250に起動がかけられる。
EXECモジユール240にリンクしたとき、こ
のモジユールではタスクの動作環境を設定する。
たとえば、前述したようにプログラム状態語
(PSW)内のOSB、PEB、LEVEL等をタスク動
作時の状態(タスクモード)にする。その後
CSTにリンクし、そこで動作モードをOSモード
にした上で、指定されたタスクをデイスクから主
記憶へローデイングする。
OSモードにする事は、SVC命令を発行し、こ
の命令によりPSWの割込みビツト、OCモードビ
ツトをOS動作時のものにするとともに、タスク
実行中のレジスタ内データを退避する処理をOS
が行うことを意味する。このようにEXECモジユ
ールで一度タスク動作状態にした上で再びCST
タスク内でOSモードに戻すという処理をせねば
ならない。
このため、OSモードに戻すという余分の処理
が必要となり、タスクを主記憶へローデイングす
るまでに余分の時間がかかるとともに、この処理
を行うための処理プログラムをOSが有しなけれ
ばならないという問題がある。これらは、実行待
ちを要する、OSの処理ルーチンをタスクとして
切り離して実行待ち可能としたために生じたもの
である。
本発明は、待ちを必要とするOSの処理ルーチ
ンをOSモードで待状態にすることを可能とし、
もつて、タスクとして待たせた場合よりも小容量
のOSでかつ、高速にOSの処理をしうるOSのス
ケジユーリング方式を提供することを目的とす
る。
本発明は、リソース占有者として新たにOSプ
ロセスなる概念を導入し、OS内での待ちを可能
とするものである。
すなわち、本発明はOSの内、待状態が発生し
うる部分を一個の独立したプログラムとして切り
出し(この切り出されたものをOSプロセスと呼
ぶ)、このOSプロセス実行中にリソース待ちの状
態が生じたとき、該リソース待ちのプログラムと
してタスクとともに該OSプロセスを登録し、該
リソースの解放が検出されたとき、リソース待ち
のOSプロセスとタスクの一つを選択し、OSプロ
セスが選択されたときにはこれをOSモードで実
行するように制御するようにした。
本実施例ではOSプロセスとタスクの各々に対
応して一つのテーブルが主記憶装置に設けられ
る。OSプロセス用のテーブルをOSPCB(OSプロ
セスコントロールブロツク)とよび、タスク用の
テーブルをTCB(タスクコントロールブロツク)
と呼ぶ。
第3図は、OSPCB、TCBの構成図である。
OSPCBとTCBは、全く同一の構成であり、以下
ではOSPCBについてのみ記述するが、TCBにつ
いても同様のことが言える。
OSPCB900は、ポインタ1エリア910、ポイ
ンタ2エリア920、ステータス情報930、プロ
グラム先頭アドレス940、及び、その他の制御
情報950から構成される。
ポインタ910、920は、OSPCBを待行列に登録
する時に使用するエリアである。一般にソフトウ
エアにて待ち管理を行なう場合、テーブルの順序
制御により実現する。すなわち、1つの待行列に
1つの待行列先頭ポインタを用意し、該先頭ポイ
ンタに待行列先頭テーブルのアドレスを記憶す
る。1つのOSPCBをある待行列先頭ポインタに
接続するとは、該OSPCBのアドレスを該先頭ポ
インタに格納することを意味する。今、該先頭ポ
インタに1つのOSPCBが接続されていた場合に、
新たなOSPCBを待行列に接続することを考える。
この場合、待ちの順序としては既に接続されてい
るOSPCBの後にする必要がある。この順序付け
を行なうために、前記ポインタ910、920を使用す
る。すなわち、既に接続されているOSPCBのポ
インタ910、または、920に新たに接続する
OSPCBの先頭アドレスを記憶することにより、
テーブルの順序付けを行なうわけである。
OSPCB900にポインタエリアが2つあるの
は、ポインタ910が実行待行列用であり、ポイン
タ920がリソース待行列用である。
すなわち、OSプロセスを実行するに際して、
処理装置は1台ゆえ1度に1個のOSプロセスし
か実行できない。そのため、複数のOSプロセス
に起動要求が出されると、実行待ちが発生する。
該待ちをテーブルの待行列として実現したもの
が、実行待行列である。OSPCBは、該OSPCBに
対応するOSプロセスに起動要求が出された時点
で実行待行列に接続される。すなわち、OSプロ
セスの起動処理の中で待行列接続が行なわれる。
一方、OSプロセスの処理が終了すると、該OSプ
ロセスに対応するOSPCBは、実行待行列から削
除される。該削除処理は、前記接続処理と逆にポ
インタにてアドレス付けされた接続関係をなく
す、すなわち、削除しようとするOSPCBのアド
レスを記憶しているポインタエリアを0クリアす
ることにより実現される。本削除処理は、OSプ
ロセスの終了処理にて行なわれる。
リソース待行列用のポインタ920に関する接
続・削除処理もポインタ910と同様である。該リ
ソース待行列は、計算機システムでの各種リソー
ス(処理装置を除いたリソース、たとえば、タイ
プライタ、CRTなど)が有限であることから、
あるひとつのリソースに複数のリソース占有要求
が同時に出された時に生じる待ちを管理するため
のものであり、実行待行列用ポインタと分けてあ
るのは、リソース占有/解除処理の簡略化を図る
ためである。
ステータス情報930は、OSPCB900に対
応するOSプロセスのステータスを管理するため
のエリアである。OSプロセスの各状態に対応し
て各1ビツトが割り当てられ、該ビツトが1の
時、該当OSプロセスがその状態にあることを示
し、0の時はその状態にないことを示す。たとえ
ば、ENQビツト931は、OSプロセスのリソー
ス待ち状態を表示するビツトであり、リソース待
ち状態、すなわち、該当OSPCBがリソース待行
列に接続されている間は、該ビツトに1がセツト
されている。それ以外の場合は0となる。
プログラム先頭アドレス940は、該OSPCB
に対応するOSプロセスのプログラムの場所を示
す情報であり、OSプロセスが起動されて動作す
る時のプログラム開始アドレスを格納する。
その他の制御情報950は、主にタスクを制御
する情報であり、OSプロセス制御では使用しな
い。ただ、TCBとOSPCBのフオーマツトを合わ
せるために、OSPCBにも持たせてある。
OSPCB、TCBともに、あらかじめ主記憶の連
続したエリアに格納されている。
第4図にOSPCB、TCBの待行列を示す。
図は、OSプロセス実行待行列ポインタを
RQPB1,1010、タスク実行待行列ポインタ
をRQPB2,1030、リソース待行列ポインタ
をRSQB、1020で示す。RSQBは、リソース
毎に待つ。たとえば、デイスク、タイプライタ、
CRTといつた入出力装置の場合、それぞれの入
出力装置に対してRSQBを1個ずつ持つ。
図では、簡単のために一つのRSQBのみを示し
てある。
今、あるOSプロセスに起動がかかると、起動
されたOSプロセスに対するOSPCBは、ポインタ
1を使用してRQPB1に接続される。タスクに起
動がかかつた場合には、そのタスクに対する
TCBのポインタ1を使用してRQPB2に接続さ
れる。すなわち、OSPCB1040が最初に起動
されたOSプロセスに対するOSPCBとすると、
RQPB1のポイント値をOSPCB1040のポイ
ンタ1のエリア1041のアドレスにする。次に別の
OSプロセスが起動されると、そのOSプロセスに
対するOSPCB1050のポインタ1のエリア
1051のアドレスをOSPCB1040のポインタ1
のエリア1041にセツトする。また、TCB107
0が最初に起動されたタスクに対するものとする
と、RQPB2の値をTCB1070のポインタ1
のエリア1071のアドレスにセツトし、次のタスク
が起動されたとき、そのタスクに対するTCB1
060のポインタ1のエリア1061をTCB107
0のエリア1071にセツトする。こうして、RQPB
1、RQPB2にそれぞれOSPCB、TCBの待行列
がつながれる。RQPB1に接続された待行列が、
OSプロセスの実行待行列であり、RQPB2の方
がタスクの実行待行列である。それぞれの実行待
行列は後述するOSデイパツチヤDDISP、タスク
デイスパツチヤTDISPの選択対象となる。ここ
で、今、起動されたOSプロセス又はタスクの実
行中にリソース待ちが発生すると、それらに対す
るOSPCB又はTCBを、それぞれのポインタ2を
使用して、対象リソースのRSQBに接続され、リ
ソース待行列を形成する。
たとえば、OSPCB1050に対するOSプロセ
ス実行中に、RSQBに対するリソース待ちが生じ
ると、そのOSPCB1050のポインタ2のエリ
ア1052のアドレスをRSQBにセツトする。また、
さらにTCB1060に対応するタスク実行中に、
同じリソースの待ちが生じると、TCB1060
のポインタ2のエリア1062のアドレスをOSPCB
1050のポインタ2のエリア1052にセツトす
る。こうして、リソース待行列が形成される。
したがつて、リソース待行列は、OSPCB、
TCBが混在することになる。但し、リソース解
放時にリソース待ちのOSプロセスをリソース待
ちのタスクに優先して実行するために、新たに
OSPCBをリソース待行列に追加するときは、そ
れまで登録されていたどのTCBよりも前の位置
に登録する。また、リソース待ち行列登録時に
は、そのテーブルのENQビツト931(第3図)
を1とする。一方、リソース待行列に接続されて
いるOSPCB又はTCBに対するOSプロセス又は
タスクはリソースが自分に割り当てられるまで実
行されない。すなわち、後述するOSデイスパツ
チヤODISPはOSプロセス実行待行列を先頭
OSPCBからサーチし、ENQビツトが1であれ
ば、次に継がれているOSPCBを見に行くことに
より、リソース待ち状態(ENQビツトが1)の
OSプロセスを選択しないためである。リソース
解放処理では、リソース待行列のポインタ2を操
作して待行列の先頭のテーブル(今の例では
OSPCB1050)を削除するだけで良い。今の
例では、RSQB1020に対応するリソースが解
放されたとき、OSPCB1050に対するOSプロ
セスが実行される。この際RSQBのポインタ値を
TCB1060のポインタ2のエリア1062のアド
レスにするのみでよい。これとともに、先頭の待
テーブル(今の例ではOSPCB1050のENQビ
ツトを0にする。
以下では、このような実行待ちあるいはリソー
ス待ちのOSプロセス又はタスクの実行制御につ
いて更に説明する。
第5図は、本発明のプログラム全体構成図であ
る。
OSは、大きくSVC処理ルーチン群310、割
込処理ルーチン群320、OSプロセスデイスパ
ツチヤ(ODISPと略す。)330、タスクデイス
パツチヤ(TDISPと略す。)340、アイドルル
ーチン350、及び、OSプロセス群360、か
ら構成される。これらのOS部分の各々は勿論OS
モードで実行される。タスク群370は、起動さ
れたときには、タスクモードで実行される。
SVC処理ルーチン群310は、タスクあるい
はOSプロセスからCALLされ、それぞれある決
められた処理を行なうSVC処理ルーチンからな
る。各SVC処理ルーチンは、タスク、OSプロセ
スに対するOSのサービスを与えるためのルーチ
ンであり、処理内容毎に各種のSVCルーチンが
用意されている。たとえば、デイスクとの入出力
をするためのSVCルーチン、あるいは、他のタ
スクを起動するためのSVCルーチン等がある。
割込処理ルーチン群320は、計算機内部ある
いは外部からの割込により起動される。割込ルー
チンは通常、割込要因毎に用意されており、その
要因に対応した処理を行なう。割込ルーチンに
は、たとえば、入出力装置からの終了割込を処理
するルーチン、ハードウエアタイマからの割込を
処理するルーチン等がある。
なお、図中矢線は。プログラム制御の流れ、点
線は割込によるプログラム制御の変更を示す。
以下、図を用いて全体の処理の流れを説明す
る。
今、タスク群370のうちの1つのタスクAが
動作して、SVCルーチンをCALL(ステツプ362)
したとする。該SVC、CALLによりSVC処理ル
ーチン群310のうちの該当SVCルーチンに制
御が移る。該SVC処理ルーチンの中で、OSプロ
セスを起動(ステツプ311)する場合、OSプロセ
ス起動ルーチン332がCALLされる。この時点
で、該当OSPCBが実行待行列に接続される。ま
た、該SVC処理ルーチンの中で、リソースを占
有する場合、リソース占有ルーチン333が
CALLされ、もし他のタスクあるいはOSプロセ
スが既にリソース占有中なら該SVC処理ルーチ
ンをCALLしたタスクがリソース占有待ちとな
る。すなわち、TCBがリソース待行列に接続さ
れる。さらに、該SVC処理ルーチンにて、リソ
ースの解放処理を行なう場合(ステツプ313)リ
ソース解放ルーチン334がCALLされる。その
際、リソース占有待ちのOSプロセスあるいはタ
スクが実行可状態となる。すなわち、OSPCBあ
るいはTCBのENQビツトを0とし、該当リース
待行列から削除される。
SVC処理ルーチンが処理終了すると、OSプロ
セスデイスパツチヤODISP330にリンクする。
ODISP330では、OSプロセスの実行待行列を
先頭からサーチし、最初に見つかつた実行可状態
のOSプロセスを選択(ステツプ331)し、該OS
プロセスにリンクする。ここで、実行可状態に
は、たとえば、ENQビツトが0、すなわち、リ
ソース待状態でない状態などが含まれる。つま
り、リソース待状態のOSプロセスあるいはタス
クは、実行待行列に継がつていても、リソース待
状態となつているため選択されない。
OSDISP330によりOSプロセス群360よ
り選択されたOSプロセスは、所定の処理を行な
う。該OSプロセス内で、SVC CALL(ステツプ
361)も可であるが、前記したタスクのSVC
CALL(ステツプ362)とほぼ同じ処理を行なう。
ただし、SVC処理ルーチンでリソース占有(ス
テツプ312)時、リソース待ちが発生すると、該
SVCルーチンをCALLしたOSプロセスがリソー
ス待ちとなる。
OSDISP330のOSプロセス選択処理(ステ
ツプ331)で実行可能なOSプロセスがなければ、
タスクデイスパツチヤTDISP340にリンクす
る。
TDISP340では、タスクの実行待行列を先
頭からサーチし、最初に見つかつた実行可状態の
タスクを選択し(ステツプ341)、該タスクにリン
クする。選択の方法は、OSプロセスと同様であ
るが、タスクリンク時に動作モードをタスクモー
ドにする処理が追加となる。OSプロセスの場合、
ODISP330とOSプロセス群360は共にOSモ
ードで動作するため、ODISP330からOSプロ
セスへリンクする時モードの変更は不要だつたわ
けである。タスクの選択処理(ステツプ341)で
選択したタスクが、非常駐タスクの場合、即タス
クにリンクするわけにはいかないので、該タスク
のプログラムを主記憶にローデイングするため
に、プログラムローデイング用のOSプロセスを
起動する(ステツプ342)。その場合、ここで起動
したOSプロセスを動作させるため、再びODISP
330にリターンする。
TDISP340で実行可のタスクがなければア
イドルルーチン350にリンクする。アイドルル
ーチン350は、すべての割込を受け付ける状
態、すなわち、PSWのLEVELを7としてループ
する単純なプログラムである(ステツプ351)。
次に割込によるプログラム制御の流れを説明す
る。
通常、割込はアイドルルーチン350、タスク
群370、OSプロセス群360が動作中なら、
該プログラムの処理を中断して、割込処理ルーチ
ン群320に制御を渡すことができる。割込処理
ルーチンでは、OSプロセスの起動(ステツプ
321)リソースの解放(ステツプ322)などが必要
に応じて行なわれる。たとえば、デイスクからの
終了割込を処理するルーチンでは、あるタスクあ
るいはOSプロセスのデイスク使用が終了したと
してデイスクの解放処理を行なう。該処理によ
り、デイスクの占有待ちタスクあるいはOSプロ
セスのリソース待ちが解除される。
割込処理ルーチン群320の処理が終了する
と、ODISP330にリンクし、前記したと同様
にODISP330の処理が行なわれる。
以上、本発明によるプログラム間での制御の流
れを説明したが、以下、本発明の各処理ルーチン
について説明する。
第6図は、ODISP330の処理フローを示す。
ODISP330の機能は、実行可能なOSプロセ
スを1個選択し、該OSプロセスに制御を移すこ
とにある。その実現手段はRQPB1に接続された
OSPCBの実行待行列をサーチし、実行可ならそ
のOSプロセスにリンクする。これは、OSPCBか
らプログラム先頭アドレスを取り出し、該アドレ
スにジヤンプすることを意味する。(ステツプ
403) OSPCBをサーチする段階で、動かすべきOSプ
ロセスがない場合、タスクデイスパツチヤ
TDISPに制御を渡す。
上記した様に、OSプロセス用デイスパツチヤ
ODISP330をタスクデイスパツチヤTDISP3
40と分離して作成することにより、動作環境を
タスクと変えることが可能となり、かつ、OSプ
ロセス専用のプログラムとして、ODISPを作れ
るため処理の高速化が可能となる。
OSプロセスの動作環境は下記である。
(1) OSと同様、特権命令の使用が可能。
(2) OSと同様、すべてのエリアに書き込み可能。
(3) OSと同様、一部の割込は受け付けない。
(4) OSプロセスは、常駐プログラムとする。
これらは、前記したPSW、プロテクシヨンレ
ジスタをセツトすることにより実現されるが、
OSプロセスの場合、ODISPが上記(1)〜(3)で動作
しているので、改めてセツトする必要がなく、た
だ単にリンクするのみで良いことになる。
OSPCBは、起動されてから、終了するまで、
実行待行列に接続されている。次に、この実行待
行列への接続及び切離し、すなわち、OSプロセ
スの起動・終了処理について説明する。
第7図は、OSプロセスの起動処理342のフ
ローを示す。
OSプロセスは各OSプロセスを識別するために
番号を有する。この番号はOSPCBに1:1対応
で1から順にOSPCBの配列順に割り当てられる。
この番号をOSプロセス番号と呼ぶ。
起動時のパラメータは、どのOSプロセスを起
動するかを示すOSプロセス番号である。該OSプ
ロセス番号は、パラメータ取込処理(ステツプ
501)により被起動OSプロセスのOSPCBにセツ
トされる(ステツプ502)。
そして、ODISPの選択を受けられる様、該
OSPCBを実行待行列に接続する(ステツプ503)。
上記で起動されたOSプロセスは、該OSプロセ
スを起動したOSプロセスが実行不可状態、すな
わち、あるリソースの占有待ちになるとか、終了
するといつた状態になり、ODISPが動作した時
点で選択され、動作することになる。
第8図は、OSプロセスの終了処理335のフ
ローを示す。
終了処理は、OSプロセスの最終でCALLされ
て行なわれるものである。終了したOSプロセス
が使用していたOSPCBのステータスをクリアす
る(ステツプ601)。その後、OSPCBを実行待行
列から削除し(ステツプ602)処理を終了する。
その時点でODISPにジヤンプし、新たなOSプロ
セスの選択処理が開始されることになるわけであ
る。
第9図は、リソース占有処理フローを示す。
OSプロセスがあるリソースの使用待ちとなる
場合には、OSPCBをリソース待行列に接続し
OSPCBをリソース待ち状態とする(ステツプ
701)。そして、ODISPにリンクし他のOSプロセ
スに制御を移す。
第10図は、OSプロセス及びタスクのリソー
ス解放処理フローを示す。
リソース待行列に継がれているテーブル、すな
わち、OSPCBあるいはTCBをリソース待行列か
ら削除し、ENQビツトを0とする(ステツプ
802)。
第11図は、本発明によるOSプロセス制御機
構を、非常駐タスクのプログラムローデイング処
理に適用した例である。
今、あるタスクAが、他の非常駐タスクBを起
動した場合を考える。
タスクA1170から別のタスクB1160を
起動するために、タスク起動SVCルーチン11
10がCALLされる(ステツプ1171)。タスク起
動SVCルーチン1110では、タスクB116
0のTCBをタスク実行待行列の最後尾に接続し
た後(ステツプ1111)、ODISP330にリンクす
る。ODISP330では、実行すべきOSプロセス
を選択し(ステツプ3301)、そのようなOSプロセ
スがないときには、TDISP340にリンクする。
TDISP340では、タスクを選択する(ステツ
プ3401)。今の例ではタスクBが選択され、これ
が非常駐タスクのため、プログラムを主記憶へロ
ーデイングする必要がある。(ステツプ3402)。そ
こで、非常駐タスクローデイング用OSプロセス
(CSPと略す。)を起動するため、OSプロセス起
動ルーチンをCALLした後(ステツプ3403)、
ODISP330へリンクする。OSプロセス起動ル
ーチン(342)では、非常駐タスクローデイン
グ用OSプロセスを実行待行列の最後尾に接続す
る。ODISP330では、実行待ちのOSプロセス
を持行列の先頭の一つを選択してそれにリンクす
る。今の例では、他に起動されたOSプロセスが
ないと仮定すると、今起動されたOSプロセス
CSP1140を選択しリンクする。(ステツプ
3301)。CSP1140では、デイスクから非常駐
タスクを読み出すために、デイスク入出力用の
SVC処理ルーチン1120のCALL(ステツプ1141)
を行う。SVC処理ルーチン群(310)内のデ
イスク入出力用SVC処理ルーチン1120では、
デイスクをCSP1140に占有させるため、リソ
ース占有ルーチンをCALLする(ステツプ1121)。
デイスクのリソース占有待行列の先頭に継がれた
ら、CSP1140がデイスクの使用権を得たとし
(ステツプ1122)、デイスクを起動する(ステツプ
1123)。そして、ODISP330にリンクするが、
CSP1140は待状態のため、実行不可である。
そのため、ODISP330では何もせずTDIS34
0にリンクする。TDISP340ではタスクの選
択(ステツプ3401)を行うが、タスクBのローデ
イングが終了していないのでタスクBは選択でき
ない。したがつて、その前に動作していたタスク
Aを選択し(ステツプ3401)、リンクする。そし
て、タスクAが実行されるが、その実行中にデイ
スクからの終了割込が入る(図中×印の箇所に
て)と、制御権は、割込処理ルーチン1130に
移る。デイスク終了割込処理ルーチン1130で
はCSP1140のデイスク使用が終了したという
ことで、リソース解放ルーチン334をCALLし
(ステツプ1132)、他のタスクあるいはOSプロセ
スが、デイスクを占有できる様にする。その後、
ODISP330にリンクする。CSP1140はデ
イスクのリソース待行列から削除されているの
で、ODISP330はCSPを再び選択し、リンク
する。CSPは、タスクBのローデイングが終了し
たということで処理を終わる。その際、OSプロ
セスの終了ルーチン335にリンクし、終了手続
を行なう。OSプロセス終了ルーチン335は、
再びODISP330にリンクし、次に実行できる
OSプロセスを探す(ステツプ3301)。今の場合、
他に実行できるOSプロセスはないとすると、
TDISP340にリンクする。TDISP340で
は、ローデイング完了したタスクBを選択しリン
クする(ステツプ3402)。タスクBは、所定の処
理を行ない終了すると、タスク終了SVC処理ル
ーチンをCALLし、タスク終了手続を行なう。次
にODISP330、TDISP340を経由して、再
び、割込で中断されていたタスクAを選択しリン
クする。タスクAも、所定の処理終了後、タスク
終了SVC処理ルーチンをCALLして処理を終わ
る。こうして、OSプロセス、タスクとも実行す
べきものがなくなると、ODISP330、TDISP
340を経由してアイドルルーチン350にリン
クする。アイドルルーチンは、全割込受付可状態
でループする単純なプログラムであり、割込が入
れば、再び、割込処理ルーチンへ制御を移せる様
にしてある。
第2図に示した従来の例と比較すると、非常駐
タスクローデイング用プログラムが、従来はタス
クCSTで作られていたのに対し、本発明ではOS
プロセスSPとなつている。これにより、従来
EXECモジユール(第2図参照)でタスク環境を
作るために、PSW、プロテクシヨンレジスタを
セツトしていたのに対し、OSプロセスの場合、
選択されたら、単純にリンクするだけで良い。ま
た、本来、OSの処理の一部を切り出したために、
従来のCSTでは、タスクモードをOSモードに変
換するために、モード変換用の特別なSVC処理
ルーチンをCALLする必要があつたが、CSPで
は、特別なモード変換は不要となり、処理の高速
化が可能となる。
以上説明したごとく本発明に依れば、 (1) OSの一部を切り出したOSプロセスにより、
OSモードにてリソース占有待ちが可能となる。
これによりSVC命令がタスクと同様に使用可
能となる。
(2) OSプロセスは、OSと同様特権命令を直接使
用できる。
(3) OSプロセスは、OSと同様メモリプロテクシ
ヨンエリアでも自由に書き込みが可能である。
(4) タスクで実現するよりも、OSプロセスで実
現した方が高速処理が可能となる。
【図面の簡単な説明】
第1図はPSW、プロテクシヨンレジスタの関
連図、第2図は従来技術による非常駐タスクのサ
ポート処理フロー、第3図はOSPCBの構成図、
第4図は本発明のための待行列構成図、第5図は
本発明によるプログラム全体構成図、第6図は
OSプロセスデイスパツチヤの概略処理フロー、
第7図はOSプロセスの起動処理フロー、第8図
はOSプロセスの終了処理フロー、第9図はリソ
ース占有処理フロー、第10図はリソース解放処
理フロー、第11図は本発明による非常駐タスク
のサポート処理フローを示す。

Claims (1)

  1. 【特許請求の範囲】 1 タスクとOSに対して異なるプログラム実行
    状態を内部に設定して、タスクとOSを実行する
    計算機システムにおいて、OSの一部のルーチン
    (OSプロセス)実行時にリソース待ちが生じた
    時、該処理を中断して、該リソース待ちのプログ
    ラムとして該OSプロセスを登録し、リソース解
    放検出時にリソース待ちのタスクおよびOSプロ
    セスの一つをOSモードで選択し、選択したもの
    がOSプロセスの時は、計算機のプログラム実行
    状態をOSに対するものに設定して、該中断した
    OSプロセスを再開することを特徴とするOSのス
    ケジユーリング方式。 2 リソース待ちのタスクとOSプロセスがとも
    にある場合、該リソース解放検出時に、該OSプ
    ロセスを該タスクに優先して選択して実行する第
    1項のOSスケジユーリング方式。
JP19292981A 1981-12-02 1981-12-02 Osのスケジユ−リング方式 Granted JPS5896350A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP19292981A JPS5896350A (ja) 1981-12-02 1981-12-02 Osのスケジユ−リング方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19292981A JPS5896350A (ja) 1981-12-02 1981-12-02 Osのスケジユ−リング方式

Publications (2)

Publication Number Publication Date
JPS5896350A JPS5896350A (ja) 1983-06-08
JPH041370B2 true JPH041370B2 (ja) 1992-01-10

Family

ID=16299334

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19292981A Granted JPS5896350A (ja) 1981-12-02 1981-12-02 Osのスケジユ−リング方式

Country Status (1)

Country Link
JP (1) JPS5896350A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5938855A (ja) * 1982-08-27 1984-03-02 Hitachi Ltd Osの制御方式

Also Published As

Publication number Publication date
JPS5896350A (ja) 1983-06-08

Similar Documents

Publication Publication Date Title
US6772419B1 (en) Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US4553202A (en) User controlled dialog resource switching in a multi-tasking word processor
US4104718A (en) System for protecting shared files in a multiprogrammed computer
US4394725A (en) Apparatus and method for transferring information units between processes in a multiprocessing system
JPS646488B2 (ja)
FI78993C (fi) Oevervakare av driftsystem.
JPH0533410B2 (ja)
EP0747832A2 (en) Customer information control system and method in a loosely coupled parallel processing environment
JP2001318874A (ja) システム・オペレーションの間にデバイス・ドライバを置き換えるシステム,方法及びそのコンピュータ・プログラム製品
JPH0522259B2 (ja)
US7770177B2 (en) System for memory reclamation based on thread entry and release request times
JP4026667B2 (ja) マルチos構成方法
JPH0962635A (ja) 疎結合並列処理環境においてトランザクション直列化制御機能を有する顧客情報制御システム及び方法
EP0747812A2 (en) Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment
JP2821345B2 (ja) 非同期i/o制御方式
JPH05250337A (ja) 処理をプロセッサにディスパッチするためのマイクロプログラム手段を有するマルチプロセッサシステム
JPH041370B2 (ja)
JPH0895803A (ja) タスクスケジュール方法
JPH0449146B2 (ja)
JP3209560B2 (ja) マイクロプロセッサ・システムの割込管理方法
JP2926873B2 (ja) 計算機システム
JPS62221041A (ja) 仮想計算機システムにおけるデイスパツチ制御装置
EP0290533B1 (en) I/o system for off-loading operating system functions
JPH10161985A (ja) プロセッサ割付方法およびマルチプロセッサ計算機システム
JPH02129724A (ja) プログラム実行方式