JPH052468A - バツフアメモリ管理方式 - Google Patents
バツフアメモリ管理方式Info
- Publication number
- JPH052468A JPH052468A JP3019955A JP1995591A JPH052468A JP H052468 A JPH052468 A JP H052468A JP 3019955 A JP3019955 A JP 3019955A JP 1995591 A JP1995591 A JP 1995591A JP H052468 A JPH052468 A JP H052468A
- Authority
- JP
- Japan
- Prior art keywords
- data
- buffer memory
- processing
- read
- unit
- 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.)
- Pending
Links
Abstract
(57)【要約】
【目的】 マルチタスク処理におけるバッファメモリに
対するデータの書込み又は読出しを効率的に行う。 【構成】 出力処理要求元プログラム部1内の所望のプ
ログラムは、ランデブポート12を用いて書込み処理タ
スク部2を呼出し、受付けられると、書込み処理タスク
の処理が書込み処理関数部3を用いてバッファメモリ4
に対して開始される。バッファメモリ4にデータが書き
込まれる時には、計数セマフォ部9を加算する。またバ
ッファメモリ4に書き込まれているデータの読出しは、
読出し処理タスク部6が読出し処理関数部5を用いて行
われる。データの読出しに伴って計数セマフォ部9を減
算し、計数セマフォ部9の値が0になるまでは、バッフ
ァメモリ4からデータを読み出すことができ、値が0に
なると読出し処理タスク部6の処理は停止される。読み
出されたデータは外部に出力される。
対するデータの書込み又は読出しを効率的に行う。 【構成】 出力処理要求元プログラム部1内の所望のプ
ログラムは、ランデブポート12を用いて書込み処理タ
スク部2を呼出し、受付けられると、書込み処理タスク
の処理が書込み処理関数部3を用いてバッファメモリ4
に対して開始される。バッファメモリ4にデータが書き
込まれる時には、計数セマフォ部9を加算する。またバ
ッファメモリ4に書き込まれているデータの読出しは、
読出し処理タスク部6が読出し処理関数部5を用いて行
われる。データの読出しに伴って計数セマフォ部9を減
算し、計数セマフォ部9の値が0になるまでは、バッフ
ァメモリ4からデータを読み出すことができ、値が0に
なると読出し処理タスク部6の処理は停止される。読み
出されたデータは外部に出力される。
Description
【0001】
【産業上の利用分野】この発明は、コンピュータシステ
ムなどにおけるワークステーションの、例えばマルチタ
スク処理によって得られたデータを一時的に格納して、
所望の時間に読み出して外部に供給するバッファメモリ
のデータの管理方式に関する。
ムなどにおけるワークステーションの、例えばマルチタ
スク処理によって得られたデータを一時的に格納して、
所望の時間に読み出して外部に供給するバッファメモリ
のデータの管理方式に関する。
【0002】
【従来の技術】従来、例えばマルチタスク処理を行うワ
ークステーションなどにおいて、同期多重処理によって
得られたデータをバッファメモリなどに一時的に格納
し、その後に所望に時間に読み出して外部に供給する場
合、または外部から供給されたデータを書き込んだ後に
所望の時間に読み出す場合などにおいて、1つの命令で
データの書込み操作を行う場合に、次の書込み操作は、
バッファメモリ内の全データが読み出された後に、再び
バッファメモリの先頭からデータを書込むという方法が
一般的であった。
ークステーションなどにおいて、同期多重処理によって
得られたデータをバッファメモリなどに一時的に格納
し、その後に所望に時間に読み出して外部に供給する場
合、または外部から供給されたデータを書き込んだ後に
所望の時間に読み出す場合などにおいて、1つの命令で
データの書込み操作を行う場合に、次の書込み操作は、
バッファメモリ内の全データが読み出された後に、再び
バッファメモリの先頭からデータを書込むという方法が
一般的であった。
【0003】バッファメモリへのデータの書込み処理と
データの読出し処理を非同期でおこなうことはできなか
った。
データの読出し処理を非同期でおこなうことはできなか
った。
【0004】
【発明が解決しようとする課題】このように、従来書込
み又は読出し処理が一対になって行われるために、並列
に複数のタスク処理を行ってデータの書込み又は読出し
を非同期で行って処理効率を上げたい場合でも、書込み
又は読出し処理の効率が上がらないという問題があっ
た。
み又は読出し処理が一対になって行われるために、並列
に複数のタスク処理を行ってデータの書込み又は読出し
を非同期で行って処理効率を上げたい場合でも、書込み
又は読出し処理の効率が上がらないという問題があっ
た。
【0005】また少量のデータの書込み又は読出し処理
を繰り返して行う場合に、バッファメモリの容量を増加
しても、処理の効率が上がらず、またバッファメモリの
部分的使用となり使用率が低いという問題もあった。
を繰り返して行う場合に、バッファメモリの容量を増加
しても、処理の効率が上がらず、またバッファメモリの
部分的使用となり使用率が低いという問題もあった。
【0006】この発明は、以上の課題に鑑み為されたも
のであり、その目的とするところは、マルチタスク処理
におけるバッファメモリへのデータの書込みと読出しを
効率的に行うバッファメモリの管理方式を提供すること
である。
のであり、その目的とするところは、マルチタスク処理
におけるバッファメモリへのデータの書込みと読出しを
効率的に行うバッファメモリの管理方式を提供すること
である。
【0007】
【課題を解決するための手段】この発明は、以上の目的
を達成するために、次のように改良した。
を達成するために、次のように改良した。
【0008】同時並行処理によって得られるデータを一
時的にバッファメモリに格納し、所望の時間に読み出し
て、外部に供給する情報処理装置において、バッファメ
モリに書込み処理関数を用いて入力データを書き込む書
込み処理タスク部と、ポートを介して入力される処理要
求の呼出しタスクと書込み処理タスク部が発行する受付
けタスクが待合わせを行う同期手段(例えばランデブポ
ート)と、バッファメモリのデータを読出し処理関数を
用いて読み出す読出し処理タスク部と、バッファメモリ
内のデータの有無を管理するデータ有無管理手段(例え
ばセマフォ)を有して、入力された所望の処理要求の呼
出しに対して同期手段を用いて書込み処理タスク部が受
付け、書込み処理タスク部が入力データの書き込みに応
じてデータ有無管理手段の値を更新し、バッファメモリ
内のデータを読出し時にこのデータ有無管理手段の値に
応じて読出し処理タスク部が読出し処理関数を用いてバ
ッファメモリ内のデータを読み出すことを特徴とする。
時的にバッファメモリに格納し、所望の時間に読み出し
て、外部に供給する情報処理装置において、バッファメ
モリに書込み処理関数を用いて入力データを書き込む書
込み処理タスク部と、ポートを介して入力される処理要
求の呼出しタスクと書込み処理タスク部が発行する受付
けタスクが待合わせを行う同期手段(例えばランデブポ
ート)と、バッファメモリのデータを読出し処理関数を
用いて読み出す読出し処理タスク部と、バッファメモリ
内のデータの有無を管理するデータ有無管理手段(例え
ばセマフォ)を有して、入力された所望の処理要求の呼
出しに対して同期手段を用いて書込み処理タスク部が受
付け、書込み処理タスク部が入力データの書き込みに応
じてデータ有無管理手段の値を更新し、バッファメモリ
内のデータを読出し時にこのデータ有無管理手段の値に
応じて読出し処理タスク部が読出し処理関数を用いてバ
ッファメモリ内のデータを読み出すことを特徴とする。
【0009】また前記バッファメモリが、バッファメモ
リへのデータの書込み又はバッファメモリからのデータ
の読出しによって、データ先頭部又は空き領域先頭部が
バッファ最後部を越えた場合に、データ領域先頭部又は
空き領域先頭部をバッファ先頭部に戻すことによって、
仮想的にバッファメモリがリング状をなしているように
見せることが適当である。
リへのデータの書込み又はバッファメモリからのデータ
の読出しによって、データ先頭部又は空き領域先頭部が
バッファ最後部を越えた場合に、データ領域先頭部又は
空き領域先頭部をバッファ先頭部に戻すことによって、
仮想的にバッファメモリがリング状をなしているように
見せることが適当である。
【0010】
【作用】この発明によれば、書込み処理タスク部が書込
み処理要求を受付けるときにランデブポートなどの同期
手段を用いて、受付けているので複数の処理要求を受付
ける場合に、受付ける順番を統制することができる。ま
た書込み処理タスク部がデータを実際にバッファメモリ
に書き込むときに、バッファメモリに書き込まれるごと
にセマフォなどのデータ有無管理手段によってデータ数
を計数しているので、バッファメモリ内のデータ数を管
理することができる。また読出し処理タスク部は読出し
処理関数を用いてバッファメモリからデータを読み出す
ときに、前記データ有無管理手段の値が0でなければ、
読出しを行い、もし0であれば(バッファメモリ内にデ
ータが存在しない場合)、読出し処理を停止し、書込み
処理が可能にさせることができる。このようにしてバッ
ファメモリに対する書込みタスク処理と読出しタスク処
理を非同期で行うことができる。
み処理要求を受付けるときにランデブポートなどの同期
手段を用いて、受付けているので複数の処理要求を受付
ける場合に、受付ける順番を統制することができる。ま
た書込み処理タスク部がデータを実際にバッファメモリ
に書き込むときに、バッファメモリに書き込まれるごと
にセマフォなどのデータ有無管理手段によってデータ数
を計数しているので、バッファメモリ内のデータ数を管
理することができる。また読出し処理タスク部は読出し
処理関数を用いてバッファメモリからデータを読み出す
ときに、前記データ有無管理手段の値が0でなければ、
読出しを行い、もし0であれば(バッファメモリ内にデ
ータが存在しない場合)、読出し処理を停止し、書込み
処理が可能にさせることができる。このようにしてバッ
ファメモリに対する書込みタスク処理と読出しタスク処
理を非同期で行うことができる。
【0011】またバッファメモリの構造を、仮想的リン
グ状構造にさせることによって、バッファメモリのどの
部分からでもデータを書き込んだり、読み出すこともで
き、全体を有効に使用することができる。
グ状構造にさせることによって、バッファメモリのどの
部分からでもデータを書き込んだり、読み出すこともで
き、全体を有効に使用することができる。
【0012】
【実施例】次にこの発明に係るバッファメモリ管理方式
の好適な一実施例を図面を用いて説明する。
の好適な一実施例を図面を用いて説明する。
【0013】図1は、バッファメモリ管理方式を出力処
理要求元プログラムの要求に基づいて所望のデータをR
S−232Cポートから出力する場合を例に適用した場
合の機能ブロック図を示す。図1において、1は出力処
理要求元プログラム部であり、2は書込み処理タスク部
であり、3は書込み処理関数部であり、4はバッファメ
モリであり、5は読出し処理関数部であり、6は読出し
処理タスク部であり、7はRS−232Cポートであ
り、8は割込みハンドラ部であり、9は計数セマフォ部
(データ有無管理手段)であり、10は2進セマフォ部
であり、11は外部機器(例えばワークステーション、
プリンタなど)であり、12はランデブポート(同期手
段)である。またこの実施例を実現するハードウエア
は、一般的なコンピュータシステムにおけるマルチタス
ク処理を行うワークスションなどが有する構成と同様な
構成で実現することができる。
理要求元プログラムの要求に基づいて所望のデータをR
S−232Cポートから出力する場合を例に適用した場
合の機能ブロック図を示す。図1において、1は出力処
理要求元プログラム部であり、2は書込み処理タスク部
であり、3は書込み処理関数部であり、4はバッファメ
モリであり、5は読出し処理関数部であり、6は読出し
処理タスク部であり、7はRS−232Cポートであ
り、8は割込みハンドラ部であり、9は計数セマフォ部
(データ有無管理手段)であり、10は2進セマフォ部
であり、11は外部機器(例えばワークステーション、
プリンタなど)であり、12はランデブポート(同期手
段)である。またこの実施例を実現するハードウエア
は、一般的なコンピュータシステムにおけるマルチタス
ク処理を行うワークスションなどが有する構成と同様な
構成で実現することができる。
【0014】出力処理要求元プログラム部1に含まれる
プログラムの内、所望のプログラムは、ランデブ(待合
せ)ポート12を用いて書込み処理タスク部2を呼び出
す。書込み処理タスク部2は、出力処理要求元プログラ
ム部1からのランデブポート12を介して処理命令を受
付けると書込み処理関数部3を用いて、バッファメモリ
4内にデータを書込む。
プログラムの内、所望のプログラムは、ランデブ(待合
せ)ポート12を用いて書込み処理タスク部2を呼び出
す。書込み処理タスク部2は、出力処理要求元プログラ
ム部1からのランデブポート12を介して処理命令を受
付けると書込み処理関数部3を用いて、バッファメモリ
4内にデータを書込む。
【0015】次にランデブポート12の動作の例を図9
を用いて以下に説明する。この例においてはITRON
(Industrial The Realtime
Operating sytem Nucleus)を
利用してC言語又はアセンブラを用いて実現する方法を
説明する。まず出力処理要求元プログラム部1は、予め
生成されているランデブポート12に対してcal−p
or(call port:呼出し)を発行し、ランデ
ブの終了を待つ(関数cal−porが終了するまで待
ち状態になる)。書込み処理タスク部2はランデブポー
ト2に対してacpーpor(accept por
t:受付け)を発行し、ランデブの成立を待つ(出力処
理要求元プログラム部1からcal−porが発行され
るまで、待ち状態になる)。出力処理要求元プログラム
部1からのcal−porと、書込み処理タスク部2か
らのacp−porが共にランデブポート12に発行さ
れると、ランデブの成立となる。ランデブが成立すると
書込み処理タスク部2は関数acp−porから戻って
くるので、次の処理を実行できる。このときに出力すべ
きデータが入っているメモリの先頭アドレスが、ランデ
ブポート12を介して出力処理要求元プログラム部1か
ら書込み処理タスク部2に供給される。書込み処理タス
ク部2は、処理が終了するとランデブポート12に対し
てrpl−por(reply port:返答)を発
行する。書込み処理タスク部2からrpl−porが発
行されると、ランデブの終了となり、出力処理要求元プ
ログラム部1の待ち状態が解除され実行状態にされる
(関数cal−porから戻ってくる)。
を用いて以下に説明する。この例においてはITRON
(Industrial The Realtime
Operating sytem Nucleus)を
利用してC言語又はアセンブラを用いて実現する方法を
説明する。まず出力処理要求元プログラム部1は、予め
生成されているランデブポート12に対してcal−p
or(call port:呼出し)を発行し、ランデ
ブの終了を待つ(関数cal−porが終了するまで待
ち状態になる)。書込み処理タスク部2はランデブポー
ト2に対してacpーpor(accept por
t:受付け)を発行し、ランデブの成立を待つ(出力処
理要求元プログラム部1からcal−porが発行され
るまで、待ち状態になる)。出力処理要求元プログラム
部1からのcal−porと、書込み処理タスク部2か
らのacp−porが共にランデブポート12に発行さ
れると、ランデブの成立となる。ランデブが成立すると
書込み処理タスク部2は関数acp−porから戻って
くるので、次の処理を実行できる。このときに出力すべ
きデータが入っているメモリの先頭アドレスが、ランデ
ブポート12を介して出力処理要求元プログラム部1か
ら書込み処理タスク部2に供給される。書込み処理タス
ク部2は、処理が終了するとランデブポート12に対し
てrpl−por(reply port:返答)を発
行する。書込み処理タスク部2からrpl−porが発
行されると、ランデブの終了となり、出力処理要求元プ
ログラム部1の待ち状態が解除され実行状態にされる
(関数cal−porから戻ってくる)。
【0016】書込み処理関数部3は、書込み処理タスク
部2から関数(サブルーチンプログラム)として呼出さ
れ、バッファメモリ4にデータを書込み、計数セマフォ
部9に対してV命令(セマフォ値に1を加え、p命令で
待ち状態になっている読出し処理タスクがあれば実行可
能状態にする)を実行し、バッファ4内の空き領域の先
頭を示す変数の値を変更し、バッファメモリ4が一杯に
なった場合は、書込み処理タスク部2を待ち状態にす
る。
部2から関数(サブルーチンプログラム)として呼出さ
れ、バッファメモリ4にデータを書込み、計数セマフォ
部9に対してV命令(セマフォ値に1を加え、p命令で
待ち状態になっている読出し処理タスクがあれば実行可
能状態にする)を実行し、バッファ4内の空き領域の先
頭を示す変数の値を変更し、バッファメモリ4が一杯に
なった場合は、書込み処理タスク部2を待ち状態にす
る。
【0017】バッファメモリ4は、書込み処理関数部3
から供給されたデータを格納し、また格納されているデ
ータを読出し処理関数部5に出力する。
から供給されたデータを格納し、また格納されているデ
ータを読出し処理関数部5に出力する。
【0018】読出し処理関数部5は、読出し処理タスク
部6から関数として呼出され、計数セマフォ部9に対し
てP命令(セマフォ値から1減算し、p命令を発行した
場合ときのセマフォ値が0の場合は所望の処理を待ち状
態とさせる)を実行し、バッファ4からデータを読出
し、バッファ4内のデータの先頭を示す変数の値を変更
し、書込み処理タスク部2が待ち状態の場合は、書込み
処理タスク部2の待ち状態を解除し、書込み処理タスク
部2の処理ができる状態にさせる。
部6から関数として呼出され、計数セマフォ部9に対し
てP命令(セマフォ値から1減算し、p命令を発行した
場合ときのセマフォ値が0の場合は所望の処理を待ち状
態とさせる)を実行し、バッファ4からデータを読出
し、バッファ4内のデータの先頭を示す変数の値を変更
し、書込み処理タスク部2が待ち状態の場合は、書込み
処理タスク部2の待ち状態を解除し、書込み処理タスク
部2の処理ができる状態にさせる。
【0019】読出し処理タスク部6は、2進セマフォ部
10に対してP命令を供給し、読出し処理間関数部5を
使用してバッファメモリ4からデータを読出して、RS
ー232Cポート7に対してこのデータを出力する。
10に対してP命令を供給し、読出し処理間関数部5を
使用してバッファメモリ4からデータを読出して、RS
ー232Cポート7に対してこのデータを出力する。
【0020】RS−232Cポート7は、読出し処理タ
スク部6から供給されたデータを外部機器11に出力
し、データが無くなり、データを取り込める状態になる
と割込みハンドラ部8に割込み信号を出力する。このR
Sー232Cポート7は一般に専用ICを使用して行う
ことができる。
スク部6から供給されたデータを外部機器11に出力
し、データが無くなり、データを取り込める状態になる
と割込みハンドラ部8に割込み信号を出力する。このR
Sー232Cポート7は一般に専用ICを使用して行う
ことができる。
【0021】割込みハンドラ部8は、供給された割込み
信号に基づいて2進セマフォ部10に対してV命令を供
給する。
信号に基づいて2進セマフォ部10に対してV命令を供
給する。
【0022】計数セマフォ部9は、セマフォ値がバッフ
ァメモリ4内のデータ数を示しており、バッファメモリ
4内にデータが格納されていない状態(初期状態を含
む)ではセマフォ値は0である。
ァメモリ4内のデータ数を示しており、バッファメモリ
4内にデータが格納されていない状態(初期状態を含
む)ではセマフォ値は0である。
【0023】2進セマフォ部10は、V命令が供給され
るとセマフォ値は1にされ、この時には読出し処理タス
ク6は読出し処理関数部5を使ってバッファメモリ4内
のデータをRSー232Cポート7に出力する。P命令
が供給されるとセマフォ値は0にされる。
るとセマフォ値は1にされ、この時には読出し処理タス
ク6は読出し処理関数部5を使ってバッファメモリ4内
のデータをRSー232Cポート7に出力する。P命令
が供給されるとセマフォ値は0にされる。
【0024】外部機器11は、RS−232Cポート7
を介して接続される。
を介して接続される。
【0025】次に図2は、仮想リング状バッファメモリ
4の構造を示す図である。図2(a)、(b)の20、
30、α、βは対応しており、20はバッファメモリ4
内のデータが入っている領域の先頭部(データ領域先頭
部)を示し、30はバッファメモリ4内の空き領域の先
頭部(空き領域先頭部)を示し、αは実際のバッファメ
モリ4の先頭部(バッファ先頭部)を示し、βは実際の
バッファメモリ4の最後部(バッファ最後部)を示して
いる。
4の構造を示す図である。図2(a)、(b)の20、
30、α、βは対応しており、20はバッファメモリ4
内のデータが入っている領域の先頭部(データ領域先頭
部)を示し、30はバッファメモリ4内の空き領域の先
頭部(空き領域先頭部)を示し、αは実際のバッファメ
モリ4の先頭部(バッファ先頭部)を示し、βは実際の
バッファメモリ4の最後部(バッファ最後部)を示して
いる。
【0026】仮想リング状のバッファメモリとは、バッ
ファメモリへのデータの書込み又はバッファメモリから
のデータの読出しによって、データ先頭部20又は空き
領域先頭部30がバッファ最後部βを越えた場合に、デ
ータ領域先頭部20又は空き領域先頭部30をバッファ
先頭部αに戻すことによって、仮想的にバッファメモリ
がリング状をしているように見せる方式である。
ファメモリへのデータの書込み又はバッファメモリから
のデータの読出しによって、データ先頭部20又は空き
領域先頭部30がバッファ最後部βを越えた場合に、デ
ータ領域先頭部20又は空き領域先頭部30をバッファ
先頭部αに戻すことによって、仮想的にバッファメモリ
がリング状をしているように見せる方式である。
【0027】次に図3〜図8の動作フローチャートを用
いて処理の流れを説明する。図3は、図1に示す機能ブ
ロック図の出力処理要求元プログラム部1の動作を説明
する動作フローチャートである。出力処理要求元プログ
ラム部1はいくつかのプログラムから処理対象のプログ
ラムを選定し、ランデブポート12を利用して、書込み
処理タスク部2を呼出し、書込み処理タスク部2からの
「処理受付け」の返答が返ってくるまで、待ち状態にさ
れる(ステップ31)。
いて処理の流れを説明する。図3は、図1に示す機能ブ
ロック図の出力処理要求元プログラム部1の動作を説明
する動作フローチャートである。出力処理要求元プログ
ラム部1はいくつかのプログラムから処理対象のプログ
ラムを選定し、ランデブポート12を利用して、書込み
処理タスク部2を呼出し、書込み処理タスク部2からの
「処理受付け」の返答が返ってくるまで、待ち状態にさ
れる(ステップ31)。
【0028】次に図4を用いて、書込み処理タスク部2
の動作を説明する。ランデブポート12からの呼出しに
対して「処理受付け」を発行し、出力処理要求元プログ
ラム部1とのランデブ(待合せ又は処理受付け)が成立
するまで待ち状態にされ、つまり書込み処理が可能状態
になるまで待ち状態にされる。ランデブが成立すると書
込み処理タスク部2に選択された出力処理を移す(ステ
ップ41)。次にデータの数(例えば、アスキー形式の
文字列であれば、文字列の長さに相当する数)だけ、書
込み処理関数を呼出して、書込みたい全データをバッフ
ァメモリ4に書込む(ステップ42、43)。全データ
の書き込みが終了すると次にランデブポート12に対し
て「書込み終了」の返答を返して、出力処理要求元プロ
グラム部1の待ち状態を解除(ステップ44)し、出力
処理要求元プログラム部1から次の処理要求が出せる状
態にする。
の動作を説明する。ランデブポート12からの呼出しに
対して「処理受付け」を発行し、出力処理要求元プログ
ラム部1とのランデブ(待合せ又は処理受付け)が成立
するまで待ち状態にされ、つまり書込み処理が可能状態
になるまで待ち状態にされる。ランデブが成立すると書
込み処理タスク部2に選択された出力処理を移す(ステ
ップ41)。次にデータの数(例えば、アスキー形式の
文字列であれば、文字列の長さに相当する数)だけ、書
込み処理関数を呼出して、書込みたい全データをバッフ
ァメモリ4に書込む(ステップ42、43)。全データ
の書き込みが終了すると次にランデブポート12に対し
て「書込み終了」の返答を返して、出力処理要求元プロ
グラム部1の待ち状態を解除(ステップ44)し、出力
処理要求元プログラム部1から次の処理要求が出せる状
態にする。
【0029】次に図5を用いて、書込み処理関数部3の
動作を説明する。書込み処理タスク部2からの呼出しが
供給されるとバッファメモリ4にデータを1つ(例え
ば、アスキー形式の文字列であれば、1バイト)書き込
む(ステップ51)。同時に計数セマフォ部9に対して
V命令を実行し、計数セマフォ部9のセマフォ値を1増
加する(ステップ52)。次にバッファメモリ4に対し
てデータが1つ書き込まれた(追加された)ので、バッ
ファメモリ4内の空き領域の先頭を示す変数の値(図2
の空き領域先頭部30)を1つ増加させる(ステップ5
3)。次にステップ53の処理の結果、バッファメモリ
4の空き領域の先頭を示す変数の値が、実際のバッファ
メモリ4の最後部(図2中のバッファ最後部β)より
も、大きくなった場合に、バッファメモリ4の空き領域
の先頭部30を示す変数が、実際のバッファの先頭部α
を指定するように変更する(ステップ54、55)。大
きくない場合には前記空き領域先頭部30の値はそのま
までステップ56に進む。次に前記ステップ53〜55
における処理の結果、データ領域先頭部20と空き領域
先頭部30が等しくなった場合(空き領域がなくなった
場合)(ステップ56)、書込み処理タスク部2を待ち
状態にさせ(ステップ57)、新たにデータが書き込ま
れないようにする。等しくない場合には何もせず、書込
み処理タスク部2からの次の呼出しが供給されるまで待
つ。次のデータの書込みのための呼出しが供給されたな
らば、前記ステップ51〜ステップ57までの処理を実
行する。
動作を説明する。書込み処理タスク部2からの呼出しが
供給されるとバッファメモリ4にデータを1つ(例え
ば、アスキー形式の文字列であれば、1バイト)書き込
む(ステップ51)。同時に計数セマフォ部9に対して
V命令を実行し、計数セマフォ部9のセマフォ値を1増
加する(ステップ52)。次にバッファメモリ4に対し
てデータが1つ書き込まれた(追加された)ので、バッ
ファメモリ4内の空き領域の先頭を示す変数の値(図2
の空き領域先頭部30)を1つ増加させる(ステップ5
3)。次にステップ53の処理の結果、バッファメモリ
4の空き領域の先頭を示す変数の値が、実際のバッファ
メモリ4の最後部(図2中のバッファ最後部β)より
も、大きくなった場合に、バッファメモリ4の空き領域
の先頭部30を示す変数が、実際のバッファの先頭部α
を指定するように変更する(ステップ54、55)。大
きくない場合には前記空き領域先頭部30の値はそのま
までステップ56に進む。次に前記ステップ53〜55
における処理の結果、データ領域先頭部20と空き領域
先頭部30が等しくなった場合(空き領域がなくなった
場合)(ステップ56)、書込み処理タスク部2を待ち
状態にさせ(ステップ57)、新たにデータが書き込ま
れないようにする。等しくない場合には何もせず、書込
み処理タスク部2からの次の呼出しが供給されるまで待
つ。次のデータの書込みのための呼出しが供給されたな
らば、前記ステップ51〜ステップ57までの処理を実
行する。
【0030】次にバッファメモリ4に書込まれたデータ
の読出しの動作について説明する。バッファメモリ4に
対するデータの書込みと読出しは完全に非同期で行うこ
とができ、読出しは、この実施例では外部機器11にデ
ータを出力するRS−232Cポート7がデータを出力
できる状態であれば、読出し処理タスク部6が読出し処
理関数部5を使ってバッファ4からデータを読出して外
部に出力することができる。
の読出しの動作について説明する。バッファメモリ4に
対するデータの書込みと読出しは完全に非同期で行うこ
とができ、読出しは、この実施例では外部機器11にデ
ータを出力するRS−232Cポート7がデータを出力
できる状態であれば、読出し処理タスク部6が読出し処
理関数部5を使ってバッファ4からデータを読出して外
部に出力することができる。
【0031】次に図6を用いて、読出し処理タスク部6
の動作を説明する。読出し処理タスク部6は、2進セマ
フォ部10に対してP命令を実行する(ステップ6
1)。もしセマフォ値が0の場合には読出し処理タスク
部6は実行されない。次にバッファメモリ4からデータ
を1つ読み出すために、読出し処理関数部5を呼び出し
(ステップ62)、読み出されたデータはRSー232
Cポート7に出力される。1つのデータの読出しが完了
すると、以後前記ステップ61とステップ62を繰り返
して、残りのデータの読出しを行う。
の動作を説明する。読出し処理タスク部6は、2進セマ
フォ部10に対してP命令を実行する(ステップ6
1)。もしセマフォ値が0の場合には読出し処理タスク
部6は実行されない。次にバッファメモリ4からデータ
を1つ読み出すために、読出し処理関数部5を呼び出し
(ステップ62)、読み出されたデータはRSー232
Cポート7に出力される。1つのデータの読出しが完了
すると、以後前記ステップ61とステップ62を繰り返
して、残りのデータの読出しを行う。
【0032】次に図7を用いて、読出し処理関数部5の
動作を説明する。読出し処理タスク部6のステップ62
の処理で呼出された読出し処理関数部5は、計数セマフ
ォ部9に対してP命令を実行し、計数セマフォ値から1
減算する(ステップ71)。しかしバッファメモリ4に
データが存在しない場合には、バッファメモリ4にデー
タが供給され、計数セマフォ部9のセマフォ値が1以上
になり、実行可能状態にされるのを待つ。次にデータが
バッファメモリ4に存在する場合にはバッファメモリ4
からデータを1つ読み出す(ステップ72)。次にバッ
ファメモリ4からデータが1つ読み出されたので、デー
タ領域先頭部20の変数の値を1ずらせて、増加させる
(ステップ73)。次に前記ステップ73の結果、デー
タ領域先頭部20の変数の値が、バッファメモリ4のバ
ッファ最後部βの変数の値よりも大きくなった場合(ス
テップ74)には、データ領域先頭部20の変数の値
を、バッファ領域先頭部αを表す変数の値に変更(ステ
ップ75)し、次にステップ76に進む。またステップ
74において大きくないと判断されれば、ステップ76
に進み書込み処理タスク部2が待ち状態になっているか
否かを確認する。待ち状態になっている場合には、待ち
状態を解除(ステップ77)し、ここで読出し処理関数
部5の処理を完了し、再び読出し処理タスク部6に戻
る。
動作を説明する。読出し処理タスク部6のステップ62
の処理で呼出された読出し処理関数部5は、計数セマフ
ォ部9に対してP命令を実行し、計数セマフォ値から1
減算する(ステップ71)。しかしバッファメモリ4に
データが存在しない場合には、バッファメモリ4にデー
タが供給され、計数セマフォ部9のセマフォ値が1以上
になり、実行可能状態にされるのを待つ。次にデータが
バッファメモリ4に存在する場合にはバッファメモリ4
からデータを1つ読み出す(ステップ72)。次にバッ
ファメモリ4からデータが1つ読み出されたので、デー
タ領域先頭部20の変数の値を1ずらせて、増加させる
(ステップ73)。次に前記ステップ73の結果、デー
タ領域先頭部20の変数の値が、バッファメモリ4のバ
ッファ最後部βの変数の値よりも大きくなった場合(ス
テップ74)には、データ領域先頭部20の変数の値
を、バッファ領域先頭部αを表す変数の値に変更(ステ
ップ75)し、次にステップ76に進む。またステップ
74において大きくないと判断されれば、ステップ76
に進み書込み処理タスク部2が待ち状態になっているか
否かを確認する。待ち状態になっている場合には、待ち
状態を解除(ステップ77)し、ここで読出し処理関数
部5の処理を完了し、再び読出し処理タスク部6に戻
る。
【0033】前記読出し処理タスク部6は以上のように
して読出し処理関数部5を呼出して読み出されたデータ
は、RSー232Cポート7に供給され、供給されたデ
ータはRSー232Cポート7から、外部機器11に出
力される。
して読出し処理関数部5を呼出して読み出されたデータ
は、RSー232Cポート7に供給され、供給されたデ
ータはRSー232Cポート7から、外部機器11に出
力される。
【0034】RSー232Cポート7は、データが外部
に出力されるごとに、継続して出力可能か否かを確認
し、可能であれば割込み信号を割込みハンドラ部8に供
給する。割込みハンドラ部8は2進セマフォ部10に対
してV命令(1加算)を実行し(図8のステップ8
1)、セマフォ値を1にする。このセマフォ値は、読出
し処理タスク部6が、P命令を実行するごとに0とな
り、V命令が実行されるごとに1となる。
に出力されるごとに、継続して出力可能か否かを確認
し、可能であれば割込み信号を割込みハンドラ部8に供
給する。割込みハンドラ部8は2進セマフォ部10に対
してV命令(1加算)を実行し(図8のステップ8
1)、セマフォ値を1にする。このセマフォ値は、読出
し処理タスク部6が、P命令を実行するごとに0とな
り、V命令が実行されるごとに1となる。
【0035】以上のようにして、バッファメモリ4に対
する書込み処理タスク部2と読出し処理タスク部6の処
理を非同期で行うことができ、バッファメモリに書き込
まれたデータに対するデータの読出しが完了する前に、
次の書込み動作を行うことができるため、出力処理要求
元プログラム部からの呼出しに対して、待ち時間を減少
させることができる。またバッファメモリを仮想リング
状構造にしてデータの書込み又は読出しを行い、セマフ
ォを使用してバッファメモリ内のデータを管理している
ので、バッファメモリ全体を有効に利用している。した
がってバッファメモリを有するマルチタスク処理システ
ム(例えば各種のTRONなど)の構築を容易にするこ
とができる。
する書込み処理タスク部2と読出し処理タスク部6の処
理を非同期で行うことができ、バッファメモリに書き込
まれたデータに対するデータの読出しが完了する前に、
次の書込み動作を行うことができるため、出力処理要求
元プログラム部からの呼出しに対して、待ち時間を減少
させることができる。またバッファメモリを仮想リング
状構造にしてデータの書込み又は読出しを行い、セマフ
ォを使用してバッファメモリ内のデータを管理している
ので、バッファメモリ全体を有効に利用している。した
がってバッファメモリを有するマルチタスク処理システ
ム(例えば各種のTRONなど)の構築を容易にするこ
とができる。
【0036】以上の実施例においてはRSー232Cポ
ート7を例にして説明したが、他の伝送方式であっても
よい。
ート7を例にして説明したが、他の伝送方式であっても
よい。
【0037】
【発明の効果】以上述べたようにこの発明によれば、書
込み処理タスク部が書込み処理要求を受付けるときに同
期手段を用いて、受付けているので複数の処理要求を受
付ける場合に、受付ける順番を統制することができる。
また書込み処理タスク部がデータを実際にバッファメモ
リに書き込むときに、バッファメモリに書き込まれるご
とにデータ有無管理手段のデータ数を計数しているの
で、バッファメモリ内のデータ数を管理することができ
る。このデータ有無管理手段の値によって読出し可否を
判断し、また書込み可否も判断できる。このようにして
バッファメモリに対する書込みタスク処理と読出しタス
ク処理を非同期で行うことができる。
込み処理タスク部が書込み処理要求を受付けるときに同
期手段を用いて、受付けているので複数の処理要求を受
付ける場合に、受付ける順番を統制することができる。
また書込み処理タスク部がデータを実際にバッファメモ
リに書き込むときに、バッファメモリに書き込まれるご
とにデータ有無管理手段のデータ数を計数しているの
で、バッファメモリ内のデータ数を管理することができ
る。このデータ有無管理手段の値によって読出し可否を
判断し、また書込み可否も判断できる。このようにして
バッファメモリに対する書込みタスク処理と読出しタス
ク処理を非同期で行うことができる。
【0038】またバッファメモリの構造を、仮想的リン
グ状構造にさせることによって、バッファメモリのどの
部分からでもデータを書き込んだり、読み出すこともで
き、全体を有効に使用することができる。
グ状構造にさせることによって、バッファメモリのどの
部分からでもデータを書き込んだり、読み出すこともで
き、全体を有効に使用することができる。
【0039】したがってマルチタスク処理におけるバッ
ファメモリへのデータの書込みと読出しを効率的に行う
ことができ、またバッファメモリを有するマルチタスク
処理システムの構築を容易にすることができる。
ファメモリへのデータの書込みと読出しを効率的に行う
ことができ、またバッファメモリを有するマルチタスク
処理システムの構築を容易にすることができる。
【図1】この実施例に係るバッファメモリ管理方式を実
現する機能ブロック図である。
現する機能ブロック図である。
【図2】バッファメモリの構造の例を示す図である。
【図3】出力処理要求元プログラム部の動作フローチャ
ートである。
ートである。
【図4】書込み処理タスク部の動作フローチャートであ
る。
る。
【図5】書込み処理関数部の動作フローチャートであ
る。
る。
【図6】読出し処理タスク部の動作フローチャートであ
る。
る。
【図7】読出し処理関数部の動作フローチャートであ
る。
る。
【図8】割込みハンドラ部の動作フローチャートであ
る。
る。
【図9】ランデブポートの動作を説明する図である。
1…出力処理要求元プログラム部、2…書込み処理タス
ク部、3…書込み処理関数部、4…バッファメモリ、5
…読出し処理関数部、6…読出し処理タスク部、7…R
Sー232Cポート、8…割込みハンドラ部、9…計数
セマフォ部、10…2進セマフォ部、11…外部機器、
12…ランデブポート。
ク部、3…書込み処理関数部、4…バッファメモリ、5
…読出し処理関数部、6…読出し処理タスク部、7…R
Sー232Cポート、8…割込みハンドラ部、9…計数
セマフォ部、10…2進セマフォ部、11…外部機器、
12…ランデブポート。
Claims (2)
- 【請求項1】 同時並行処理によって得られるデータを
一時的にバッファメモリに格納し、所望の時間に読み出
して、外部に供給する情報処理装置において、バッファ
メモリに書込み処理関数を用いて入力データを書き込む
書込み処理タスク部と、ポートを介して入力される処理
要求の呼出しタスクと書込み処理タスク部が発行する受
付けタスクが待合わせを行う同期手段と、バッファメモ
リのデータを読出し処理関数を用いて読み出す読出し処
理タスク部と、バッファメモリ内のデータの有無を管理
するデータ有無管理手段を有して、入力された所望の処
理要求の呼出しに対して同期手段を用いて書込み処理タ
スク部が受付け、書込み処理タスク部が入力データの書
き込みに応じてデータ有無管理手段の値を更新し、バッ
ファメモリ内のデータを読出し時にこのデータ有無管理
手段の値に応じて読出し処理タスク部が読出し処理関数
を用いてバッファメモリ内のデータを読み出すことを特
徴とするバッファメモリ管理方式。 - 【請求項2】 前記バッファメモリが、バッファメモリ
へのデータの書込み又はバッファメモリからのデータの
読出しによって、データ先頭部又は空き領域先頭部がバ
ッファ最後部を越えた場合に、データ領域先頭部又は空
き領域先頭部をバッファ先頭部に戻すことによって、仮
想的にバッファメモリがリング状をなしているように見
せることを特徴とする請求項1に記載のバッファメモリ
管理方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3019955A JPH052468A (ja) | 1991-02-13 | 1991-02-13 | バツフアメモリ管理方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3019955A JPH052468A (ja) | 1991-02-13 | 1991-02-13 | バツフアメモリ管理方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH052468A true JPH052468A (ja) | 1993-01-08 |
Family
ID=12013623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3019955A Pending JPH052468A (ja) | 1991-02-13 | 1991-02-13 | バツフアメモリ管理方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH052468A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08190531A (ja) * | 1995-01-12 | 1996-07-23 | Nec Corp | メモリバッファの管理方式 |
JP2004252755A (ja) * | 2003-02-20 | 2004-09-09 | Fujitsu Ltd | 記憶装置への情報蓄積制御方法 |
JP2010157254A (ja) * | 2010-02-10 | 2010-07-15 | Fujitsu Ltd | 記憶装置への情報蓄積制御方法 |
JP2014199484A (ja) * | 2013-03-29 | 2014-10-23 | 日本電産サンキョー株式会社 | 情報処理システム及び情報処理方法 |
-
1991
- 1991-02-13 JP JP3019955A patent/JPH052468A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08190531A (ja) * | 1995-01-12 | 1996-07-23 | Nec Corp | メモリバッファの管理方式 |
JP2004252755A (ja) * | 2003-02-20 | 2004-09-09 | Fujitsu Ltd | 記憶装置への情報蓄積制御方法 |
JP2010157254A (ja) * | 2010-02-10 | 2010-07-15 | Fujitsu Ltd | 記憶装置への情報蓄積制御方法 |
JP2014199484A (ja) * | 2013-03-29 | 2014-10-23 | 日本電産サンキョー株式会社 | 情報処理システム及び情報処理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4395757A (en) | Process synchronization utilizing semaphores | |
CA1214566A (en) | Method of synchronizing the sequence by which a variety of randomly called unrelated activities are executed in a digital processor | |
US7234004B2 (en) | Method, apparatus and program product for low latency I/O adapter queuing in a computer system | |
JPS5818728A (ja) | デ−タ通信実行方法 | |
US5386514A (en) | Queue apparatus and mechanics for a communications interface architecture | |
JPS5897944A (ja) | 複数マイクロプロセツサ間デ−タ転送方式 | |
JPH08241186A (ja) | バッファメモリ管理ユニット及びバッファメモリ管理方法 | |
JPH052468A (ja) | バツフアメモリ管理方式 | |
US5442761A (en) | Method by which packet handler inserts data load instructions in instruction sequence fetched by instruction fetch unit | |
US6757679B1 (en) | System for building electronic queue(s) utilizing self organizing units in parallel to permit concurrent queue add and remove operations | |
JPH0798663A (ja) | 非同期i/o制御方式 | |
JP2002532811A (ja) | 楽音データ生成装置および方法、並びに該方法を提供する媒体 | |
JPH064314A (ja) | タスク間同期通信装置 | |
JPH06282515A (ja) | データ処理装置 | |
JP3184380B2 (ja) | 割り込み制御方法及びそれを実現するマルチタスクシステム | |
JPH06202894A (ja) | 共有メモリ制御回路 | |
JP2001005767A (ja) | 非同期データ入出力処理方法,データ処理装置および非同期データ入出力処理のプログラム記録媒体 | |
JPH07248883A (ja) | 事前バッファフラッシュシステム | |
JP2856709B2 (ja) | バス間結合システム | |
JPS63173143A (ja) | メモリインタフエ−ス回路 | |
JPS58168168A (ja) | 端末のスワツプ・イン・スワツプ・アウト方式 | |
JPH02136949A (ja) | 入出力制御装置 | |
JPH06110813A (ja) | 非同期データ入出力方式 | |
JPS59123974A (ja) | ベクトルデ−タ記憶制御方式 | |
JPH0827729B2 (ja) | メッセージキュー着信管理方式 |