JPH0247772B2 - MACHIGYORETSUSEIGYOHOSHIKI - Google Patents
MACHIGYORETSUSEIGYOHOSHIKIInfo
- Publication number
- JPH0247772B2 JPH0247772B2 JP17672781A JP17672781A JPH0247772B2 JP H0247772 B2 JPH0247772 B2 JP H0247772B2 JP 17672781 A JP17672781 A JP 17672781A JP 17672781 A JP17672781 A JP 17672781A JP H0247772 B2 JPH0247772 B2 JP H0247772B2
- Authority
- JP
- Japan
- Prior art keywords
- queue
- pointer
- block
- header
- task
- 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 - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
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
【発明の詳細な説明】
本発明は、待ち行列制御方式に関し、詳しくは
待ち行列を形成するために必要なデータ・エリア
を最小にして、主メモリの容量増大を防止するこ
とが可能な制御方式に関するものである。DETAILED DESCRIPTION OF THE INVENTION The present invention relates to a queue control method, and more particularly, to a control method that can minimize the data area required to form a queue and prevent an increase in main memory capacity. It is related to.
コンピユータ・システムには、種々の共有リソ
ース(資源)、例えば中央処理装置(CPU)、チ
ヤネル、メモリ、回線等が存在する。そして、コ
ンピユータ・システムの使用効率を向上するため
に多重プログラミングが導入された結果、システ
ム内では多数のプロセスが存在することになり、
使用可能な共有リソースの制限から、これらリソ
ースの奪い合いによる待ち行列が生じている。 A computer system includes various shared resources, such as a central processing unit (CPU), channels, memory, lines, etc. As a result of the introduction of multiple programming to improve the efficiency of computer system usage, a large number of processes exist within the system.
The limitations of available shared resources result in queuing due to competition for these resources.
一方、コンピユータ・システムのメモリには、
共有リソースの管理、ジヨブや制御の流れのスケ
ジユーリング、プログラムの結合の管理、コマン
ド、ジヨブ制御言語等ユーザからジヨブ処理の指
令を受けたり、ジヨブの出力を出す等のユーザと
のインタフエース、ユーザのプログラムからサブ
ルーチン的に利用されるフアイルのアクセス等に
関する機能をもつオペレーテイング・システムが
格納されている。 On the other hand, the memory of a computer system has
Management of shared resources, scheduling of jobs and flow of control, management of program combinations, commands, job control language, etc. Interface with users such as receiving job processing instructions from users and outputting job output, An operating system is stored therein, which has functions related to file access and the like that are used in subroutines by user programs.
ところで、待ち行列を形成する場合には、従来
より待ち行列に登録される可能性のあるすべての
制御テーブルに、待ち行列を形成するために必要
なポインタ・エリアを設けている。しかし、それ
らの制御テーブルのすべてが同時に待ち行列につ
ながれることはなく、また待ち行列に接続された
とき、通常、その数は少ないため、多くの制御テ
ーブルのポインタ・エリアが無駄になつている。
しかも、制御テーブルの数が増加すればするほ
ど、無駄なポインタ・エリアが増加するので、オ
ペレーテイング・システム(以下OSと記す)全
体が占有するメモリ容量は膨大となり、それにと
もないユーザ領域が圧迫されるという問題があ
る。 By the way, when forming a queue, pointer areas necessary for forming the queue have conventionally been provided in all control tables that may be registered in the queue. However, all of those control tables are never enqueued at the same time, and when they are enqueued, there are usually only a few, so many control table pointer areas are wasted. .
Moreover, as the number of control tables increases, the amount of wasted pointer area increases, resulting in an enormous amount of memory occupied by the entire operating system (hereinafter referred to as OS), which puts pressure on the user area. There is a problem that
コンピユータ・システムにおいて発生する待ち
行列の代表的なものは、ユーザ・プログラム(以
下タスクと呼ぶ)の実行待ち行列や、タスク間で
の共有リソース占有待ち行列である。 Typical queues that occur in computer systems are execution queues for user programs (hereinafter referred to as tasks) and shared resource occupancy queues between tasks.
第1図は、従来の待ち行列を形成するために必
要なOSの制御テーブルの説明図である。 FIG. 1 is an explanatory diagram of an OS control table necessary for forming a conventional queue.
OSは、各タスクごとにタスクの状態を管理す
るテーブル100,120,…130を設け、そ
れらをタスク番号順に並べ、その先頭アドレスを
ポインタ140により管理する。また、OSは、
実行待ち行列を管理するために、タスクの優先レ
ベルに対応した実行待ち行列用キユーヘツダ15
0,155および各種共有リソースに対応した共
有リソース占有待ち行列用キユーヘツダ160,
170を、それぞれ設ける。 The OS provides tables 100, 120, . Also, the OS is
In order to manage the execution queue, an execution queue queue header 15 corresponding to the priority level of the task is provided.
0.155 and a queue header 160 for shared resource occupancy queue corresponding to various shared resources,
170 are provided respectively.
上記の各種待ち行列は、該当する待ち行列用キ
ユーヘツダにタスク管理テーブル100,11
0,120,130等を接続することによつて管
理されるのであるが、そのため各タスク管理テー
ブル100,110,120,130にはタスク
の状態を管理する情報110の他に、実行待ち行
列用の前向きポインタ102、後向きポインタ1
04、および共有リソース占有待ち行列用の前向
きポインタ106、後向きポインタ108を設け
ている。前向きと後向きの両ポインタを設ける必
要性は、リング状に結合されるアドレスのうちの
途中の一部を取り外すとき、あるいは順次発生す
るタスクを待ち行列の最後に結合させるときの制
御を高速に行うためである。 The above various queues are stored in the task management tables 100 and 11 in the corresponding queue header.
Therefore, each task management table 100, 110, 120, 130 includes information 110 for managing the state of the task, as well as information for the execution queue. forward pointer 102, backward pointer 1
04, and a forward pointer 106 and a backward pointer 108 for the shared resource occupancy queue. The need to provide both forward and backward pointers allows for fast control when removing part of a ring of addresses or when joining sequential tasks to the end of a queue. It's for a reason.
また、各キユーヘツダ150,155,16
0,170にも、それぞれ前向きポインタ15
2,162と後向きポインタ154,164を設
ける。これらの前向きポインタと後向きポインタ
の大きさは、それぞれ4バイトである。 In addition, each queue header 150, 155, 16
0,170 also have forward pointer 15 respectively.
2,162 and backward pointers 154,164 are provided. The size of these forward and backward pointers is 4 bytes each.
第2図a,bは、それぞれ従来の待ち行列管理
状態を示す説明図である。 FIGS. 2a and 2b are explanatory diagrams each showing a conventional queue management state.
実行要求が出されたタスクがあると、OSはそ
のタスクの優先レベルに対応した実行待ち行列用
キユーヘツダ150により管理される実行待ち行
列の末尾にそのタスクの管理テーブルを挿入し、
そのタスクの実行の順番を待機させる。 When there is a task for which an execution request has been issued, the OS inserts the management table for that task at the end of the execution queue managed by the execution queue queue header 150 corresponding to the priority level of that task.
Make the task wait for its turn to execute.
いま、第2図aに示すように、実行待ち行列用
キユーヘツダ150にタスク管理テーブル10
0,120が接続されており、タスク管理テーブ
ル130をテーブル120の次に挿入する場合に
は、OSは、タスク管理テーブル120の前向き
ポインタ122にテーブル130の先頭アドレス
を設定し、テーブル130の前向きポインタ13
2に実行待ち行列用キユーヘツダ150の先頭ア
ドレスを設定し、テーブル130の後向きポイン
タ134にテーブル120の先頭アドレスを設定
し、実行待ち行列用キユーヘツダ150の後向き
ポインタ154にテーブル130の先頭アドレス
を設定することによつて、タスク管理テーブル1
30をキユーヘツダ150に管理される実行待ち
行列に登録する。実行の順番がきて、処理が終了
すると、そのタスクの管理テーブルは、OSによ
り実行待ち行列から取り外される。 Now, as shown in FIG. 2a, the task management table 10 is stored in the execution queue queue header 150.
0 and 120 are connected, and when inserting the task management table 130 next to the table 120, the OS sets the start address of the table 130 in the forward pointer 122 of the task management table 120, and pointer 13
2, the start address of the queue header 150 for the execution queue is set, the start address of the table 120 is set in the backward pointer 134 of the table 130, and the start address of the table 130 is set in the backward pointer 154 of the queue header 150 for the execution queue. Possibly task management table 1
30 is registered in the execution queue managed by the queue header 150. When the task's turn for execution comes and the processing is completed, the management table for that task is removed from the execution queue by the OS.
一方、実行中に共有リソースの占有待ちを生じ
たタスクがあると、OSはその共有リソースに対
応する占有待ちキユーヘツダ160によつて管理
される共有リソース占有待ち行列の末尾にそのタ
スクの管理テーブルを挿入し、この共有リソース
の占有待ちが解除されるまでそのタスクの実行を
中断させる。 On the other hand, if a task waits for exclusive use of a shared resource during execution, the OS stores the management table for that task at the end of the shared resource exclusive queue managed by the exclusive queue header 160 corresponding to that shared resource. and suspends execution of the task until the shared resource is no longer held.
この場合、第2図bに示すように、すでに実行
待ち行列用キユーヘツダ155にタスク管理テー
ブル180,190が接続されているときには、
タスクの管理テーブル190は実行待ち行列から
取り外されて新たに共有リソース占有待ち行列用
キユーヘツダ160に接続されるのではなく、実
行要求が出された時点での先着順序を維持するた
めに、実行待ち行列に接続したまま、さらに別の
共有リソース占有待ち行列にも接続する方法を用
いている。すなわち、タスク管理テーブル190
に対応するタスクを実行中に、キユーヘツダ16
0に対応する共有リソースの占有待ちが生じた場
合、仮に、キユーヘツダ160にはどのテーブル
も接続されていないものとすると、OSはキユー
ヘツダ160の前向きポインタ162および後向
きポインタ164にテーブル190の先頭アドレ
スを設定し、テーブル190の前向きポインタ1
96および後向きポインタ198にキユーヘツダ
160の先頭アドレスを設定することにより、テ
ーブル190をキユーヘツダ160にて管理され
る共有リソース占有待ち行列に登録する。そし
て、共有リソース占有待ちが解除されると、その
タスクの管理テーブル190は、OSにより占有
待ち行列から取り外される。 In this case, as shown in FIG. 2b, when the task management tables 180 and 190 are already connected to the execution queue queue header 155,
The task management table 190 is not removed from the execution queue and newly connected to the shared resource occupancy queue queue header 160; A method is used in which a user remains connected to a queue and also connects to another shared resource occupancy queue. That is, the task management table 190
queue header 16 while executing a task corresponding to
When a shared resource corresponding to 0 is waiting for occupancy, assuming that no table is connected to the queue header 160, the OS stores the start address of the table 190 in the forward pointer 162 and backward pointer 164 of the queue header 160. Set forward pointer 1 of table 190
By setting the start address of queue header 160 in queue header 96 and backward pointer 198, table 190 is registered in the shared resource occupancy queue managed by queue header 160. When the shared resource occupancy queue is released, the management table 190 for that task is removed from the occupancy queue by the OS.
このように、従来は、タスク管理テーブル10
0に対して、待ち行列を形成するための前向きポ
インタ102,106、後向きポインタ104,
108を設ける必要があり、管理テーブル1ケー
スごとに16バイトがポインタとして使用されてい
る。例えば、登録されたタスク数を256個とする
と、管理テーブルのポインタに要する全体のメモ
リ容量は4096バイト(=16×256)であり、また
同時に実行待ち行列に接続されるタスク数を多め
に予測して32個とすると、そのときに有効に利用
しているポインタ・エリアは512バイト(=16×
32)しかないことになり、その他の3584バイトは
無駄になつている。 In this way, conventionally, the task management table 10
0, forward pointers 102, 106, backward pointers 104,
It is necessary to provide 108 bytes, and 16 bytes are used as a pointer for each management table case. For example, if the number of registered tasks is 256, the total memory capacity required for the management table pointer is 4096 bytes (= 16 x 256), and the number of tasks connected to the execution queue at the same time is estimated to be large. Assuming that there are 32 pointers, the pointer area effectively used at that time is 512 bytes (= 16 ×
32), and the other 3584 bytes are wasted.
本発明の目的は、このような従来の欠点を除去
するため、待ち行列を形成するために必要な制御
テーブルの容量を最小限にして、無駄なエリアを
なくすことができ、しかも従来と同一のインタフ
エースでユーザにより待ち行列の操作が可能な待
ち行列制御方式を提供することにある。 An object of the present invention is to eliminate such conventional drawbacks by minimizing the capacity of the control table required to form a queue, eliminating wasted area, and, moreover, using the same method as the conventional method. An object of the present invention is to provide a queue control method that allows a user to operate a queue through an interface.
上記目的を達成するため、本発明の待ち行列制
御方式は、待ち行列の形成に必要なポインタを、
タスクの状態を管理する情報を含む第1の制御テ
ーブルから分離して該ポインタのみからなる第2
の制御テーブルを構成し、該第2の制御テーブル
上に上記第1の制御テーブルの先頭アドレスを設
定して、待ち行列に登録した後、処理が終了する
と、上記第2の制御テーブル上の設定を取り消し
て上記待ち行列から切り離すことを特徴としてい
る。 In order to achieve the above object, the queue control method of the present invention stores pointers necessary for forming a queue.
A second control table consisting only of the pointer is separated from the first control table containing information for managing the state of the task.
After configuring a control table and setting the start address of the first control table on the second control table and registering it in the queue, when the processing is completed, the settings on the second control table are The feature is that it is canceled and separated from the above queue.
以下、本発明の実施例を、図面により説明す
る。 Embodiments of the present invention will be described below with reference to the drawings.
第3図は、本発明の実施例を示す待ち行列制御
システムの概略ブロツク図である。 FIG. 3 is a schematic block diagram of a queue control system illustrating an embodiment of the present invention.
主メモリ300上のOSを格納するエリアには、
タスク管理テーブル400,420…がタスク番
号順に配置され、テーブル400の先頭アドレス
をもつポインタ440、タスクの実行待ち行列用
キユーヘツダ450、各種共有リソース占有待ち
行列用キユーヘツダ460が設けられる他に、本
発明により設定された行列ポインタ・テーブル
(以下キユーブロツクと記す)490,495お
よびそれらの空きを管理するキユーヘツダ480
等の制御テーブル類が設けられる。その他、プロ
グラム310,315等も格納されている。 The area on the main memory 300 that stores the OS is
Task management tables 400, 420, . Queue header 480 manages matrix pointer tables (hereinafter referred to as queue blocks) 490, 495 and their free space.
Control tables such as the following are provided. In addition, programs 310, 315, etc. are also stored.
共有リソースである処理装置370には、演算
回路340、制御回路350、制御メモリ360
およびメモリ・アドレス・レジスタ330、メモ
リ・データ・レジスタ335等を含むインタフエ
ース回路が設けられ、その動作は従来と同じであ
る。すなわち、制御回路350の指令により次に
実行すべき命令のアドレスが演算回路340を経
由してメモリ・アドレス・レジスタ330にセツ
トされ、主メモリ300にアクセス要求が出され
ることにより、主メモリ300から次に実行すべ
き命令が読み出されて、メモリ・データ・レジス
タ335にセツトされる。メモリ・データ・レジ
スタ335にセツトされた命令は直ちに制御回路
350に送られ、そこで解読されて制御メモリ3
60に格納されているマイクロプログラムのう
ち、その命令を実行するマイクロプログラム70
0,900,1100,1150,1400,1
450に制御が渡される。制御回路350は、マ
イクロプログラムを逐次、制御メモリ360から
読み出して解読し、それに基づいて演算回路34
0やメモリ・インタフエースやメモリ制御回路3
20を制御する。 The processing device 370, which is a shared resource, includes an arithmetic circuit 340, a control circuit 350, and a control memory 360.
An interface circuit including a memory address register 330, a memory data register 335, etc. is provided, and its operation is the same as that of the conventional one. That is, the address of the next instruction to be executed is set in the memory address register 330 via the arithmetic circuit 340 in response to a command from the control circuit 350, and by issuing an access request to the main memory 300, the address of the next instruction to be executed is set in the memory address register 330 via the arithmetic circuit 340. The next instruction to be executed is read and set in memory data register 335. The instruction set in the memory data register 335 is immediately sent to the control circuit 350, where it is decoded and stored in the control memory 335.
Among the microprograms stored in 60, the microprogram 70 executes the instructions.
0,900,1100,1150,1400,1
Control is passed to 450. The control circuit 350 sequentially reads out and decodes the microprogram from the control memory 360, and based on it reads out the microprogram from the control memory 360 and executes the arithmetic operation circuit 34.
0, memory interface, and memory control circuit 3
Control 20.
本発明により新設された待ち行列操作命令は、
マイクロプログラム700,900,1100,
1150,1400,1450である。 The queue operation instructions newly established according to the present invention are as follows:
Microprogram 700, 900, 1100,
1150, 1400, 1450.
第4図は、本発明の実施例を示す制御テーブル
の構造図である。 FIG. 4 is a structural diagram of a control table showing an embodiment of the present invention.
タスク管理テーブル400,420,…430
は、従来と同じようにタスク番号順に配置され、
その先頭アドレスがポインタ440によつて管理
される。タスク管理テーブル1ケースの構成は、
従来のタスク管理テーブルから待ち行列用のポイ
ンタ群(16バイト)を取り除いた残りのタスク状
態情報エリア404と、待ち行列に接続するとき
にキユーブロツク490,495…を対応づける
ためのポインタ402(4バイト)を設けたもの
である。 Task management table 400, 420,...430
are arranged in order of task number as before,
The start address is managed by a pointer 440. The composition of one case of the task management table is as follows:
The task status information area 404 that remains after removing the queue pointers (16 bytes) from the conventional task management table and the pointer 402 (4 bytes) for associating the queue blocks 490, 495, etc. when connecting to the queue. ).
キユーブロツク490,495は、待ち行列を
形成するときに必要なポインタ情報を持つテーブ
ルであり、1ケースの構成は第1キユー(実行待
ち行列)用の前向きポインタ492、後向きポイ
ンタ494、第2キユー(共有リソース占有待ち
行列)用の前向きポインタ496、後向きポイン
タ498、および対応づけられたテーブル用のポ
インタ499からなり、全部で20バイト(4バイ
ト×5)である。これらのキユーブロツク49
0,495は、初期状態時、つまり不使用時には
空きのキユーブロツク・リストとして管理され、
この管理のために空き管理キユーヘツダ480が
新たに設けられる。空き管理キユーヘツダ480
は、空きキユーブロツクを接続するための前向き
ポインタ482、後向きポインタ484を持つ。
実行待ち行列用キユーヘツダ450,455は従
来と同じように双方向ポインタをもつタスクの優
先レベル対応の実行待ち行列キユーヘツダであ
り、共有リソース占有待ち行列用キユーヘツダ4
60,470も、従来と同じように双方向ポイン
タをもつ各共有リソース対応の占有待ち行列キユ
ーヘツダである。 Queue blocks 490 and 495 are tables containing pointer information necessary when forming a queue, and the configuration of one case is a forward pointer 492 for the first queue (execution queue), a backward pointer 494, and a backward pointer 494 for the second queue (execution queue). It consists of a forward pointer 496 for the shared resource occupancy queue, a backward pointer 498, and a pointer 499 for the associated table, and is 20 bytes (4 bytes x 5) in total. These queue blocks 49
0,495 is managed as an empty queue block list in the initial state, that is, when not in use.
A free management queue header 480 is newly provided for this management. Free space management queue header 480
has a forward pointer 482 and a backward pointer 484 for connecting empty queue blocks.
The execution queue queue headers 450 and 455 are execution queue queue headers corresponding to the priority levels of tasks having bidirectional pointers, as in the past, and the queue headers 455 for shared resource occupation queues
60 and 470 are dedicated queue queue headers corresponding to each shared resource that have bidirectional pointers as in the conventional case.
第5図a,bは、本発明の実施例を示す待ち行
列の形成方法の説明図である。 FIGS. 5a and 5b are explanatory diagrams of a queue forming method showing an embodiment of the present invention.
第5図aでは、タスク管理テーブル550で示
されるタスクが、実行待ち行列用キユーヘツダ4
50により管理される実行待ち行列に接続されて
いる場合について説明する。 In FIG. 5a, the task indicated in the task management table 550 is placed in the execution queue queue header 4.
50 will be described.
タスク管理テーブル550で示されるタスクに
実行要求が出されると、OSは空き管理キユーヘ
ツダ480により管理されている空きキユーブロ
ツク行列の先頭から1つのキユーブロツク500
を取り外し、タスク管理テーブル550のポイン
タ552にキユーブロツク500の先頭アドレス
を設定し、一方そのキユーブロツク500のテー
ブル用ポインタ509にテーブル550の先頭ア
ドレスを設定することにより、そのテーブル55
0とキユーブロツク500との対応づけを行う。
さらに、OSは、そのキユーブロツク500に関
して従来と同じように実行待ち行列への挿入操作
を行う。すなわち、キユーブロツク500の前向
きポインタ502は次に並んでいるキユーブロツ
ク510の先頭アドレスを保持し、後向きポイン
タ504はその前に並んでいる実行待ち行列用キ
ユーヘツダ450の先頭アドレスを保持するよう
に情報を設定する。なお、実行待ち行列用キユー
ヘツダ450の次に他のキユーブロツクが接続さ
れているときには、前に並んでいるキユーブロツ
クの先頭アドレスを保持することになる。 When an execution request is issued to a task shown in the task management table 550, the OS selects one queue block 500 from the head of the free queue block matrix managed by the free management queue header 480.
, and set the start address of the queue block 500 in the pointer 552 of the task management table 550, and set the start address of the table 550 in the table pointer 509 of the queue block 500.
0 and the queue block 500.
Furthermore, the OS performs an operation for inserting the queue block 500 into the execution queue in the same manner as before. That is, information is set so that the forward pointer 502 of the queue block 500 holds the start address of the next queue block 510 in line, and the backward pointer 504 holds the start address of the queue header 450 for the execution queue lined up before it. do. Note that when another queue block is connected next to the execution queue queue header 450, the head address of the queue block in front of it is held.
次に、第5図bにおいては、タスク管理テーブ
ル590で表されるタスクの実行中に、共有リソ
ース占有待ち行列用キユーヘツダ460に対応す
る共有リソースの占有待ちが生じたものとする。
この場合には、テーブル590に対応するキユー
ブロツク540をキユーヘツダ460により管理
される占有待ち行列に挿入する操作を行うが、キ
ユーヘツダ460およびキユーブロツク540の
ポインタ値は、キユーヘツダ460の先頭アドレ
スあるいはキユーブロツク540の第2キユー用
前向きポインタ546のアドレスとする。すなわ
ち、OSは、キユーヘツダ460の後向きポイン
タ464にはキユーブロツク540の前向きポイ
ンタ546のアドレスを設定し、キユーブロツク
540の前向きポインタ546、後向きポインタ
548にはキユーヘツダ460の先頭アドレスを
設定する。 Next, in FIG. 5B, it is assumed that the shared resource corresponding to the shared resource occupancy queue queue header 460 is waiting for occupancy while the task represented by the task management table 590 is being executed.
In this case, the queue block 540 corresponding to the table 590 is inserted into the exclusive queue managed by the queue header 460, but the pointer values of the queue header 460 and queue block 540 are This is the address of the forward pointer 546 for 2 queues. That is, the OS sets the address of the forward pointer 546 of the queue block 540 in the backward pointer 464 of the queue header 460, and sets the start address of the queue header 460 in the forward pointer 546 and backward pointer 548 of the queue block 540.
第6図は、本発明の実施例を示す待ち行列操作
命令の説明図である。 FIG. 6 is an explanatory diagram of a queue operation command showing an embodiment of the present invention.
第6図において、大文字(英字)は各命令のニ
モニツクを示し、子文字(英字)はオペランドを
示す。topqhdはキユーヘツダの先頭アドレスを、
toptblはテーブルの先頭アドレスを、regはレジ
スタ番号を、またeaddrは異常時のジヤンプ先ア
ドレスを、それぞれ示す。 In FIG. 6, uppercase letters (letters) indicate mnemonics of each instruction, and child letters (letters) indicate operands. topqhd is the top address of the queue header,
toptbl indicates the start address of the table, reg indicates the register number, and eaddr indicates the jump destination address in the event of an error.
(a) GTFQT命令は、topqhdで示す空き管理キ
ユーヘツダEQBHによつて管理されている空
きのキユーブロツク・リストの先頭からキユー
ブロツクQBを1つ外し、toptblで示すタスク
管理テーブルTCBとそのキユーブロツクQBと
の対応づけを行い、そのキユーブロツクQBの
先頭アドレスをregで示すレジスタに設定する
機能を果す。このとき、topqhdで示す空き管
理キユーヘツダEQBHに空きのキユーブロツ
クQBが全くない場合には、何もせずに、
eaddrで示される番地にジヤンプする。(a) The GTFQT instruction removes one queue block QB from the head of the free queue block list managed by the free management queue header EQBH indicated by topqhd, and matches the task management table TCB indicated by toptbl with that queue block QB. It performs the function of attaching the queue block QB and setting the start address of that queue block QB to the register indicated by reg. At this time, if there is no free queue block QB in the free management queue header EQBH indicated by topqhd, do nothing and
Jump to the address indicated by eaddr.
(b) FREQT命令は、toptblで示すタスク管理テ
ーブルTCBに対応づけられているキユーバツ
フアQBとそのタスク管理テーブルTCBとの対
応づけを解消し、そのキユーブロツクQBを
topqhdで示す空き管理キユーヘツダEQBHに
より管理されている空きキユーブロツク・リス
トの先頭に挿入する機能を果す。(b) The FREQT instruction cancels the association between the queue buffer QB associated with the task management table TCB indicated by toptbl and its task management table TCB, and
It functions to insert at the top of the free queue block list managed by the free management queue header EQBH indicated by topqhd.
(c) INQLT命令は、topqhdで示すキユーヘツダ
EQBHにより管理されている待ち行列の末尾
に、toptblで示すタスク管理テーブル(実際に
はこのタスク管理テーブルTCBに対応するキ
ユーブロツクQB)をその待ち行列が第1キユ
ーになるように挿入する機能を果す。(c) The INQLT command uses the queue header indicated by topqhd.
Functions to insert the task management table indicated by toptbl (actually the queue block QB corresponding to this task management table TCB) at the end of the queue managed by EQBH so that the queue becomes the first queue. .
(d) INQLS命令は、topqhdで示すキユーヘツダ
EQBHにより管理されている待ち行列の末尾
に、toptblで示すテーブル(実際には、このテ
ーブルTCBに対応するキユーブロツク(QB))
をその待ち行列が第2キユーになるように挿入
する機能を果す。(d) The INQLS command uses the queue header indicated by topqhd.
At the end of the queue managed by EQBH, there is a table indicated by toptbl (actually, a queue block (QB) corresponding to this table TCB).
The function is to insert the queue so that it becomes the second queue.
(e) RMVQT命令は、toptblで示すテーブル(実
際には、このテーブルTCBに対応するキユー
ブロツクQB)を第1キユーから取り外す機能
を果す。(e) The RMVQT instruction serves to remove the table indicated by toptbl (actually, the queue block QB corresponding to this table TCB) from the first queue.
(f) RMVQS命令は、toptblで示すテーブル(実
際には、このテーブルに対応するキユーブロツ
ク)を第2キユーから取り外す機能を果す。(f) The RMVQS instruction serves to remove the table indicated by toptbl (actually the queue block corresponding to this table) from the second queue.
第7図は、第6図に示すGTFQT命令の処理手
順のフローチヤート、第8図は同じくGTFQT命
令のデータ操作説明図である。 FIG. 7 is a flowchart of the processing procedure of the GTFQT instruction shown in FIG. 6, and FIG. 8 is an explanatory diagram of data manipulation of the GTFQT instruction.
ブロツク705では、第8図aに示すように、
topqhd602で示される空き管理キユーヘツダ
480の前向きポインタ482の内容を取り出
す。次に、ブロツク710では、前向きポインタ
482の内容とtopqhd602(すなわち、管理
キユーヘツダ480の先頭アドレス)を比較し、
空きキユーブロツクがないか否かをチエツクす
る。 In block 705, as shown in FIG. 8a,
The contents of the forward pointer 482 of the free management queue header 480 indicated by topqhd 602 are retrieved. Next, block 710 compares the contents of forward pointer 482 with topqhd 602 (i.e., the top address of management queue header 480);
Check whether there are any free queue blocks.
すなわち、前向きポインタ482がキユーヘツ
ダ自身を指示している場合には、何も接続されて
いないことになるので、ポインタ482の内容を
調べる。比較結果が等しいときには空きキユーブ
ロツクはないので、ブロツク735に進みユーザ
の処理にまかせる。つまり、eaddrに分岐するよ
うに、プログラム・カウンタにeaddrを設定す
る。eaddr番地の命令へ移る。 That is, if the forward pointer 482 points to the queue header itself, this means that nothing is connected, so the contents of the pointer 482 are checked. If the comparison results are equal, there is no free queue block, so the process advances to block 735 and is left to the user's processing. In other words, set eaddr in the program counter so that the program branches to eaddr. Move to the command at eaddr address.
空きキユーブロツクがあれば、ブロツク715
で、前向きポインタ482の内容(すなわち、空
きキユーブロツクの先頭アドレス)をreg606
で示されるレジスタ800に設定する(第8図の
点線矢印)。 If there is a free queue block, block 715
Then, the contents of the forward pointer 482 (that is, the start address of the free queue block) are set to reg606.
(dotted line arrow in FIG. 8).
次に、ブロツク720では、以下の操作を行う
ことにより空きキユーブロツク・リストの先頭の
キユーブロツク810をリストから取り外す。す
なわち、キユーブロツク810の前向きポインタ
812の内容を空き管理キユーヘツダ480の前
向きポインタ482に設定し(第8図の点線矢
印)、キユーブロツク810の後向きポインタ8
14の内容を前向きポインタ812の内容によつ
て示されるキユーブロツク820の後向きポイン
タ824(あるいは管理キユーヘツド480の後
向きポインタ484)に設定する(第8図の点線
矢印)。 Next, in block 720, the queue block 810 at the head of the free queue block list is removed from the list by performing the following operations. That is, the contents of the forward pointer 812 of the queue block 810 are set to the forward pointer 482 of the free management queue header 480 (dotted arrow in FIG. 8), and the contents of the forward pointer 812 of the queue block 810 are set to
14 is set in backward pointer 824 of queue block 820 (or backward pointer 484 of management queue head 480) indicated by the contents of forward pointer 812 (dotted arrow in FIG. 8).
次に、ブロツク725では、以下の操作により
キユーブロツク810とtoptbl604で示される
テーブル830との対応づけを行う(第8図b参
照)。すなわち、キユーブロツク810のテーブ
ル用ポインタ819にtoptbl604(すなわち、
テーブル830の先頭アドレス)を設定し、テー
ブル830のポインタ832にブロツク715に
おいてレジスタ800に設定したキユーブロツク
810の先頭アドレスを設定する(第8図の点線
矢印)。ブロツク725の処理を終了すると、本
命令は終了するので、次の番地の命令実行に移る
(730)。 Next, in block 725, the queue block 810 is associated with the table 830 indicated by toptbl 604 by the following operation (see FIG. 8b). That is, toptbl 604 (i.e.,
The start address of the queue block 810 set in the register 800 in block 715 is set in the pointer 832 of the table 830 (dotted line arrow in FIG. 8). When the processing of block 725 is completed, this instruction is completed, and the process moves to execution of the instruction at the next address (730).
第8図aの状態から、第8図bの状態に移るこ
とにより、空きキユーブロツクの1つ810が
toptblで示すテーブル830と対応づけられたこ
とになる。 By moving from the state shown in FIG. 8a to the state shown in FIG. 8b, one of the empty queue blocks 810 becomes
This means that it is associated with the table 830 indicated by toptbl.
第9図は、第6図におけるFREQT命令の処理
手順を示すフローチヤートであり、第10図は同
じくそのデータ操作図である。 FIG. 9 is a flowchart showing the processing procedure of the FREQT instruction in FIG. 6, and FIG. 10 is a data manipulation diagram thereof.
ブロツク905では、toptbl614で示される
テーブル1030のポインタ1032の内容(そ
のテーブルに対応するキユーブロツク1010の
先頭アドレス)を取り出す。次に、ブロツク91
0では、以下の操作により、キユーブロツク10
10をtopqhd612で示され、かつキユーヘツ
ダ480で管理される空きキユーブロツク・リス
トの先頭に挿入する。すなわち、キユーヘツダ4
80の前向きポインタ482の内容をキユーブロ
ツク1010の前向きポインタ1012に設定
し、topqhd612をキユーブロツク1010の
後向きポインタ1014に設定し、またキユーヘ
ツダ480の前向きポインタ482の内容で示さ
れるキユーブロツク1020の後向きポインタ1
024(あるいはキユーヘツダ480の後向きポ
インタ484)にテーブル1030のポインタ1
032の内容を設定する。 In block 905, the contents of pointer 1032 of table 1030 indicated by toptbl614 (the top address of queue block 1010 corresponding to that table) is retrieved. Next, block 91
0, the following operation will change the queue block 10.
10 is inserted at the beginning of the free queue block list indicated by topqhd 612 and managed by queue header 480. That is, queue header 4
80 to the forward pointer 1012 of the queue block 1010, topqhd 612 to the backward pointer 1014 of the queue block 1010, and the backward pointer 1 of the queue block 1020 indicated by the contents of the forward pointer 482 of the queue header 480.
024 (or backward pointer 484 of queue header 480) to pointer 1 of table 1030.
Set the contents of 032.
次に、ブロツク915と920では、以下の操
作によりテーブル1030とキユーブロツク10
10との対応づけを解消する。すなわち、テーブ
ル1030のポインタ1032とキユーブロツク
1010のポインタ1019にそれぞれオールゼ
ロ1000を設定する。ブロツク920が終了し
たとき、本命令は終了するので、次の番地の命令
を実行する(925)。 Next, in blocks 915 and 920, table 1030 and queue block 10 are
The association with 10 is canceled. That is, all zeros 1000 are set in the pointer 1032 of the table 1030 and the pointer 1019 of the queue block 1010, respectively. When block 920 ends, this instruction ends, so the instruction at the next address is executed (925).
第11図Aは、第6図におけるINQLT命令の
処理手順を示すフローチヤートであり、第12図
は同じくそのデータ操作図である。 FIG. 11A is a flowchart showing the processing procedure of the INQLT command in FIG. 6, and FIG. 12 is a data operation diagram thereof.
ブロツク1105では、toptbl624で示され
るテーブル1230のポインタ1232の内容を
取り出す。次に、ブロツク1110では、
topqhd622で示されるタスク実行待ち行列キ
ユーヘツダ450の後向きポインタ454の内容
を取り出す。 Block 1105 retrieves the contents of pointer 1232 of table 1230 indicated by toptbl624. Next, in block 1110,
The contents of the backward pointer 454 of the task execution queue queue header 450 indicated by topqhd 622 are retrieved.
次に、ブロツク1115では、以下の内容によ
りテーブル1230のポインタ1232で示され
るキユーブロツク1210を、待ち行列キユーヘ
ツダ450で管理される待ち行列の第1キユーと
して、その待ち行列の末尾に挿入する。すなわ
ち、キユーヘツダ450の後向きポインタ454
の内容で示されるキユーブロツク1200の前向
きポインタ1202(あるいは待ち行列キユーヘ
ツダ450の前向きポインタ452)および待ち
行列キユーヘツダ450の後向きポインタ454
に設定する。ブロツク1115を終了することに
より、本命令を終了し、次の命令の実行に移る
(1120)。 Next, in block 1115, the queue block 1210 indicated by pointer 1232 of table 1230 is inserted at the end of the queue as the first queue managed by queue queue header 450 according to the following contents. That is, the backward pointer 454 of the cue header 450
Forward pointer 1202 of queue block 1200 (or forward pointer 452 of queue queue header 450) and backward pointer 454 of queue queue header 450, indicated by the contents of
Set to . By terminating block 1115, this instruction is terminated and execution of the next instruction is started (1120).
第11図Bは、第6図におけるINQLS命令の
処理手順を示すフローチヤートであり、第13図
は同じくそのデータ操作図である。 FIG. 11B is a flowchart showing the processing procedure of the INQLS command in FIG. 6, and FIG. 13 is a data operation diagram thereof.
INQLT命令と本命令(INQLS)との相違点
は、前者が第1キユーを対象とするのに対し、後
者は第2キユーを対象とするところにある。すな
わち、第11図Bのブロツク1155,1160
は、第11図Aのブロツク1105,1110と
同一内容であるので、相違点であるブロツク11
65について説明する。 The difference between the INQLT command and this command (INQLS) is that the former targets the first queue, while the latter targets the second queue. That is, blocks 1155 and 1160 in FIG.
has the same content as blocks 1105 and 1110 in FIG. 11A, so the difference between block 11
65 will be explained.
ブロツク1165では、以下の操作によりテー
ブル1330のポインタ1332で示されるキユ
ーブロツク1310を共有リソース占有待ち行列
キユーヘツダ460で管理される待ち行列を、第
2キユーとしてその待ち行列の末尾に挿入する。
すなわち、待ち行列キユーヘツダ460の後向き
ポインタ464の内容で示されるキユーブロツク
1300の前向きポインタ1306(あるいは待
ち行列キユーヘツダ460の前向きポインタ46
2)の内容をキユーブロツク1310の前向きポ
インタ1316に設定し、待ち行列キユーヘツダ
460の後向きポインタ464の内容をキユーブ
ロツク1310の後向きポインタ1318に設定
し、テーブル1330のポインタ1332の内容
に8(バイト)1340を加えた値(すなわち、
キユーブロツク1310の前向きポインタ131
6のアドレス)をキユーブロツク1300の前向
きポインタ1306(あるいは待ち行列キユーヘ
ツダ460の前向きポインタ462)および待ち
行列キユーヘツダ460の後向きポインタ464
に設定する。 In block 1165, the queue block 1310 indicated by pointer 1332 of table 1330 is inserted into the queue managed by shared resource occupancy queue queue header 460 as a second queue at the end of the queue by the following operation.
That is, forward pointer 1306 of queue block 1300 (or forward pointer 46 of queue queue header 460
2) is set to the forward pointer 1316 of the queue block 1310, the contents of the backward pointer 464 of the queue queue header 460 are set to the backward pointer 1318 of the queue block 1310, and the contents of the pointer 1332 of the table 1330 are set to 8 (bytes) 1340. plus the value (i.e.
Forward pointer 131 of queue block 1310
6 address) to forward pointer 1306 of queue block 1300 (or forward pointer 462 of queue queue header 460) and backward pointer 464 of queue queue header 460.
Set to .
第14図Aは、第6図におけるRMVQT命令
の処理手順を示すフローチヤートであり、第15
図は同じくそのデータ操作図である。 FIG. 14A is a flowchart showing the processing procedure of the RMVQT command in FIG.
The figure is also a data operation diagram.
ブロツク1405では、toptbl642で示され
るテーブル1540のポインタ1542の内容を
取り出す。次に、ブロツク1410では、以下の
操作によりテーブル1540のポインタ1542
の内容で示されるキユーブロツク1510をそれ
が接続されている第1キユーから取り外す。キユ
ーブロツク1510の前向きポインタ1512の
内容を、後向きポインタ1514の内容で示され
るキユーブロツク1500の前向きポインタ15
02(あるいは実行待ち行列キユーヘツダ450
の前向きポインタ452)に設定し、キユーブロ
ツク1510の後向きポインタ1514の内容を
前向きポインタ1512の内容で示されるキユー
ブロツク1520の後向きポインタ1524(あ
るいは待ち行列キユーヘツダ450の後向きポイ
ンタ454)に設定する。 Block 1405 retrieves the contents of pointer 1542 of table 1540 indicated by toptbl642. Next, in block 1410, pointer 1542 of table 1540 is set by the following operation.
Remove the queue block 1510 indicated by the contents of the queue block 1510 from the first queue to which it is connected. The contents of the forward pointer 1512 of the queue block 1510 are transferred to the forward pointer 15 of the queue block 1500 as indicated by the contents of the backward pointer 1514.
02 (or execution queue queue header 450
The contents of the backward pointer 1514 of the queue block 1510 are set to the backward pointer 1524 of the queue block 1520 (or the backward pointer 454 of the queue queue header 450) indicated by the contents of the forward pointer 1512.
ブロツク1410の処理を終えると、本命令は
終了して、次の命令の実行に移る(1415)。 When the processing of block 1410 is completed, this instruction ends and the execution moves on to the next instruction (1415).
第14図Bは、第6図におけるRMVQS命令の
処理手順を示すフローチヤートであり、第16図
は同じくそのデータ操作図である。 FIG. 14B is a flowchart showing the processing procedure of the RMVQS command in FIG. 6, and FIG. 16 is a data operation diagram thereof.
先に述べたRMVQT命令と本命令との相違は、
前者が第1キユーに対するものであるのに対し
て、後者は第2キユーに対するものである点にあ
る。したがつて、第14図Bのブロツク1455
は第14図Aのブロツク1405と同一であり、
ブロツク1460のみが異なるので、異なる動作
についてのみ説明する。 The difference between the RMVQT command mentioned earlier and this command is
The former is for the first queue, while the latter is for the second queue. Therefore, block 1455 of FIG. 14B
is the same as block 1405 in FIG. 14A,
Since only block 1460 is different, only the different operations will be described.
toptbl652で示されるテーブル1640のポ
インタ1642の内容により示されるキユーブロ
ツク1610の前向きポインタ1616の内容
を、後向きポインタ1618の内容で示されるキ
ユーブロツク1600の前向きポインタ1606
(あるいは共有リソース占有待ち行列キユーヘツ
ダ460の前向きポインタ462)に設定し、キ
ユーブロツク1610の後向きポインタ1618
の内容を前向きポインタ1616の内容で示され
るキユーブロツク1620の後向きポインタ16
28(あるいはキユーヘツダ460の後向きポイ
ンタ464)に設定する。 The contents of the forward pointer 1616 of the queue block 1610 indicated by the contents of the pointer 1642 of the table 1640 indicated by toptbl 652 are transferred to the forward pointer 1606 of the queue block 1600 indicated by the contents of the backward pointer 1618.
(or the forward pointer 462 of the shared resource occupancy queue queue header 460) and the backward pointer 1618 of the queue block 1610.
The contents of the backward pointer 16 of the queue block 1620 are indicated by the contents of the forward pointer 1616.
28 (or backward pointer 464 of cue header 460).
以上、第6図に示す各命令について、動作を説
明したが、これらの説明から明らかなように、タ
スク管理テーブルTCBから待ち行列用のポイン
タを切り離してキユーブロツクQBとして独立さ
せ、かつキユーブロツクQBを必要最小限のケー
ス数のみ用意し、必要に応じてタスク管理テーブ
ルTCBとキユーブロツクQBを対応づけてテーブ
ルTCBの待ち行列を形成するテーブル構造にす
るので、ポインタ・エリアの無駄なメモリ容量を
削減することができる。例えば、タスク総数を
256個、キユーブロツクQBのケース数(同時に
実行可能なタスク数)を64個、同時実行中のタス
クを多めに見て32個と仮定すると、管理テーブル
TCBのポインタおよびキユーブロツク全体の容
量は2304バイト(=4バイト×5×64+4バイト
×256)であり、このうち有効に利用されている
エリアは768(=4バイト×5×32+4バイト×
32)になる。すなわち、従来は、待ち行列管理の
ために4096バイト(=4バイト×4×256)を要
していたのに対して、2304バイトに減少すること
ができ、かつそれらのエリアの利用度を向上でき
る。 The operations of each instruction shown in Fig. 6 have been explained above, but as is clear from these explanations, the queue pointer is separated from the task management table TCB and made independent as a queue block QB, and the queue block QB is not required. By preparing only the minimum number of cases and creating a table structure in which the task management table TCB and the queue block QB are associated with each other as necessary to form a queue for the table TCB, wasted memory capacity in the pointer area can be reduced. I can do it. For example, the total number of tasks
The management table
The total capacity of the TCB pointer and queue block is 2304 bytes (=4 bytes x 5 x 64 + 4 bytes x 256), of which the area that is effectively used is 768 (=4 bytes x 5 x 32 + 4 bytes x
32). In other words, whereas previously 4096 bytes (=4 bytes x 4 x 256) were required for queue management, this can be reduced to 2304 bytes, and the utilization of those areas has been improved. can.
次に、第6図に示すGTEQT、FREQT、
INQLT、INQLS、RMVQT、RMVQS等の命令
を設けることによつて、ユーザはキユーブロツク
の構造やキユーブロツク間の結合を意識すること
なく、従来と同じようにタスク管理テーブル
TCBの先頭アドレスを意識するのみで、タスク
の待ち行列制御を行うことができ、かつタスク管
理テーブルTCBとキユーブロツクQBにの対応づ
けはマイクロプログラムにより実現されるので、
それらに伴うオーバーヘツドは無視できるほど少
なくすることができる。 Next, GTEQT, FREQT, shown in Figure 6,
By providing commands such as INQLT, INQLS, RMVQT, and RMVQS, users can use the task management table in the same way as before, without having to be aware of the structure of queue blocks or the connections between queue blocks.
Task queue control can be performed simply by being aware of the start address of the TCB, and the correspondence between the task management table TCB and the queue block QB is realized by a microprogram.
The overhead associated with them can be negligible.
以上説明したように、本発明によれば、待ち行
列に必要なポインタを一般のテーブルから分離し
て独立した制御テーブルを形成し、かつその制御
テーブルのケース数を必要最少限だけ用意し、必
要に応じて一般のテーブルと対応づけ、待ち行列
を形成するテーブル構造とするので、待ち行列ポ
インタによる制御テーブル容量の増大および無駄
エリアの増大を減少することができる。また、ユ
ーザは上記のようなテーブル構造を全く意識せ
ず、本発明による待ち行列操作の命令を発行する
のみで、従来と同じインタフエースで待ち行列を
操作することができ、しかも一般テーブルとの対
応づけに伴うオーバヘツドも無視できるほど少な
くできる。 As explained above, according to the present invention, the pointers necessary for the queue are separated from the general table to form an independent control table, and the number of cases of the control table is prepared to the minimum necessary. Since the table structure is such that a queue is formed by associating the control table with a general table according to the data, it is possible to reduce the increase in control table capacity and waste area due to queue pointers. In addition, the user can operate the queue using the same interface as before by simply issuing the queue operation command according to the present invention without being aware of the table structure as described above. The overhead associated with association can also be reduced to a negligible level.
第1図は従来の待ち行列に関する制御テーブル
の構造図、第2図は従来の待ち行列管理状態を示
す説明図、第3図は本発明の実施例を示す待ち行
列制御システムの概略ブロツク図、第4図は本発
明の実施例を示す制御テーブルの構造図、第5図
は本発明の実施例を示す待ち行列の形成方法の説
明図、第6図は本発明の実施例を示す待ち行列操
作命令の説明図、第7図、第9図、第11図およ
び第14図はいずれも第6図に示す制御命令の処
理手順のフローチヤート、第8図、第10図、第
12図、第13図、第15図および第16図はい
ずれも第6図に示す制御命令に伴うデータ操作の
説明図である。
400,420,430,550,560,5
70,580,590,830,1030,12
20,1230,1320,1330,153
0,1540,1550,1630,1640,
1650:タスク管理テーブル(TCB)、14
0,440:先頭アドレス・ポインタ、150,
155,450,455:実行待ち行列用キユー
ヘツダ、160,170,460,470:共有
リソース占有待ち行列用キユーヘツダ、480:
空き管理キユーヘツダ、490,495,50
9,510,520,530,540,810,
820,1010,1020,1200,121
0,1300,1310,1500,1510,
1520,1600,1610,1620:キユ
ーブロツク、370:処理装置、300:主メモ
リ、330:メモリ・アドレス・レジスタ、33
5:メモリ・データ・レジスタ、340:演算回
路、350:制御回路、360:制御メモリ、7
00,900,1100,1150,1400,
1450:待ち行列操作用マイクロプログラム。
FIG. 1 is a structural diagram of a control table related to a conventional queue, FIG. 2 is an explanatory diagram showing a conventional queue management state, and FIG. 3 is a schematic block diagram of a queue control system showing an embodiment of the present invention. FIG. 4 is a structural diagram of a control table showing an embodiment of the present invention, FIG. 5 is an explanatory diagram of a queue formation method showing an embodiment of the present invention, and FIG. 6 is a queue diagram showing an embodiment of the present invention. The explanatory diagrams of the operation commands, FIGS. 7, 9, 11, and 14 are all flowcharts of the control command processing procedure shown in FIG. 6, and FIGS. 8, 10, 12, 13, FIG. 15, and FIG. 16 are all explanatory diagrams of data manipulation accompanying the control command shown in FIG. 6. 400, 420, 430, 550, 560, 5
70,580,590,830,1030,12
20, 1230, 1320, 1330, 153
0,1540,1550,1630,1640,
1650: Task management table (TCB), 14
0,440: Start address pointer, 150,
155, 450, 455: Queue header for execution queue, 160, 170, 460, 470: Queue header for shared resource occupation queue, 480:
Free management queue header, 490,495,50
9,510,520,530,540,810,
820, 1010, 1020, 1200, 121
0,1300,1310,1500,1510,
1520, 1600, 1610, 1620: queue block, 370: processing unit, 300: main memory, 330: memory address register, 33
5: Memory data register, 340: Arithmetic circuit, 350: Control circuit, 360: Control memory, 7
00,900,1100,1150,1400,
1450: Microprogram for queue operation.
Claims (1)
コンピユータ・システムにおいて、タスクあるい
は共有リソース占有の待ち行列に必要なポインタ
を、タスクの状態を管理する情報を含む第1の制
御テーブルから分離して、該ポインタのみからな
る第2の制御テーブルを構成し、該第2の制御テ
ーブル上に上記第1の制御テーブルの先頭アドレ
スを設定して、待ち行列に登録した後、処理が終
了すると、上記第2の制御テーブル上の設定を取
り消して、上記待ち行列から切り離すことを特徴
とする待ち行列制御方式。 2 前記待ち行列の登録あるいは切り離しは、第
1の制御テーブルを指定する命令のみを用いて行
うことを特徴とする特許請求の範囲第1項記載の
待ち行列制御方式。[Scope of Claims] 1. In a computer system consisting of a main memory, a central processing unit, and a peripheral device, a first control system that controls a pointer necessary for a queue for occupying a task or a shared resource and that includes information for managing the state of the task. Separate from the table, configure a second control table consisting only of the pointers, set the start address of the first control table on the second control table, register it in the queue, and then process When the process is completed, the settings on the second control table are canceled and the queue is separated from the queue. 2. The queue control method according to claim 1, wherein registration or separation of the queue is performed using only an instruction specifying a first control table.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP17672781A JPH0247772B2 (en) | 1981-11-04 | 1981-11-04 | MACHIGYORETSUSEIGYOHOSHIKI |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP17672781A JPH0247772B2 (en) | 1981-11-04 | 1981-11-04 | MACHIGYORETSUSEIGYOHOSHIKI |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS5878238A JPS5878238A (en) | 1983-05-11 |
| JPH0247772B2 true JPH0247772B2 (en) | 1990-10-22 |
Family
ID=16018718
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP17672781A Expired - Lifetime JPH0247772B2 (en) | 1981-11-04 | 1981-11-04 | MACHIGYORETSUSEIGYOHOSHIKI |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0247772B2 (en) |
-
1981
- 1981-11-04 JP JP17672781A patent/JPH0247772B2/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPS5878238A (en) | 1983-05-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4394725A (en) | Apparatus and method for transferring information units between processes in a multiprocessing system | |
| US5701495A (en) | Scalable system interrupt structure for a multi-processing system | |
| JPS646488B2 (en) | ||
| US5291581A (en) | Apparatus and method for synchronization of access to main memory signal groups in a multiprocessor data processing system | |
| JP3644042B2 (en) | Multitask processing device | |
| JPH0247772B2 (en) | MACHIGYORETSUSEIGYOHOSHIKI | |
| EP0297895B1 (en) | Apparatus and method using lockout for synchronization of access to main memory signal groups in a multiprocessor data processing system | |
| CN108958904B (en) | Driver framework of lightweight operating system of embedded multi-core central processing unit | |
| EP0301707B1 (en) | Apparatus and method for providing an extended processing environment on nonmicrocoded data processing system | |
| JPH0895810A (en) | Batch job execution system | |
| JPS603229B2 (en) | Information processing method | |
| JPH0668725B2 (en) | Device for responding to interrupt condition in data processing system and method for responding to asynchronous interrupt condition | |
| JP2579008B2 (en) | Time-division multitasking execution device | |
| JPH0115899B2 (en) | ||
| JPH0199132A (en) | Multi-task executing device | |
| JPH01126738A (en) | System for control data set competition in execution of multiple job | |
| JPH0219494B2 (en) | ||
| JPS61160147A (en) | Virtual computer control system | |
| JPH0452490B2 (en) | ||
| JPH0376497B2 (en) | ||
| JPH02143321A (en) | Output server for network environment | |
| JPH041370B2 (en) | ||
| JPH01222335A (en) | Multi-task processing system | |
| JPH0460842A (en) | Computer system | |
| JPH0797322B2 (en) | Dispatch control method |