JP3764282B2 - プログラム制御システムの制御装置 - Google Patents

プログラム制御システムの制御装置 Download PDF

Info

Publication number
JP3764282B2
JP3764282B2 JP28750898A JP28750898A JP3764282B2 JP 3764282 B2 JP3764282 B2 JP 3764282B2 JP 28750898 A JP28750898 A JP 28750898A JP 28750898 A JP28750898 A JP 28750898A JP 3764282 B2 JP3764282 B2 JP 3764282B2
Authority
JP
Japan
Prior art keywords
thread
synchronization object
management table
executing
processing
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
JP28750898A
Other languages
English (en)
Other versions
JP2000112774A (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.)
Toshiba TEC Corp
Original Assignee
Toshiba TEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba TEC Corp filed Critical Toshiba TEC Corp
Priority to JP28750898A priority Critical patent/JP3764282B2/ja
Publication of JP2000112774A publication Critical patent/JP2000112774A/ja
Application granted granted Critical
Publication of JP3764282B2 publication Critical patent/JP3764282B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、マルチスレッド機能を備えたプログラム制御システムの制御装置に関する。
【0002】
【従来の技術】
この種の制御装置は、CPU(中央処理装置)、このCPUが各部を制御するためのプログラムデータなどを記憶したROM(リード・オンリ・メモリ)、CPUが行う各種データ処理のために使用されるメモリエリア等を設けたRAM(ランダム・アクセス・メモリ)、アプリケーションプログラムなどを記憶したハードディスク装置等を備え、オペレーティングシステム(OS)、その上で稼働するアプリケーションプログラム、これらオペレーティングシステムとアプリケーションプログラムとのインタフェースであるアプリケーションプログラムインタフェース(API)によりプログラム制御システムを構成する。
【0003】
上記オペレーティングシステムには、複数のタスクを同時に処理実行可能なマルチタスク機能、このマルチタスク機能を実行するときに1つのプログラムを個々のタスクを表す単位(スレッド)に細分化して複数のスレッドを同時に実行させるマルチスレッド機能を備えるものがある。
【0004】
但し、「複数のタスクを同時に処理実行可能である」とはいっても、1つのCPUが実行できる命令は1個だけである。つまり、マルチスレッドというのは、タイマ割込を使ってCPUに割込みをかけて他のルーチンへ実行を移している。これを定期的に行えば、ユーザー側から見れば、複数のルーチンが並行して走っているかのように見える。
【0005】
このようなオペレーティングシステムのマルチタスク機能、マルチスレッド機能をアプリケーションからの要求によって実行させる場合において、ログ書込みなどのように1つのスレッドが処理中の際に複数のスレッドがオペレーティングシステムに受付けられて(CPU時間を割当てられて)ウエイトした場合、次に実行権限が与えられるスレッドの選択はオペレーティングシステムの判断に依存していた。つまり、オペレーティングシステムが自動的にスレッドの実行を次々に切替えるようになっていた。
【0006】
【発明が解決しようとする課題】
しかし、このようなプログラム制御システムの制御装置においては、1つのスレッドが処理中の際に他の複数のスレッドがウエイトした場合、オペレーティングシステムによって次の実行権限が与えられるので、一番早く要求を出したものが先に処理されるとは限られず、大きなタイムラグが発生するおそれがあるという問題があった。
【0007】
そこで、本発明は、アプリケーションによって実行要求が発生した順番通りにその処理を実行できるプログラム制御システムの制御装置を提供しようとするものである。
【0008】
【課題を解決するための手段】
請求項1の本発明は、少なくともマルチスレッド機能及びあるスレッドによってある範囲のコードを実行中に他のスレッドがアクセスできないようにする同期オブジェクトに対応する機能を有するオペレーティングシステムを備えたプログラム制御システムの制御装置において、少なくともスレッドがオペレーティングシステムから受付けられた時間及びスレッドごとにそのスレッドの状態を示すチェックフラグを記憶する管理テーブルを設け、スレッドを実行するのに先立って、管理テーブルにアクセスする第1の同期オブジェクトを取得して少なくともスレッドの受付時間を管理テーブルに書込んで第1の同期オブジェクトを開放し、そのスレッドの処理を実行するための第2の同期オブジェクトを取得し、管理テーブルを参照することにより、スレッドの最早受付時間をチェックしそのスレッドが最早受付時間のものか否かをその最早受付時間のチェッフラグが示す状態に基づいて判断し、最早受付時間のものでないと判断した場合は第2の同期オブジェクトを開放し、最早受付時間のものであると判断した場合はそのスレッドの処理を実行してから第2の同期オブジェクトを開放することを特徴とするプログラム制御システムの制御装置である。
【0009】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本実施の形態にかかる制御装置の構成を示すブロック図で、1は制御部本体を構成するCPU(中央処理装置)、2は上記CPU1が各部を制御するためのプログラムデータなどを記憶したROM(リード・オンリ・メモリ)、3は上記CPU1が行う各種データ処理のために使用されるメモリエリア等を設けたRAM(ランダム・アクセス・メモリ)、4はアプリケーションプログラムなどを記憶したハードディスク装置(HDD)、5は所望の情報を表示するディスプレイ、6はユーザーが各種のキー操作を行うためのキーボードである。
【0010】
図2は、本実施の形態にかかる制御装置におけるプログラム制御システムの構成を示す図で、11はオペレーティングシステム(OS)、12はアプリケーションプログラム本体13とそれに付属する複数のフレーム14からなるアプリケーションプログラム、15はオペレーティングシステム11とその上で稼働するアプリケーションプログラム12とのインタフェースとして機能するアプリケーションプログラムインタフェース(API)である。
【0011】
上記フレーム14としては、例えばマルチプロセス、マルチスレッドアプリケーション間においてグローバルな共有メモリを提供するメモリマネージャ14a、レジストリにアクセスする際に使用するレジストリアクセスクラス14b、ログに対する管理と制御を行うログマネージャ14c、その他メッセージのやり取りを行うメッセージハンドラなどがある。
【0012】
ところで、アプリケーションを開発する場合において、通常アプリケーションに付随する部分であるフレーム14は開発時に同時に行うのではなく、予め再利用性を考慮してアプリケーション12から切離せる部分だけを切出してアプリケーション本体13に先行して又は並行して開発する。本実施の形態では、特にこのアプリケーション開発時には必要不可欠なログに対する管理と制御を取りまとめるログマネージャ14cについて本発明を適用した場合について説明する。
【0013】
このログマネージャ14cは、アプリケーション本体13に対し、ログ書込みを行う関数を提供し、アプリケーション本体13はこの関数によってのみログを出力することができる。
【0014】
上記CPU11は、アプリケーション本体13によってログ書込み要求が発生した場合、ログマネージャ14cに基づいて図3に示すような処理を行うようになっている。なお、この処理は、メモリマネージャ14a、レジストリアクセスクラス14bなどのフレームをも利用しながら実行するものでもよく、またログマネージャ14cのみに基づいて実行するものでもよい。
【0015】
上記処理は、先ずST(ステップ)1にてシステムタイムを取得し、ST2にて後述の管理テーブルを排他的に実行する権限である第1の同期オブジェクトとしての第1のミューテックス(Mutex ;MUTually EXclusiveの略)の取得待ちとなる。ここでいう管理テーブルは、図4に示すように発生したログ書込み要求のスレッドごとにそのスレッドの状態を示すチェックフラグ、スレッドのID、スレッドがオペレーティングシステム11から受付けられたとき(オペレーティングシステム11からCPU時間を割当てられたとき)のシステムタイムを記憶したものである。このチェックフラグとしては、「00」はテーブルエントリなしであることを意味し、「01」はテーブルエントリ中であることを意味し、「02」はテーブル内最早要求であることを意味する。なお、上記管理テーブルは、例えばRAM3などのメモリやHDD4などに記憶する。
【0016】
また、ここでいうミューテックスとは、同期オブジェクトと呼ばれるものの1つで、あるスレッドによってある範囲のコードを実行中に他のスレッドがアクセスできないようにするオペレーティングシステム11のもつ機能の1つである。システムの相互排他ということもある。このミューテックスはアプリケーションプログラムインタフェース15で作成することができる。なお、ミューテックスを使用する場合は、予めその旨を宣言しておく必要がある。このような機能を利用する場合は、先ずミューテックスを取得し、処理が終了したらミューテックスを開放する。そうしなければ、他のスレッドが永遠に止ってしまうおそれがあるからである。
【0017】
ST2にて第1のミューテックスを取得したと判断した場合は、ST3にてチェックフラグはテーブルエントリ中の「01」に変更し、そのスレッドのID及びST1で取得したシステムタイムを管理テーブルに書込んで、ST4にて管理テーブルの第1のミューテックスを開放する。
【0018】
次に、ST5にてログマネージャ14cの第2の同期オブジェクトとしての第2のミューテックス(ログをファイルに書込む処理を排他的に実行する権限)の取得待ちとなる。ST5にて第2のミューテックスを取得したと判断した場合は、ST6にて管理テーブルのシステムタイムにより最早受付時間をチェックする。
【0019】
そして、ST7にて次に実行しようとするスレッドが最早受付時間のIDと一致するか否かを判断する。ST7にてIDが一致しないと判断した場合は、ST8にて第2のミューテックスを開放してST5の処理に戻り、IDが一致したと判断した場合は、ST9にてログ出力を行う。具体的には、例えばメモリマネージャなどを利用してログをRAM3又はHDD4のファイルに書込む。
次に、ST10にて第2のミューテックスを開放し、実行したスレッドのチェックフラグを「00」にセットしてこの処理を終了する。
【0020】
このように、本発明の実施の形態では、ログ出力の要求があった場合に、ミューテックスの機能を利用してスレッドの実行状況やスレッドがオペレーティングシステム11から受付けられたときのシステムタイムを管理テーブルに記憶しておき、そのスレッドを実行するときに上記管理テーブルを参照することにより、最も早く受付けられたスレッドから順にログ書込みの処理を行うことができる。これにより、いわゆる先入れ先出し方式によるログ書込みを行うことができるため、単一のログファイルへの書込みが競合することを防止できるとともに、複数のプロセスやスレッドによるログ書込み要求に対応できる。従って、本実施の形態によれば、アプリケーション本体13によって実行要求が発生した順番通りにその処理を実行できる。
【0021】
また、上述したような処理をログマネージャ14cのプログラムによってオペレーティングシステム11の機能を利用して実行するので、アプリケーション本体とログマネージャ14cとを切離して開発することができるため、近年におけるアプリケーション開発におけるコンポーネント化、共通化、再利用性などの要求に対応することができる。
【0022】
なお、本発明の実施の形態においては、ログ出力要求によるスレッドについてオペレーティングシステム11から受付けられた順番に処理を実行できる場合について述べたが、必ずしもこれに限定されるものではなく、他の要求によるスレッドについて受付られた順番に処理を実行する場合に適用してもよい。
【0023】
【発明の効果】
以上詳述したように本発明によれば、マルチスレッド機能を利用する場合に、スレッドがオペレーティングシステムから受付けられると、第1の同期オブジェクトを利用しながらスレッド受付時間を管理テーブルに書込み、そのスレッドを実行する第2の同期オブジェクトを取得したときは、管理テーブルを参照することにより、そのスレッドが最早受付時間のものか否かを判断し、最早受付時間のものでないと判断した場合は第2の同期オブジェクトを開放し、最早受付時間のものであると判断した場合はそのスレッドの処理を実行してから第2の同期オブジェクトを開放するようにしたので、最も早く受付けられたスレッドから順に実行できる。従って、アプリケーションによって実行要求が発生した順番通りにその処理を実行できる。
【図面の簡単な説明】
【図1】本発明の実施の形態にかかる制御装置の構成を示すブロック図。
【図2】同実施の形態にかかるプログラム制御システムの構成を説明する図。
【図3】同実施の形態においてマルチスレッド機能を利用する場合のスレッド受付時の処理を示す図。
【図4】同実施の形態における管理テーブルの例を示す図。
【符号の説明】
1…CPU
3…RAM
4…HDD
11…オペレーティングシステム
12…アプリケーションプログラム
13…アプリケーションプログラム本体
14…フレーム
15…アプリケーションプログラムインタフェース
14c…ログマネージャ

Claims (1)

  1. 少なくともマルチスレッド機能及びあるスレッドによってある範囲のコードを実行中に他のスレッドがアクセスできないようにする同期オブジェクトに対応する機能を有するオペレーティングシステムを備えたプログラム制御システムの制御装置において、少なくともスレッドがオペレーティングシステムから受付けられた時間及び前記スレッドごとにそのスレッドの状態を示すチェックフラグを記憶する管理テーブルを設け、スレッドを実行するのに先立って、前記管理テーブルにアクセスする第1の同期オブジェクトを取得して少なくともスレッドの受付時間を前記管理テーブルに書込んで第1の同期オブジェクトを開放し、そのスレッドの処理を実行するための第2の同期オブジェクトを取得し、前記管理テーブルを参照することにより、前記スレッドの最早受付時間をチェックしそのスレッドが最早受付時間のものか否かをその最早受付時間の前記チェッフラグが示す状態に基づいて判断し、最早受付時間のものでないと判断した場合は第2の同期オブジェクトを開放し、最早受付時間のものであると判断した場合はそのスレッドの処理を実行してから第2の同期オブジェクトを開放することを特徴とするプログラム制御システムの制御装置。
JP28750898A 1998-10-09 1998-10-09 プログラム制御システムの制御装置 Expired - Fee Related JP3764282B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28750898A JP3764282B2 (ja) 1998-10-09 1998-10-09 プログラム制御システムの制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28750898A JP3764282B2 (ja) 1998-10-09 1998-10-09 プログラム制御システムの制御装置

Publications (2)

Publication Number Publication Date
JP2000112774A JP2000112774A (ja) 2000-04-21
JP3764282B2 true JP3764282B2 (ja) 2006-04-05

Family

ID=17718257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28750898A Expired - Fee Related JP3764282B2 (ja) 1998-10-09 1998-10-09 プログラム制御システムの制御装置

Country Status (1)

Country Link
JP (1) JP3764282B2 (ja)

Also Published As

Publication number Publication date
JP2000112774A (ja) 2000-04-21

Similar Documents

Publication Publication Date Title
EP0735473B1 (en) Method and apparatus for managing a database in a distributed object operating environment
Craig Queuing spin lock algorithms to support timing predictability
US5966543A (en) Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system
CN105579961B (zh) 数据处理系统及操作方法、用于数据处理系统的硬件单元
US7752620B2 (en) Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
TWI267782B (en) Deallocation of computer data in a multithreaded computer
US7162666B2 (en) Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks
US7584222B1 (en) Methods and apparatus facilitating access to shared storage among multiple computers
EP0747815B1 (en) Method and apparatus for avoiding dealocks by serializing multithreaded access to unsafe resources
US6226717B1 (en) System and method for exclusive access to shared storage
US4809168A (en) Passive serialization in a multitasking environment
US7395383B2 (en) Realtime-safe read copy update with per-processor read/write locks
US6886081B2 (en) Method and tool for determining ownership of a multiple owner lock in multithreading environments
US6256637B1 (en) Transactional virtual machine architecture
US8225120B2 (en) Wake-and-go mechanism with data exclusivity
US8978131B2 (en) Deterministic serialization of access to shared resources in a multi-processor system for code instructions accessing resources in a non-deterministic order
JP2514299B2 (ja) プロセスレベルプログラミングのための割込み処理の直列化方法
US20070204271A1 (en) Method and system for simulating a multi-CPU/multi-core CPU/multi-threaded CPU hardware platform
KR101063604B1 (ko) 멀티프로세서 시스템 상에서 멀티스레드 프로그램으로부터의 메모리 액세스를 관리하기 위한 방법 및 시스템
JPH0628053B2 (ja) マルチプロセッサシステムの資源の割当制御方法
JPH1115793A (ja) 資源の保全性を保護する方法
CA1304513C (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
US7748003B2 (en) Hard real-time response
JP3764282B2 (ja) プログラム制御システムの制御装置
JP2021060707A (ja) 同期制御システムおよび同期制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050726

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050922

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060119

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees