メモ
私の提督、あなたの艦隊は数百、多分数千の船を数えます。 それらはすべて単一の生物として機能し、1つの情報フィールドで機能します。 無線通信は通信チャネルとして使用されます。または、無線抑制(または無音)の条件下で動作する場合はレーザー通信が使用されます。 ほとんどの場合、Erlangは船上で基本ソフトウェアとして使用され、各船は宇宙艦隊のコンピューティングクラスターのノードです 。 これにより、フラッグシップで実行される戦闘プログラムは、艦艇のリソースを独自のものとして管理し、戦闘の相互作用を調整できます。 私たちの太陽系の近くで宇宙戦を行う条件では、このアプローチは、テストと実際の戦闘の両方で高い効率を示しました。 しかし、このパーティは私たちに新しい任務を課します:太陽系の範囲内で敵の侵入を防ぎ、敵を発見し、遠い国境で敵と戦うことです。
超光速と広大な距離の条件では、新しい敵が私たちを待っています。 今回はテクニカル。 この敵の名前は「 タイムワープ 」です。 それが何であり、どのように対処するか(Erlangバージョン18以降を使用)は、このメモで説明されています。 このノートは技術文書-Erlangの時刻と時刻の修正に基づいています。
単一のタイムライン
新しい条件は、エンジニアに新しい技術的課題をもたらします。 宇宙オブジェクトの調整された作業は、ネットワークの相互作用だけでなく、地球上の時刻と時計の正確な同期によっても達成されます。 自動空間オブジェクトが特定のプログラムに従う、またはネットワーク通信が失われた状態で動作するためには、その内部クロックを地球の時間と同期させる必要があります。 この目的のために、私たちの太陽系内で、政府は(納税者のお金で)時間同期衛星の星座を構築し、確立しました。 現在、自動衛星は、メインバッテリーが損傷した場合でも、ソーラーパネルからのみ直接動作する条件下で、最も近い時刻同期衛星から信号を受信し、正確な時刻を特定できます。
なぜこのシステムは戦闘に役立たないのですか?
1)新しい環境では、太陽系外で戦わなければなりません。 宇宙には時間同期衛星はありません。
2)戦闘艦隊は民間システムに依存することはできず、またそうすべきではありません。
3)戦闘艦隊は固定システムに依存できません。
艦隊は完全に独立し、自給自足でなければなりません。
これを行うには、艦隊船が互いに独立して時間を同期する必要があります。 ほとんどの場合、すべてのクロックはフラグシップクロックと同期する必要があります。
しかし、あなたは言う:「原子時計は私たちの巡洋艦に設置され、戦闘艦でもルビジウム基準発電機の時計を使用し、誘導ミサイルは熱補償された水晶発振器が大きな価値と間違われるほど長くは生きられません。」 そして、あなたは正しいでしょう。 はい、戦闘の前に一度同期できます。 戦闘中、個々の船はクラスターとの接触を失うかもしれませんが、 同じ時間スケールで戦闘任務を遂行し続けます。
さまざまな時間スケールでのアクション
船舶で異なる時間値を設定できる理由はいくつかあります。
-旗艦は、サブスペーストンネルを介してシーンに近づくことができます。この場合、地球時間との同期を失うことなく、即座に座標を変更します。
-イベントの場所にある観測衛星は、同期の可能性なしに長時間存在する可能性があり、時計の発電機の不正確さのために、その時間は地球の時間より「遅れる」または「進む」ことができます
-中流階級の船は、サブライト速度でシーンに近づくことができ、相対論的効果が彼らの時計に影響を与える
-超大型ブラックホールの近くまたは通過する自動船
いずれの場合も、船が旗艦の無線可視化ゾーンに表示されるとすぐに、時刻とクラスターへの後続の接続が同期されます。 同期プロセス中に、同期された船の時計が前方に移動し 、さらに悪いことに後方に移動します。 この効果はタイムワープと呼ばれます。
技術的解決策
OTP 18(ERTSバージョン7.0)は、時間とともに機能を拡張しました。 これらの機能は、時間およびタイムワープを操作するためのAPIに含まれており、システム時間を変更するときにシステムの動作を変更します。 デフォルトのタイムラグモードは古いAPIと同じですが、これはまだ有効です。 したがって、これを望まない場合は何も変更できません。 ただし、 erlang:now / 0に基づく古いAPI関数の代わりに、新しいAPI関数を使用することを強くお勧めします。 Erlang:スケーラビリティのボトルネックであるため、 現在/ 0は非推奨としてフラグが立てられています。 新しいAPIを使用すると、スケーラビリティとパフォーマンスが自動的に向上します。 また、マルチタイムワープモードを使用することもできます。これにより、時間測定の精度が向上します。
Erlangプラットフォームは、リアルタイムクロックだけでなく、内部プロセッサクロックカウンターも使用します。 アーランの時刻修正により、アプリケーションはアーランの単調時計に時間のずれがなく、比較的正確であることを保証します。 一時的なシステムの動作の完全な理解については、 技術文書 [ 1 ]を参照してください。 新しい一時APIの概念を示します。「単調な時間」、「厳密に単調な時間」、UT1、UTCなどです。 POSIX時間、時間精度、時間分解能、時間精度、タイムワープ、OSシステム時間、OS単調時間、アーランシステム時間、アーラン単調時間など。アーランとシステム時間の両方を取得する方法を説明し、古いプログラムコードを更新する手順を示します。 。
Erlangチームは最新の情報をお届けします。未来へようこそ!
使用されたソースのリスト
1.http : //erlang.org/doc/apps/erts/time_correction.html-Erlangでの時刻と時刻の修正