2

cosmos for Visual Studio (in c#) を使用してオペレーティング システムの開発を開始したばかりです。

多くの人がそれをシャットダウンする方法を言いました、そして私はあらゆる方法を試しましたが、これは私が理解できない奇妙なエラーを引き起こします!

これは、OSをシャットダウンするために使用しているコードです:

this.stop()
Cosmos.Core.Bootstrap.CPU.halt();

しかし、これはビルド時に受け取るエラーです:

Error occurred while invoking IL2CPU
Exception: System.Exception: Assembly 'CosmosKernel7' is in ring User(3). It references assembly 'Cosmos.Core' which is in ring Core(0), but this is not allowed!

意味がわかりません……。

誰かがこれを修正するのを手伝ってくれますか?

ありがとう!

4

5 に答える 5

1

将来の参加者のために、ここに残しておきます。コスモスはリングシステムを使用しています。4つあります。隣のリング以外のリングにはアクセスできません。カーネルは、最も高いリング 3 にあります。それで、いくつかのクラス ライブラリを作成し、 を含む cosmos のものを参照しcosmos.common、 に移動しAssemblyInfo.csて追加し[assembly: Ring(Ring.WHATEVER)]ます。

于 2015-10-01T21:01:17.473 に答える
0

https://github.com/CosmosOS/Cosmos/wiki/Rings :

リングは、COSMOS の基本的な「セキュリティ」機能です。それらはコードの動作を制限するので、間違いが少なくなります。特定のリング内のコードは、隣接するリング内のコードのみを参照および使用できます。たとえば、オペレーティング システムのカーネル (リング 3) は、システム リング (リング 2) としか通信できません。Cosmos には 4 つのリングがあります。

  • コア (0)
  • ハードウェア (1)
  • システム (2)
  • ユーザー (3)

そのため、OS MyAwesomeOS (カーネルが含まれているため、リング 3 (ユーザー) にある) に対して、たとえばリング 2 (システム) にある MyAwesomeOS.System と MyAwesomeOS.Hardware という名前のクラス ライブラリを作成する必要があります。リング 1 (ハードウェア) にある場合は、メイン プロジェクトからこれらのクラス ライブラリを参照します。

于 2016-06-14T00:40:04.467 に答える
0

そのエラーはすでに修正されていると思います。GitHub から Cosmos の最新バージョンをダウンロードしてみてください。

于 2015-07-18T12:20:08.947 に答える