CosmosKernel是一個(gè)開源項(xiàng)目,意在使C#可以開發(fā)操作系統(tǒng)。它首先將C#代碼編譯為IL中間件,然后交由IL2CPU將IL中間件編譯為可執(zhí)行代碼。
下面是測試步驟:
1.下載
Userkit2.安裝Userkit
3.啟動(dòng)VS2010并創(chuàng)建CosmosKernelTest項(xiàng)目

4.我們?yōu)槠渚帉懸粋€(gè)Process的結(jié)構(gòu)表示一個(gè)進(jìn)程
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.我們創(chuàng)建一個(gè)ProcessSchedule類來保存Process表以及進(jìn)行進(jìn)程調(diào)度
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文件的代碼來實(shí)現(xiàn)進(jìn)程調(diào)度
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.使用虛擬機(jī)調(diào)試這個(gè)操作系統(tǒng),你會(huì)看到屏幕上3個(gè)進(jìn)程在來回切換,但是速度非常快。于是我們?yōu)槠涮砑右恍┭h(huán)來降低切換速度
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.編譯運(yùn)行后可以看到運(yùn)行結(jié)果
值得注意的是目前這個(gè)項(xiàng)目并不成熟,應(yīng)此只能實(shí)現(xiàn)單任務(wù)的操作系統(tǒng)(即一個(gè)任務(wù)執(zhí)行完成后再調(diào)度另一個(gè)任務(wù))。 所有文件打包下載
posted on 2011-06-10 17:24
lwch 閱讀(2086)
評論(8) 編輯 收藏 引用 所屬分類:
操作系統(tǒng)