ety
|
分享:
▲
▼
硬碟在 seeking 時, 該怎存資料, 這些低階的硬體動作, 哪邊離空位最近的取捨, 有點類似電梯演算法, 那不就是需要資料庫的理論基礎了? 記憶體的 Page table 是不是也是跟資料庫的概念有點類似? 剛那是硬體上的管理, 至於資料上的管理, 我想, 若沒有資料庫的基礎, 你的OS沒有良好的檔案管理機制, 我想, 也是很令User困擾的。
大至上, 通常跟內存資料有關的軟體, 哪個不需要資料庫的概念呢? 作業系統有資料庫的概念, 設計出來的就像 Windows/FreeBSD/OS X 一樣, 有良好的檔案管理員供User用。再舉個例子, 一般 Game 的紀錄檔, 也是用資料庫的概念來管理, 好讓你能輕鬆存取記錄。大部份的軟體, 只要跟紀錄資料有關, 通常是需要一點資料庫的概念, 不過也並非絕對啦, 像 BIOS, 就是一個好的例子, 它沒有資料庫的概念, 因為不需要, 它只要控制硬體就好了, 資料管理並不是它的主要目的。
至於你說"作業系統主要的訴求是使用者及硬體間幫助溝通的角色", 這是沒錯, 主要的目的就是要幫助User不用了解硬體實際是如何動作的而也能達到管理硬體的目標。若你是以目前的作業作統的標準來看, 只是管理硬體, 而沒有管理資料的OS, 不太算及格 ...
當然啦, 這是我個人的看法, 因為我以前還是學生時, 我有一個同學實作了一台小小的電腦(計算機結構課), 用 CPLD 簡單的完成小部份, 另一位用 Assembly 去幫那小電腦作 SIC 的實現(系統程式課), 到這時, 簡單的 BIOS 也算小完成了。而我則是將兩個同學的作品結合起來並加強到有OS地步, 多了滑鼠, 鍵盤, 還有螢幕輸出, 簡單的輸入資料跟儲存資料。我們三人最後都認為, 學過資料庫, 的確可以解決一些困擾, 當然, 也可能還是有別的方法可以實現的, 所以, 你們也可以不用太在意我的發言。
給大家作個參考而己, 不是強迫大家接納我的思想, 請多多包涵, 畢竟, 我也不是專家。
~.~
[ 此文章被ety在2006-05-09 11:11重新編輯 ]
此文章被評分,最近評分記錄財富:30 (by codeboy) | 理由: 說的不錯喔~^^ | |
|
|
|
|
x1
[7 樓]
From:台灣和信超媒體
| Posted:2006-05-09 00:10 |
|
|
ichunlai
|
分享:
▲
▼
下面是引用ety於2006-05-9 00:10發表的 : 硬碟在 seeking 時, 該怎存資料, 這些低階的硬體動作, 哪邊離空位最近的取捨, 有點類似電梯演算法, 那不就是需要資料庫的理論基礎了? 記憶體的 Page table 是不是也是跟資料庫的概念有點類似? 剛那是硬體上的管理, 至於資料上的管理, 我想, 若沒有資料庫的基礎, 你的OS沒有良好的檔案管理機制, 我想, 也是很令User困擾的。
大至上, 通常跟內存資料有關的軟體, 哪個不需要資料庫的概念呢? 作業系統有資料庫的概念, 設計出來的就像 Windows/FreeBSD/OS X 一樣, 有良好的檔案管理員供User用。再舉個例子, 一般 Game 的紀錄檔, 也是用資料庫的概念來管理, 好讓你能輕鬆存取記錄。大部份的軟體, 只要跟紀錄資料有關, 通常是需要一點資料庫的概念, 不過也並非絕對啦, 像 BIOS, 就是一個好的例子, 它沒有資料庫的概念, 因為不需要, 它只要控制硬體就好了, 資料管理並不是它的主要目的。
....... 處理以及管理資料,不一定得用到資料庫的概念... 不是所有和管理資料有關的都得牽扯到資料庫... 簡單的資料結構就可以處理相當多的問題了... 要寫一套作業系統,建議可以先去找uCOS的書... uCOS是一個RTOS...至少程式碼比較少比較容易trace... 或是去看Operating system:design and implementation有介紹linux前身minix的寫法 博碩也有一本書是寫linux核心研究...
此文章被評分,最近評分記錄財富:30 (by codeboy) | 理由: 您說的也很有道理..^^ | |
|
|
|
|
x0
[8 樓]
From:台灣中華電信
| Posted:2006-05-09 00:28 |
|
|
ety
|
分享:
▲
是的, 資料結構是必須的。 對資料結構有基本的認識才能進一步去設計演算法。 資料庫的的技巧就是演算法, 裡面用到的 Sort 啦, Search 啦, 都必需要有資料結構的認識。如果不知道資料的結構, 那要設計管理用的演算法, 談何容易!? 都不知道是要 Sort 什麼資料跟 Search 什麼資料呢! ~"~ 另外, 我之前所說的記憶體的 Page table 不就是資料結構裡的一種?
至於你所說的, "簡單的資料結構就可以處理相當多的問題了", 這應該算是在管理資料方面。 整體而言, 我還是認為, 硬體上的了解比軟體上的了解來得重要。就像我之前問的, "在你決定要寫出一個OS程式時,你決定好了你的平台了嗎?", 不了解平台, 資料結構的實現也很難。
老實說, 真的要這樣比下去的話, 那... 我會說, 連計算機概論都很重要... 資訊科系的每一科都很重要... 都有可能在設計 OS 時應用得到 ~.~ 如果還不夠, 那就再比下去, 數學最重要, 不用學資料結構, 因為全都是零跟一, 然後再來就有人說, 那些都不重要, 英文最重要, 因為程式是用英文寫的 ~ my god ~ 沒完沒了了 ~ 總之, 請不要針對我, 畢竟我真的不是專家, 而且每個人的邏輯也不太一樣, 就提出"您"自個兒的看法就好了, 不需要提到我啦。 >"<
不過呢, 這都不是樓主問的, 都是突然大家開始對我說的看法不認同所衍生下來的討論, 我有說啦 ~ 我沒強迫大家認同我的看法, 畢竟我不是專家 ~.~ 樓主真正想問的是, OS 是用哪種程式語言實作出來的, 那, 就那些答案囉, 有 C, 有 Assembly, 也有人提到 Basic ... 這我不確定... = =" 總之, 答案有了, 此一話題就此打住了吧, 再討論下去, 就變很複雜了。
想看看別人是如何設計OS的, 那麼, 只要對 C 語言的程式碼以及電腦的硬體架構有了基礎, ichunlai 的建議是真的很好的, 他所說的書雖然我沒看過, 但我可以確定, 先看看別人是如何設計核心的, 真的是一個很好的建議。 不過我敢跟你保證, 那也不是一般人看得下去的, 大學生都不見得有那能耐, 難度也不是說很低, 如果有不懂的, 可以找 ichunlai 討論, 他應該算是高手。 千萬別來問我, 我只是曾經有做過主機板的 BIOS 相關設計的助理, 從我的工作環境中發表我的所知, 我沒有看過 Linux 的原始碼, 所以別問我那類的問題。 ^^"
至於想自己開發一個OS的, 那麼, 我想, 你可以挑一部份你的專長來作, 其它部份找些同好來完成。說實在的, 那不是一件小 project, 一個人完成, 是很累的。而人多, idea 也多, 或許也比你一個人設計的來得好也說不定。
共勉之 ~ ^^
[ 此文章被ety在2006-05-09 11:06重新編輯 ]
|
|
x0
[9 樓]
From:台灣和信超媒體
| Posted:2006-05-09 09:33 |
|
|
|