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 閱讀(2087)
評論(8) 編輯 收藏 引用 所屬分類:
操作系統