4

儘管標題是我問題的一部分,但第二部分不會那麼簡單。 第一部分:假設我想創建自己的操作系統。我該怎麼做呢?我知道我必須創建一個引導程序。但我從哪裏去?我不得不將它發送到另一個程序,但要做到這一點,該程序必須在那裏,我必須確切地知道它在內存空間中的位置。任何提示/教程?從零開始的操作系統

第二個問題。我目前正在研究內存管理,我認爲我有一個更好的實現放置算法的理論,但除了理論上我無法真正地測試它。一旦我可以創建操作系統(所以這是供將來參考的),我該如何真正搞亂主內存,並且移動進程?

P.S .:另外,我是否必須編寫自己的文件系統?

編輯:讀完當前的評論後,我想修改我說的。當我說「第二部分不會那麼簡單」時,這似乎是一個糟糕的選擇。我知道兩者都是非常困難的事情,但這對我來說並不重要。我只是喜歡學習新事物。我並不是說有人爲我寫一篇教程,只是爲了讓我指出正確的方向。

+5

你有什麼樣的編碼體驗? – Varriount 2010-12-07 01:27:13

+0

我已經編了好幾年了,並且可以在C++中流利地編寫代碼,並且能夠在Java中相當流暢地(保存一些東西)。我在大會上做了一些工作(雖然我很想做更多的事情,這非常有趣)。 – 2010-12-07 02:22:11

回答

5

Phew。現在這是一個相當大的問題!我不認爲你在這裏得到的答案將涵蓋如此巨大的理由(除非有人坐下來寫和修改一兩個小時)。

我建議你先閱讀操作系統 - 嘗試Tanenbaum的書籍,OSDev.org快速參考。

你可以使用GRUB作爲你的引導程序 - 這應該簡化一些事情。

+0

一定會看看使用GRUB引導加載程序。 – 2010-12-07 01:59:21

0

關於操作系統Operating System Concepts的理論書會真的幫助你。任何操作系統都需要一個調度程序來處理任務切換,上下文切換,陷阱等。

1

這不是一個簡單的努力,但你會學到很多東西。我建議前往http://wiki.osdev.org/Main_Page,因爲該網站有許多教程,並會讓你開始確定。

+0

謝謝,我一定會給你一看。 – 2010-12-07 01:58:40

3

我不同意標題是簡單的部分。您可以考慮學習minix

+0

或者試試鑫努(不是Unix) – KevinDTimm 2010-12-07 01:35:56

+0

好吧,哈哈,我想簡單就是這裏的一個相對名詞。 – 2010-12-07 01:52:07

1

您所描述的大部分組件(內存管理器,FS)都可以在不爲其編寫操作系統的情況下實施,測試和使用。

此外,引導程序並不是您首先要做的第一件事。你看,應該有些東西會被它加載。這個東西(必須開發和測試)比引導加載程序要困難得多。

看來你低估了做這件事所需的工作量(和知識!)。你所能做的最好的就是找到一個願意向你解釋的朋友,並與他聊一個小時。

,你可能要考慮修改
0

另一個好的參考書是:

祝你好運。我的意思是,祝你好運。

3

您可能需要考慮模擬(全部或部分)操作系統,而不是實際編寫一個操作系統。根據模型的不同,在減少工作量的同時可能會更多。

我知道在我的本科生中,我們用Java寫了磁盤掃描算法;這是所有的Java與幾個類和接口。它並沒有真正掃描磁盤,但做了一份足夠體面的工作,我們可以測量,測試並調整算法,以查看它是如何改變的。所以我提出了一些更簡單的方法:如果你只是在內存算法之後,也許你可以編寫一個小的可測試的,可調整的應用程序,它可以讓你直接跳到你想做的事情,而不用擔心「那個其他的操作系統東西「,否則你不得不寫。

另外,玩現有的(UNIX/Linux)操作系統可能比從頭開始寫新東西的努力更少。

0

研究Linux以及Minix的優點,如果你使用現成的bootloader,我會在GRUB上使用LILO(當然,這些只是個人偏好)。