CosmosKernel是一个开源项目,意在使C#可以开发操作系统。它首先将C#代码编译为IL中间件,然后交由IL2CPU将IL中间件编译为可执行代码。
下面是测试步骤:
1.下载
Userkit2.安装Userkit
3.启动VS2010并创建CosmosKernelTest项目

4.我们为其编写一个Process的结构表示一个进程
 1     public class Process
 2     {
 3         protected string name;
 4         protected Process next;
 5 
 6         public Process(string name)
 7         {
 8             this.name = name;
 9         }
10 
11         public string Name
12         {
13             get
14             {
15                 return name;
16             }
17             set
18             {
19                 name = value;
20             }
21         }
22 
23         public Process Next
24         {
25             get
26             {
27                 return next;
28             }
29             set
30             {
31                 next = value;
32             }
33         }
34     }
5.我们创建一个ProcessSchedule类来保存Process表以及进行进程调度
 1     public class ProcessSchedule
 2     {
 3         protected Process Head = null;
 4         protected Process Tail = null;
 5         protected Process Current = null;
 6 
 7         public void AddProcess(Process P)
 8         {
 9             if (Head == null) Head = Tail = Current = P;
10             else
11             {
12                 P.Next = Head;
13                 Tail.Next = P;
14                 Tail = P;
15             }
16         }
17 
18         public void Schedule()
19         {
20             Console.Write(Current.Name + " ");
21             Current = Current.Next;
22         }
23     }
6.我们修改Kernel.cs文件的代码来实现进程调度
 1     public class Kernel : Sys.Kernel
 2     {
 3         protected ProcessSchedule ps = new ProcessSchedule();
 4 
 5         protected override void BeforeRun()
 6         {
 7             Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back.");
 8             Process ProcessA = new Process("ProcessA");
 9             Process ProcessB = new Process("ProcessB");
10             Process ProcessC = new Process("ProcessC");
11             ps.AddProcess(ProcessA);
12             ps.AddProcess(ProcessB);
13             ps.AddProcess(ProcessC);
14         }
15 
16         protected override void Run()
17         {
18             ps.Schedule();
19         }
20     }
7.选择编译为Release版本,并完成编译生成CosmosKernelTestBoot.iso光盘镜像文件
8.使用虚拟机调试这个操作系统,你会看到屏幕上3个进程在来回切换,但是速度非常快。于是我们为其添加一些循环来降低切换速度
1             for (int i = 0; i < 1000; i++)
2                 for (int j = 0; j < 1000; j++)
3                     for (int k = 0; k < 100; k++) ;
9.编译运行后可以看到运行结果
值得注意的是目前这个项目并不成熟,应此只能实现单任务的操作系统(即一个任务执行完成后再调度另一个任务)。 所有文件打包下载
	posted on 2011-06-10 17:24 
lwch 阅读(2120) 
评论(8)  编辑 收藏 引用  所属分类: 
操作系统