宇宙os问题

时间:2015-06-30 19:31:37

标签: c# cosmos

我刚刚开始使用cosmos for 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 个答案:

答案 0 :(得分:1)

为了未来的目的,我将把它留在这里。宇宙使用戒指系统。有四个。您不能访问除您旁边的戒指以外的任何戒指。你的内核是第3环,最高的。所以,制作几个类库,引用包括cosmos.common在内的宇宙内容,然后进入AssemblyInfo.cs并添加[assembly: Ring(Ring.WHATEVER)]

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

  

戒指是COSMOS的基本“安全”功能。它们限制了代码的操作,以便减少出错。特定环中的代码只能引用并因此使用相邻环中的代码。例如,操作系统的内核(在环3中)只能与系统环(环2)通信。在宇宙中有4个戒指:

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

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

答案 3 :(得分:0)

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

浏览时间和日期功能时,我找到了这段代码。