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 阅读(2070)
评论(8) 编辑 收藏 引用 所属分类:
操作系统