2

我刚开始使用 cosmos 为 Visual Studio 开发操作系统(在 C# 中)

很多人说如何关闭它,我尝试了每一种方法,但是这个给出了一些我根本无法理解的奇怪错误!

这是我用来关闭操作系统的代码:

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

为了将来的人,我将把它留在这里。Cosmos 使用环系统。有四个。除了您旁边的戒指,您无法访问任何戒指。你的内核在第 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 的基本“安全”功能。它们限制代码的操作,以便更少出错。特定环中的代码只能引用并因此使用相邻环中的代码。例如,您的操作系统的内核(在 ring 3 中)只能与系统 ring(ring 2)通信。在 Cosmos 中有 4 个环:

  • 核心 (0)
  • 硬件 (1)
  • 系统 (2)
  • 用户 (3)

因此,您需要为您的操作系统 MyAwesomeOS(其中包含内核,因此在环 3(用户)中)创建一个名为例如 MyAwesomeOS.System 的类库,它将位于环 2(系统)中,而 MyAwesomeOS.Hardware 将在环 1(硬件)中,然后您将从主项目中引用这些类库。

于 2016-06-14T00:40:04.467 回答
0

我认为该错误已经修复。尝试从 GitHub 下载最新版本的 Cosmos。

于 2015-07-18T12:20:08.947 回答
0

Cosmos 最新用户工具包中的关机代码是 - Cosmos.System.Power.ShutDown(); 而对于重启是 - Cosmos.System.Power.Reboot();

我在浏览时间和日期函数时发现了这段代码。

于 2019-07-18T10:50:55.350 回答
0

我认为你应该替换所有这样的

Cosmos.System.power.shutdown(); //用于关机

Cosmos.System.Power.Reboot(); //用于重启或重启

于 2021-11-14T09:37:08.277 回答