![OSインフェルノ](https://habrastorage.org/getpro/geektimes/post_images/7e2/b60/ff1/7e2b60ff1613fbcc1529c1a91ca3a634.jpg)
それでは、主なものから始めましょう-Infernoの太陽の下の場所はどこですか 、Infernoを使用する意味と場所。 いいえ、デスクトップまたはサーバーの役割にInfernoを提供していません。これらの暖かい場所は現在占有されています。 :)しかし、Infernoが他のタスクよりもうまく対処できるタスクが少なくとも3つあります。
- 分散コンピューティングとグリッド (Styxプロトコルのおかげで、ローカルリソースとリモートリソースへのアクセスに違いはないため、分散システムを非常に簡単に作成できます)。
- 同種環境(Limboで記述されたアプリケーションは、Windows、Unix、および組み込みデバイスで同等に動作することが保証されます)。
- 内蔵デバイス (Infernoは多くのプロセッサとデバイスをサポートしています... Infernoは既にガジェット内で動作している可能性がありますが、疑いはありません:))。
しかし個人的には、Infernoは主にこれらの機能ではなく、他のシステム/言語よりもはるかに簡単かつエレガントに問題を解決できるようにするアーキテクチャの優雅さとシンプルさに惹かれます。 そして、ここでは、最も一般的なタスクについて言及しています。これらのタスクは、分散コンピューティングやInfernoの他の主要機能とはまったく関係ありません。
シンプルさ
- システム全体の既存のドキュメントとLimboプログラミングに関するすべてのドキュメントを4日間で読みました。これには、ほぼ完全にmanドキュメントのセクション2(システムコール)および3(ライブラリ関数)の類似物が含まれます。 確かに、私は1日18時間読む。 :)そして、これはシステムの不十分なドキュメントによるものではなく、そのシンプルさによるものです!
- Infernoには、他のシステムと比較してコードがほとんど含まれていません。 そして、コードは完全にオープンです。 これにより、著者がシステムの変更/修正を拒否した場合に、システムを詳細に理解し、自分で変更/修正することができます。 (すべての.cファイルと.hファイルのボリュームをfindとwcで計算しました:それぞれ15MBの750,000行と3.5MBの100,000行は、すべてのプラットフォーム(ネイティブおよびホストの両方!)、ドライバー、仮想マシン、 Limboコンパイラ-比較のために、Linuxカーネルのみが1桁長くかかります。すべてのアプリケーションソフトウェアとライブラリはLimboで記述されており、10MBで500,000行を占有します。)
- たとえば、LinuxサーバーでLimboアプリケーションを実行するには、合計サイズが1.1MBの3つの Inferno ファイルをサーバーにコピーする必要があります:)アプリケーションと必要なライブラリ(使用する場合)。
- まあ、最も重要なこと-アーキテクチャのシンプルさ。 しかし、私はこのトピックを個別に開きたいです、それに値する!
有効性
- 非常に軽いスレッド:数千から数万のスレッドを作成できます。システムは正常かつ迅速に動作します(混乱しない限り、スレッドスタックの動的メモリ割り当てをヒープ単位で行い、メモリを節約します)。
- Jit。 一般に、Dis(仮想マシン)は非常に高速に動作します。 しかし、Infernoで最大の効率を達成するために、JITのサポートがあります。 実行中のバイトコードは、実行されるプロセッサのネイティブコードにコンパイルされます。 さらに、Disバイトコードは元々、ほとんどの既存のプロセッサのJITコンパイルを簡素化するために設計されました。
移植性
- バイトコード。 一度コンパイルしてから、Infernoの下で実行します。ネイティブでもホストでも、どのプロセッサで実行されていても問題ありません。 Infernoの作成者は、どのシステムでも同じアプリケーションを保証します。
- ホストモードでは、すべての一般的なOSがサポートされます。
- ネイティブモードでは、複数のプロセッサがサポートされます。
言語リンボ
- 並行プログラミング
- スレッドを同期するために、 Hoareの 通信シーケンシャルプロセス(CSP) の開発されたアイデアが使用され 、プログラミングが大幅に簡素化されました。 (ちなみに、 ロブパイクのGoogle TechTalkはこのテーマで見ることができます。)
- 強い型付け。
- 多数の高レベル機能(タプル、altなど)のサポート。 このトピックについても個別に説明します。 :)
安全性
- ローカルおよびリモートのすべてのリソースへのアクセスは、Styxプロトコルを介して行われます。 また、Styxには、SSL証明書形式の認証、認証、および暗号化のサポートが組み込まれています。 したがって、システム管理および証明書の発行の段階でセキュリティが確保されます。アプリケーションでは、原則として、セキュリティのために特別にプログラムする必要はありません。
考えられる制限(私の個人的な観察)
- UNIXソケットはまだサポートされていませんが、すぐに追加される可能性があります。 更新: 20110329が追加されました。
- ホストOS(Linux / Windows /など)の各ブロッキングシステムコールは、すべてのInfernoの作業をブロックしないように、個別のスレッドで実行されます。 同時に多数のブロッキングsyskols(たとえば、同時にハングしてI / O 10000+クライアントを作成するサーバー)では、問題が発生する可能性があります。
- セミクローズソケットはサポートされていません(つまり、ソケットを閉じずにシャットダウン(SHUT_WR)を使用してリモート側にEOFを送信することはできません。そして、そうはなりません。これはイデオロギー的に間違っているからです。)
- よくわかりませんが、SSLv3が完全にサポートされていない可能性があります。 つまり https://サイトにアクセスできますが、すべての機能が実装されているわけではありません。
これらの制限のほとんどは、Infernoの1つの機能により回避できることに注意する必要があります。ホストOSプロセスを開始して、それらと対話することが可能です。 つまり たとえば、Limbo上のアプリケーションからLinux perlスクリプトを呼び出し、データを転送して、そこからデータを読み取ることができます。 この機能を使用して、UnboからUNIXソケットへのアクセスをすでに保護しています(LimboからSyslogに書き込みたいと思っていました)。
参照資料
citforum.ru/operating_systems/inferno_programming
(さらに、この記事の最後に役立つリンク集があります)
powerman.name/Inferno
(私のサイト、リンボにロシアのドックがあります)
habrahabr.ru/search/?q=%5Binferno%5D&target_type=posts
(habrでのOS Infernoに関する他の記事)