別のオペレーティングシステムアーキテクチャ

私は毎日の趣味のコーディングを少し休憩して、実際に私がしていることの説明を共有することにしました。 そのため、存在しないオペレーティングシステム用の仮想マシンを開発および実装しようとしていますが、おそらくいつかは実装を開始するでしょう。 私は口で泡について議論することはせず、別のOSが必要な理由を証明します。簡単に答えます。それから主に興味があります。









だから、システムアーキテクチャの私の現在のビジョン。


1.モジュールとフローの2つの主要なエンティティがあります。

2.モジュールには、変更されていないコードと変更可能なデータが含まれています。

3.モジュールは永続的です。



最後の段落は、モジュールが常に存在することを示しています。 実際には、これは仮想メモリを介して実装する必要があります。 すなわち 現在使用されているモジュールのページはRAMにロードされ、未使用のページはディスクにダウンロードされます。 永続的なサポートはシステムレベルで行う必要があります。 アプリケーションプログラマに対して完全に透過的です。 これは、論理的に結論付けられたスワップと見なすことができます。モジュールをRAMにロードする必要がなくなると、「永遠の」スワップになり、要求に応じて自動的にロードされます。 つまり、ファイルシステムは不要になりました。



4.モジュールには、外部呼び出しに使用できる多くの外部プロシージャがあります。 モジュールデータは、外部プロシージャを介して間接的にのみ利用できます。

5.モジュールには、インスタンスUUID(ID)とタイプUUID(TID)があります。

6.モジュールをコピーすると、コピー用に新しいIDが生成されますが、古いTIDは保存されます。

7.モジュールは、グローバルネットワークのID、またはローカルホストのTIDで見つけることができます。



同じTIDのモジュールが複数ある場合でも、ローカルホスト上の各TIDに対応するモジュールは1つだけです。



8.スレッドは、モジュールIDと数値識別子によって外部プロシージャを呼び出すことができます。

9.スレッドは、同じホストにあるそのモジュールのTIDとその数値識別子によって外部プロシージャを呼び出すことができます。



大まかに言うと、モジュールを動的にロードされるライブラリとして使用するには、TIDが必要です。 実際、ホストには多くの同じコード(システムソフトウェア、コーデックなど)があり、それらへのアクセスは非常に効果的であり、リモートで使用する意味がありません。







マルチスレッド同期モデルになりました。


1.外部プロシージャへの呼び出しが同期されます。

2.外部プロシージャは、関数(fプロシージャ)、リーダー(rプロシージャ)、またはライター(wプロシージャ)です。 Fプロシージャはモジュールの変更可能なデータを使用せず、rプロシージャは変更可能なデータを読み取り、wプロシージャはそれらを変更します。

3.モジュールf-procedureの呼び出しは、ブロックせずに呼び出されます。

4.他のr-procedureがこのモジュールで既に呼び出されている場合、r-procedure呼び出しはブロックされません。

5.このモジュールでw-procedureがすでに呼び出されている場合、r-procedureおよびw-procedureの呼び出しはブロックされます。

6. r手続きとw手続きがブロックされている場合、最初の手続きがロック解除されると、w手続きが実行されます。



すなわち 作家のいない多くの読者がいることもあれば、作家が1人だけいることもあります。 ライターはリーダーよりも優先順位が高くなります。







上記の論文では、多くが欠落しています。 特に、セキュリティアーキテクチャは完全に存在しません。 残念ながら、まだ定式化できません。



以降の投稿では、仮想マシンの一般的なアーキテクチャと、プロジェクトの現在の状態までの実装の詳細について説明します。 ところで、現在の実装では、階乗およびクイックソートプログラムを実行できます。 時期尚早な好奇心のために、リポジトリへのリンクを提供します: github.com/ababo/AntOS-VM-Prototype



All Articles