SSブログ

調べもの:仕様書Real-time CORBAの構成 [OCUP&OCRES]

第二版:2009-07-25 21:00:19
初出:2008-03-09 20:11:17

OCRESの学習として、仕様書の構成確認中。
で。この仕様書、IntermediateとAdvancedで同じ仕様書を対象としていますが、バージョンが違います。
Intermediateが1.2, Advancedが2.0ですね。

とはいえ、章構成もページ数も一緒だったりします。
「OMG Document --Real-time CORBA」
http://www.omg.org/cgi-bin/doc?formal/03-11-01

"This specification replaces the term and concept of an activity that appeared as a design and analysis suggestion in Real-time CORBA 1.1 with a specification for an end-to-end schedulable entity termed distributable thread. Additionally, this specification’s introduction of the entity termed scheduling segment completes the replacement of the activity concept from Real-time CORBA 1.1."(引用:上記仕様書v2.0 "3.1.2 Distributable Thread"より)
以上の通りなので、動的スケジューリングについてはv2.0で置き換わっているとみた方がよいですね。

この仕様書は、Real-time CORBAの仕様書です。

Real-time CORBAは、以下の通りCORBAをReal-time向けに拡張したものですね。
"Real-time CORBA defines a set of extensions to CORBA. The extensions to the CORBA Core are specified in the Real-time CORBA Extensions chapter. The extensions to the Real-time Base Architecture required to support dynamically scheduled systems is specified in the Dynamic Scheduling chapter."(引用:上記仕様書"1.5 Real-time CORBA Architectural Overview"より)
その拡張要素を示しているのが「2. Real-time CORBA Extensions」の章です。
前半部分はIntermediateで問われています。

Advancedの範囲は以下の通り。RT-CORBAのスケジューリングは、分散スレッドで、プライオリティがあるものですね。

2.11 Implicit and Explicit Binding
CORBA::Object::validate_connectionで、Bindingを操作できます。明示的にやらなければORBに定められた時点で暗黙的にBindingされます。Overheadの関係で、明示推奨。
Client-sideに使えるReal-time CORBA ApplicationはimplicitでもExplicitでも影響は同じ。
2.12 PriorityBandedConnection
PRIORITY_BANDED_CONNECTION_POLICY_TYPE = 45;
PriorityBand属性には任意の値を割り当てできます、と。single priorityをカバーするPriorityBandsは混在できます。(?)priorityは一度だけカバーされます。Priorityは連続している必要もないし、すべてのCORBA priorityをカバーする必要もないです。bandがなければSingle connectionが構築されます。
bandでカバーするのに失敗するとNO_RESOURCES例外が発生。
2.12.1 Scope of PriorityBandedConnectionPolicy
client-side onlyです。POA生成時にserver-side, client-sideに割り当て可。clientから公開されたり、serverからclientへ伝播したり。両方に割り当てるとINV_POLICY例外発生。
2.12.2 Binding of Priority Banded Connection
2.13 PrivateConnectionPolicy
2.14 Invocation Timeout
2.15 Protocol Configuration
2.15.1 ServerProtocolPolicy
2.15.2 Scope of ServerProtocolPolicy
2.15.3 ClientProtocolPolicy
2.15.4 Scope of ClientProtocolPolicy
2.15.5 Protocol Configuration Semantics
2.16 Consolidated IDL

「3. Dynamic Scheduling」では、それまで述べられてきたReal-time CORBAの構成、Real-time CORBAの拡張要素を踏まえて、CORBAでのDynamic Schedulingについて述べられています。

"This specification is based on a scheduling service architecture for a hypothetical or notional scheduling service plug-in. The specification does not require that scheduling service implementations conform to this notional architecture."()
なので、あくまで論理的・仮想的な話で、ということですね。実装に入り込んだ話まではしませんよ、と。

「Section I - Overview and Rationale」では、Dynamic schedulingの概説と、このセクションでやろうとしていることの目的と妥当性を確認している、というところですか。
3.1 Overview
3.1.1 Dynamic Scheduling
3.1.2 Distributable Thread
3.2 Rationale
3.3 Notional Scheduling Service Architecture
3.4 Goals of this Specification
3.5 Scope

で。Section Iを踏まえて「Section II - Concepts」で、Dynamic Schedulingの方法論を述べている、と。
3.6 Sequencing: Scheduling and Dispatching
3.7 Well Known Scheduling Disciplines
よく知られているスケジュールのアルゴリズム4つを説明しています。
3.7.1 Fixed Priority Scheduling
3.7.2 Earliest Deadline First (EDF)
http://mishika.blog.so-net.ne.jp/2009-07-29
3.7.3 Least Laxity First (LLF)
3.7.4 Maximize Accrued Utility (MAU)
http://mishika.blog.so-net.ne.jp/2009-07-25-1
3.8 Distributed System Scheduling
3.9 Distributable Thread

「Section III - Overview of the Programming Model」では、今まで述べてきた概念や方法論をプログラミングするためのSchedulerのモデルについて述べているセクション、ですね。
3.10 Scheduler
3.10.1 Scheduler Characteristics
3.10.2 Scheduling Parameter Elements
3.10.3 Pluggable Scheduler and Interoperability
3.10.4 Distributable Threads
3.10.5 Implicit Forking and Joining
3.10.6 Scheduling Segments, Parameter Elements, and Schedulable Entities
3.10.7 Scheduling Points
3.10.8 Schedule-Aware Resources
3.10.9 Exceptions
3.10.10 Summary

「Section IV - Scheduler Interoperability and Portability」では、分散システムでのスケジューリングでポイントとする相互作用と移植性について述べています。
3.11 Scheduler Interoperability
3.12 Scheduler Portability
3.13 Dynamic Scheduling Interoperation

「Section V - Dynamic Scheduling Interfaces」で、最後に、実装するための関数などを列挙している、と。
3.14 ThreadAction Interface

3.14.1 do Operation
新しく発生した分散Threadへのエントリポイントを提供します。ユーザが実装したThreadActionオブジェクトの親タイプとして振る舞います。
デフォルトでは何もしません。
3.15 RTScheduling::Current Interface
3.15.1 spawn Operation
3.15.2 UNSUPPORTED_SCHEDULING_DISCIPLINE Exception
3.15.3 begin_scheduling_segment Operation
3.15.4 update_scheduling_segment Operation
3.15.5 end_scheduling_segment Operation
3.15.6 Id Related Operations
3.15.7 scheduling_parameter and implicit_scheduling_parameter Attributes
3.15.8 current_scheduling_segment_names Attribute
3.16 RTScheduling::ResourceManager Interface
3.16.1 IDL
3.17 RTScheduling::DistributableThread Interface
3.17.1 IDL
3.17.2 cancel Operation
3.18 RTScheduling::Scheduler Interface
3.18.1 Scheduler::INCOMPATIBLE_SCHEDULING_DISCIPLINES Exception
3.18.2 Scheduler::scheduling_policies Attribute
3.18.3 Scheduler::poa_polices Attribute
3.18.4 Scheduler::scheduling_discipline_name Attribute
3.18.5 Scheduler::create_resource_manager Operation
3.18.6 Scheduler::set_scheduling_parameter Operation


今回はここまで。
タグ:OCRES
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0