JP3263123B2 - データ処理システムにおけるソート処理方式 - Google Patents

データ処理システムにおけるソート処理方式

Info

Publication number
JP3263123B2
JP3263123B2 JP13402592A JP13402592A JP3263123B2 JP 3263123 B2 JP3263123 B2 JP 3263123B2 JP 13402592 A JP13402592 A JP 13402592A JP 13402592 A JP13402592 A JP 13402592A JP 3263123 B2 JP3263123 B2 JP 3263123B2
Authority
JP
Japan
Prior art keywords
thread
record
buffer
sort
application program
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 - Fee Related
Application number
JP13402592A
Other languages
English (en)
Other versions
JPH05324271A (ja
Inventor
治久 山下
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP13402592A priority Critical patent/JP3263123B2/ja
Priority to US08/067,087 priority patent/US5794240A/en
Publication of JPH05324271A publication Critical patent/JPH05324271A/ja
Application granted granted Critical
Publication of JP3263123B2 publication Critical patent/JP3263123B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データ処理システムに
おけるソート処理を行うソート処理装置に関するもので
ある。
【0002】COBOLアプリケーションやデータベー
ス処理などのプログラム実行中にソート処理を必要とす
る金融に代表される定期的に多量データをソートする業
務において、オープンシステムのシステム記述言語(例
えばC言語)に適合させる際に、入出力処理とソート処
理とを分離し、ソート性能を向上させることが望まれて
いる。
【0003】
【従来の技術】従来、応用プログラムの処理の中でソー
ト処理を行う場合、図5の(a)に示すように、ソート
処理22を呼び出し、当該ソート処理22の中で応用プ
ログラム21との間でデータの授受を行っていた。
【0004】
【発明が解決しようとする課題】しかし、UNIXで代
されるオープンシステムに上述した構成を適用する
と、オープンシステムのシステム記述言語(C言語)で
は応用プログラムの主ルーチンと出口ルーチンを別々の
モジュールに分割せざるを得ない。その結果、主ルーチ
ンと出ロルーチンとの間のデータの共用が困難となる。
即ち、図5の(b)のスタック構造に示すように、応用
プログラム21の主ルーチンのスタック域と、応用プロ
グラム21の出ロルーチンのスタック域との間に、ソー
ト処理22のスタック域が入り、スタック域のデータを
相互にアクセスできないという問題が発生する。
【0005】本発明は、これらの問題を解決するため、
レコードの入出力処理を行う部分と、実際のソート処理
を行う部分とを別々のスレッド(CPU実行単位)に分
け、これらスレッド間に共通に利用するバッファを設
け、レコードの入出力処理とソート処理との並行動作を
可能とし、応用プログラムが出口を用意する必要がな
く、応用プログラムのスタック域を共用可能とすると共
に並列動作によりソート性能を向上させることを目的と
している。
【0006】
【課題を解決するための手段】図1を参照して課題を解
決するための手段を説明する。図1において、Aスレッ
ドは、レコードの入出力処理1などを行うスレッド(C
PU実行単位)である。
【0007】Bスレッドは、ソート処理を行うスレッド
(CPU実行単位)である。バッファ3は、Aスレッド
とBスレッドとの間でレコードの授受を行うためのバッ
ファである。
【0008】応用プログラム4は、ソート処理を指示な
どするものである。
【0009】
【作用】本発明は、図1に示すように、応用プログラム
4からのソート依頼を受けたAスレッドが、Bスレッド
を起動すると共に、応用プログラム4から渡されたレコ
ードを取り込み、バッファ3に設定してBスレッドに渡
し、Bスレッドがこのレコードのソート処理を行い、そ
の結果をバッファ3に設定してAスレッドに渡し、Aス
レッドがこのレコードを応用プログラム4に渡すように
している。
【0010】また、応用プログラム4からのソート依頼
を受けたAスレッドが、Bスレッドを起動すると共に、
応用プログラム4から指示された入力ファイル5からレ
コードを取り込み、バッファ3に設定してBスレッドに
渡し、Bスレッドがこのレコードのソート処理を行い、
その結果をバッファ3に設定してAスレッドに渡し、A
スレッドがこのレコードを指示された出力ファイル6に
格納するようにしている。
【0011】従って、レコードの入出力処理1を行う部
分と、実際のソート処理2を行う部分とを別々のスレッ
ド(CPU実行単位)に分け、これらスレッド間に共通
に利用するバッファ3を設けることにより、レコードの
入出力処理1とソート処理2との並行動作が可能となる
と共に、従来のように応用プログラムが出口を用意する
必要がなく、応用プログラムのスタック域を共用可能お
よび並列動作によりソート性能を向上させることが可能
となる。
【0012】
【実施例】次に、図1から図4を用いて本発明の実施例
の構成および動作を順次詳細に説明する。
【0013】図1は、本発明の1実施例構成図を示す。
図1において、Aスレッドは、レコードの入出力処理1
および応用プログラム4を実行するスレッド(CPU実
行単位)であって、図2の(a)に示すように、ある仮
想空間1におけるCPU実行単位である。
【0014】Bスレッドは、ソート処理2を実行するス
レッド(CPU実行単位)であって、図2の(a)に示
すように、ある仮想空間1におけるCPU実行単位であ
る。バッファ3は、AスレッドとBスレッドとの間でレ
コードの授受を行うためのバッファであって、図2の
(a)に示すように、ある仮想空間1に設け、Aスレッ
ド、Bスレッドから共通にアクセスできる複数のバッフ
ァである。
【0015】入出力処理1は、ソート処理を行うための
レコードの入出力を行う部分であって、ここでは、Aス
レッドに設ける。この入出力処理1は、前半部の入力処
理と、後半部の出力処理とから構成されている。
【0016】ソート処理2は、ソート処理を実際に行う
部分であって、ここでは、入出力処理1と別のBスレッ
ドに設ける。このように入出力処理1とソート処理2と
を別のスレッドに設けたことにより、両者を並列動作可
能となる。また、応用プログラム4と入出力処理1とを
同じAスレッドに設け、ソート処理2を異なるBスレッ
ドに設けたことにより、後述する図2の(b−1)のス
タック構造に示すように、応用プログラム4のスタック
域と入出力処理1のスタック域とが連続し、従来の図5
の(b)のスタック構造のように分離することがなく、
両者のスタック域を自由に共用してアクセスできること
となる。
【0017】入力ファイル5は、ソート対象のレコード
を取り込むファイルである。出力ファイル6は、ソート
処理した結果のレコードを格納するファイルである。
【0018】次に、図2を用い、本発明の概念を説明す
る。図2の(a)は、構成図を示す。ここで、仮想空間
1は、本発明に係わるAスレッド、Bスレッド、更にバ
ッファ3を設ける空間である。この他に仮想空間2から
仮想空間Nがある。この仮想空間1のAスレッドおよび
Bスレッドは、独立のCPU実行単位として実行する。
即ち時分割的にAスレッドとBスレッドを独立にいわば
並列動作させたり、あるいは複数CPUのときはAスレ
ッドとBスレッドを並列に動作させたりする。
【0019】システム空間は、カーネルなどのシステム
プログラムを格納する空間である。図2の(b)は、ス
タック構造を示す。図2の(b−1)は、スタック構造
(Aスレッド)を示す。これは、図1の(a)、(b)
を見て判明するように、Aスレッドでは、応用プログラ
ム4および入出力処理1が動作するので、応用プログラ
ム4のスタック域および入出力処理1のスタック域が連
続して存在する。従って、両者のスタック域が連続する
ので、相互にスタック域をアクセスできることとなり、
従来の図5の(b)のソート処理のスタック域により分
断されることによるアクセスが困難となる事態を解消で
きる。
【0020】図2の(b−2)は、スタック構造(Bス
レッド)を示す。これは、図1の(a)、(b)を見て
判明するように、Bスレッドでは、ソート処理2の本体
が動作するので、当該ソート処理2のスタック域が存在
するのみである。
【0021】次に、図3を用い、図1の構成の動作を具
体的に説明する。これは、応用プログラム4から渡され
たレコードをソート処理2に渡してソートを行い、その
結果を格納したレコードを応用プログラム4に渡すとき
の動作の流れである。尚、以降は、S10からS17
の記号で代用する。
【0022】図3のは、応用プログラム4がソートの
環境構築関数sortopen()を発行する。この
際、パラメタのファイル情報として、応用プログラムか
らレコード入力、レコードを応用プログラムに出力する
旨を指定する。
【0023】は、Aスレッドの入出力処理1(関数s
ortopen)が仮想記憶域にBスレッドの領域を準
備し、ソート処理2をローディングして起動し、制御を
応用プログラム4に戻す。
【0024】は、応用プログラム4がレコードを用意
し、レコードを渡す関数sortput()を発行す
る。は、入出力処理1(関数sortput)が受け
取ったレコードをバッファ3に詰め、制御を応用プログ
ラム4に戻す。この際、は、バッファ3に空がない場
合、メッセージをBスレッドに送信してバッファ3のレ
コードをソートするように指示し、空いているバッファ
3を探して受け取ったレコードを詰める。また、は、
空いているバッファ3がない場合、メッセージ(Bスレ
ッドからバッファ3のレコードを処理してバッファ3が
空いた旨のメッセージ)を受信できるまで待つ。
【0025】は、応用プログラム4が入出力処理1
(関数sortput)に渡すレコードがなくなったと
き、データの終わりを意味する情報を付加して、レコー
ドを渡す関数sortput()を発行する。
【0026】は、入出力処理1(関数sortpu
t)がデータの終わりを認識すると、処理中のバッファ
3にこのレコードが最後という情報を付加し、Bスレッ
ドにメッセージを送信し、制御を応用プログラム4に戻
す。
【0027】は、Bスレッドがメッセージを受信し、
最後のバッファ3の最後のレコードを処理したら、ソー
ト結果のレコードをバッファ3に詰める。S10は、バ
ッファ3が一杯になると、Aスレッドの入出力処理1
(関数sortget)にメッセージを送信し、次のバ
ッファ3にレコードを詰める。この際、S11は、空バ
ッファがなければ、Aスレッドの入出力処理1(関数s
ortget)からバッファ3が返されるのを待つため
にメッセージ受信状態となる。
【0028】S12は、応用プログラム4がソート結果
のレコードを受け取るためにレコード返却関数sort
get()を発行する。S13は、入出力処理1(関数
sortget)がレコードの入っているバッファ3な
しの場合、Bスレッドからバッファ3を渡されるのをメ
ッセージ受信状態になって待つ。
【0029】S14は、メッセージを受信した場合、あ
るいはバッファ3に未返却のレコードがある場合、その
バッファ3からレコードを取り出し、応用プログラム4
に返却する(渡す)。
【0030】S15は、バッファ3のレコードを全て返
却した場合、メッセージ送信してバッファを返す。S1
6は、Bスレッドが全てのレコードをバッファ3に詰め
たら、そのバッファに最後のバッファ3の情報を付加し
てメッセージを送信し、Bスレッドの処理を終了する。
【0031】S17は、Aスレッドの入出力処理1(関
数sortget)が最後のバッファ3の情報が付加し
てあるバッファ3から最後のレコードを取り出したと
き、最終レコードと認識し、この旨を応用プログラム3
に通知する。
【0032】以上によって、応用プログラム4から渡さ
れたレコードをAスレッド(入出力処理1)が受け取
り、これをバッファ3に設定してBスレッド(ソート処
理2)に渡し、ソート処理を行い、その結果を格納した
レコードをバッファ3に設定してAスレッドに渡し、こ
れを応用プログラム4に渡す。これにより、Aスレッド
の入出力処理1と、Bスレッドのソート処理2とを並列
に動作させ、高速にソート処理を行うことが可能となる
と共に応用プログラム4と入出力処理1のスタック域を
連続にしてアクセス可能となる。
【0033】次に、図4を用い、図1の構成の動作を具
体的に説明する。これは、応用プログラム4から指示さ
れた入力ファイル5からレコードをソート処理2に渡し
てソートを行い、その結果を指定された出力ファイル6
に格納するときの動作の流れである。尚、以降は、S
10からS12の記号で代用する。
【0034】図4のは、応用プログラム4がソートの
環境構築関数sortopen()を発行する。この
際、パラメタのファイル情報として、入力ファイルおよ
び出力ファイルを指定する。
【0035】は、Aスレッドの入出力処理1(関数s
ortopen)が仮想記憶域にBスレッドの領域を準
備し、ソート処理2をローディングして起動および入力
となる入力ファイル5をオープンする。
【0036】は、入出力処理1(関数sortope
n)が入力ファイル5からレコードを読み込み、バッフ
ァ4に設定できるだけ設定し、このバッファ4のレコー
ドの処理を行うようにメッセージをBスレッドに送信す
る。この際、は、バッファ4の空がない場合、Bスレ
ッドからバッファ3が返されるのをメッセージ受信状態
になって待つ。
【0037】は、全てのレコードを入力したら、最後
のバッファの情報を付加してBスレッドに送信し、入力
ファイル5をクローズし、出力ファイル6をオープンす
る。は、Bスレッドのソート処理2がデータの終わり
を認識すると、ソート処理の続きを実施して結果のレコ
ードをバッファ3に詰める。
【0038】は、バッファ3が一杯になると、メッセ
ージを送信して、次のバッファ3にレコードを詰める。
は、空いているバッファがない場合、レコードを出力
する処理からバッファ3が返されるのでを待つためにメ
ッセージ受信状態となる。
【0039】は、Aスレッドの入出力処理1がレコー
ドの入っているバッファ3なしの場合、Bスレッドから
バッファ3が渡されるのをメッセージ受信状態になって
待つ。
【0040】S10は、メッセージ受信した場合、バッ
ファ3のレコードを出力ファイル6に出力する。S11
は、Bスレッドが全てのレコードをバッファ3に詰めた
場合、最終バッファの情報を付加してメッセージを送信
し、Bスレッドの処理を終了する。
【0041】S12は、Aスレッド(入出力処理1)が
最終バッファの情報の付加されているバッファのレコー
ドを出力ファイル6に出力したとき、出力ファイル6を
クローズして全ての処理を終了する。そして、応用プロ
グラム4に制御を戻す。
【0042】以上によって、応用プログラム4からソー
ト指示されたAスレッド(入出力処理1)が指示された
入力ファイル5からレコードを取り出してバッファ3に
設定してBスレッド(ソート処理2)に渡し、ソート処
理を行い、その結果を格納したレコードをバッファ3に
設定してAスレッドに渡し、これを出力ファイル6に格
納する。これにより、Aスレッドの入出力処理1と、B
スレッドのソート処理2とを並列に動作させ、高速にソ
ート処理を行うことが可能となると共に応用プログラム
4と入出力処理1のスタック域を連続にしてアクセス可
能となる。
【0043】
【発明の効果】以上説明したように、本発明によれば、
レコードの入出力処理1を行う部分と、実際のソート処
理2を行う部分とを別々のスレッド(CPU実行単位)
に分け、これらスレッド間に共通に利用するバッファ3
を設ける構成を採用しているため、レコードの入出力処
理1とソート処理2との並行動作が可能となり、ソート
処理の高速化を図ることができると共に、従来のように
応用プログラムが出口を用意する必要がなく、応用プロ
グラムのスタック域を共用可能となる。これらにより、 (1) レコードの入出力処理とソート処理とを別のス
レッド(CPU実行単位)に分け、ソート性能が向上す
ると共に応用プログラムからの使い勝手が向上する。
【0044】(2) 応用プログラムとレコードのやり
とりを行う場合、入出力処理1は受け取ったレコードを
バッファ3に設定するだけ、あるいはバッファ3からレ
コードを取り出して応用プログラムに返すだけの処理と
なり、ソート性能が向上する。
【0045】(3) ファイルあるいは応用プログラム
との間のレコードの入出力処理1と、ソート処理2との
並列化を実現でき、ソート性能が向上する。
【図面の簡単な説明】
【図1】本発明の1実施例構成図である。
【図2】本発明の概念説明図である。
【図3】本発明の動作説明図である。
【図4】本発明の動作説明図である。
【図5】従来技術の説明図である。
【符号の説明】
1:入出力処理 2:ソート処理 3:バッファ 4:応用プログラム 5:入力ファイル 6:出力ファイル
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平2−125359(JP,A) 特開 昭63−126030(JP,A) 特開 昭63−81526(JP,A) 「bit」255(昭和63年3月)、共 立出版、p.4−5 「bit」263(昭和63年11月)、共 立出版、p.75−78

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】データ処理システムにおけるソート処理を
    行うソート処理方式において、 レコードの入出力処理を行うAスレッドと、 ソート処理を行うBスレッドと、 AスレッドとBスレッドとの間でレコードの授受を行う
    パッファ(3)とを備え、 応用プログラム(4)からのソート依頼を受けた上記A
    スレッドが、Bスレッドを起動すると共に、応用プログ
    ラム(4)から渡されたレコードあるいはレコードが最
    後のときは当該最後という情報を付加したレコードを取
    り込み、上記バッファ(3)に設定して上記Bスレッド
    に渡し、Bスレッドがこのレコードのソート処理を行
    い、最後という情報を付加されたレコードを処理したら
    その結果を上記バッファ(3)に設定してAスレッドに
    渡し、Aスレッドがこのレコードを応用プログラム
    (4)に渡すように構成したことを特徴とするデータ処
    理システムにおけるソート処理方式。
  2. 【請求項2】データ処理システムにおけるソート処理を
    行うソート処理方式において、 レコードの人出力処理を行うAスレッドと、 ソート処理を行うBスレッドと、 AスレッドとBスレッドとの間でレコードの授受を行う
    バッファ(3)とを備え、 応用プログラム(4)からのソート依頼を受けた上記A
    スレッドが、Bスレッドを起動すると共に、応用プログ
    ラム(4)から指示された入カファイル(5)からレコ
    ードあるいはレコードが最後のときは当該最後という情
    報を付加したレコードを取り込み、上記バッファ(3)
    に設定して上記Bスレッドに渡し、Bスレッドがこのレ
    コードのソート処理を行い、最後という情報の付加され
    たレコードを処理したらその結果を上記バッファ(3)
    に設定してAスレッドに渡し、Aスレッドがこのレコー
    ドを指示された出力フイル(6)に格納するように構成
    したことを特徴とするデータ処理システムにおけるソー
    ト処理方式。
JP13402592A 1992-05-26 1992-05-26 データ処理システムにおけるソート処理方式 Expired - Fee Related JP3263123B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP13402592A JP3263123B2 (ja) 1992-05-26 1992-05-26 データ処理システムにおけるソート処理方式
US08/067,087 US5794240A (en) 1992-05-26 1993-05-26 Multi-threaded sorting system for a data processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13402592A JP3263123B2 (ja) 1992-05-26 1992-05-26 データ処理システムにおけるソート処理方式

Publications (2)

Publication Number Publication Date
JPH05324271A JPH05324271A (ja) 1993-12-07
JP3263123B2 true JP3263123B2 (ja) 2002-03-04

Family

ID=15118623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13402592A Expired - Fee Related JP3263123B2 (ja) 1992-05-26 1992-05-26 データ処理システムにおけるソート処理方式

Country Status (1)

Country Link
JP (1) JP3263123B2 (ja)

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
「bit」255(昭和63年3月)、共立出版、p.4−5
「bit」263(昭和63年11月)、共立出版、p.75−78

Also Published As

Publication number Publication date
JPH05324271A (ja) 1993-12-07

Similar Documents

Publication Publication Date Title
US5307485A (en) Method and apparatus for merging sorted lists in a multiprocessor shared memory system
US4101960A (en) Scientific processor
US4320455A (en) Queue structure for a data processing system
US4123795A (en) Control system for a stored program multiprocessor computer
US4922413A (en) Method for concurrent execution of primitive operations by dynamically assigning operations based upon computational marked graph and availability of data
US7543301B2 (en) Shared queues in shared object space
JPS60176143A (ja) プログラム呼び出し装置
JPH04273575A (ja) データベース検索プロセッサ
EP0779584B1 (en) Apparatus for storing information for a host processor
JP2714952B2 (ja) 計算機システム
US5125097A (en) Data flow type information processors where data packets pass through plurality of merging and branching portions of the internal path
JP2884831B2 (ja) 処理装置
US5179683A (en) Retrieval apparatus including a plurality of retrieval units
JP3263123B2 (ja) データ処理システムにおけるソート処理方式
JP3004102B2 (ja) データベース演算処理装置
Hollaar Specialized merge processor networks for combining sorted lists
US5497344A (en) Data flow type information processor
JPH0581337A (ja) データ処理装置
JP2591212B2 (ja) 高速割込み処理装置
JP2568657B2 (ja) データ駆動型マイクロプロセッサにおけるハッシュ衝突回避方法
JP3002041B2 (ja) データベース演算処理装置
JPS6116336A (ja) Fortran入出力制御処理方式
EP1408418A2 (en) Digital signal processor
JPH0581342A (ja) データ処理装置
JPH0135376B2 (ja)

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19990824

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071221

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081221

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091221

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091221

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101221

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111221

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees