[問題] 如何撰寫一個作業系統
其實想問的問題有點多~~也有點雜~~比較不像是要問程式問題~~而是有點像是
作業系統或是計算機組織與結構的觀念~~所以起這個標題有點怪怪的~~
不過或許這個標題比較適合我以下想問的問題
常聽過人家講C語言很強大~~也可以拿來撰寫作業系統~~但是不知道要怎麼辦到
一般在書本上學到的~~就是透過C所提供的library~~達到我們一般常見的目的~~
或許算算數學式子~~或是可以寫網路程式建立一個Socket~~~library都有提供函式
可是我想到的是比較底層的問題~~它是如何與硬體做到溝通的~~
以下是我的認知與理解(有錯請版上大大指正)
我們在擁有一個作業系統(平台)後~~在此平台放入一個程式編譯器~~
所有叫用到的library牽涉到硬體的 ~~ 例如:getMACAddress() <--隨便打個比方
就可以讓我們輕鬆的得到硬體資訊或操縱這些硬體等功能~~~這個library能夠做到
也是因為該作業系統(平台)~~有提供這樣的API~~作業系統的核心(kernel)~~
掌管了所有可用的資源~~並且開了窗口~~讓程式設計師可以撰寫程式~~運用資源
當我下printf()或scanf()~~作業系統發起系統呼叫(system call)~~
讓我可以將鍵盤打的字讀入~~或是將一些字印在螢幕上~~ 我的問題是
當我現在連作業系統都沒有~~而我就是要撰寫一個作業系統時~~
我要如何access到硬體~~例如取得網卡的MAC address~~或是在螢幕上的某一個pixel秀出
特定的顏色~~如此我們才可以做出漂亮的視窗作業系統~~
這些操作是否要以組合語言撰寫~~而且硬體與硬體之間是否有一個固定的spec
硬體商提供的driver到底定義了哪些東西~~這些東西是否有個全球標準
在從無到有的過程中~~C要怎麼將所有的東西兜起來~~製造出一個作業系統~~
讓螢幕可以顯示~~滑鼠可以移動~~喇叭可以出聲音~~而且還可以讓更上層的
程式設計師使用你所提供的API~~再寫出一些應用程式
抱歉~~好像問的有點紊亂~~先感謝解答的版友 thx in advance
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.219.120
推
01/30 02:32, , 1F
01/30 02:32, 1F
推
01/30 02:35, , 2F
01/30 02:35, 2F
→
01/30 02:37, , 3F
01/30 02:37, 3F
推
01/30 02:48, , 4F
01/30 02:48, 4F
→
01/30 02:48, , 5F
01/30 02:48, 5F
推
01/30 09:13, , 6F
01/30 09:13, 6F
→
01/30 09:14, , 7F
01/30 09:14, 7F
推
01/30 09:55, , 8F
01/30 09:55, 8F
→
01/30 09:55, , 9F
01/30 09:55, 9F
推
01/30 09:56, , 10F
01/30 09:56, 10F
推
01/30 10:14, , 11F
01/30 10:14, 11F
→
01/30 10:14, , 12F
01/30 10:14, 12F
→
01/30 10:15, , 13F
01/30 10:15, 13F
推
01/30 13:51, , 14F
01/30 13:51, 14F
推
01/30 14:11, , 15F
01/30 14:11, 15F
推
01/30 14:41, , 16F
01/30 14:41, 16F
推
01/30 14:55, , 17F
01/30 14:55, 17F
推
01/30 15:54, , 18F
01/30 15:54, 18F
→
01/30 16:30, , 19F
01/30 16:30, 19F
推
01/30 18:56, , 20F
01/30 18:56, 20F
推
01/30 20:59, , 21F
01/30 20:59, 21F
→
01/30 21:00, , 22F
01/30 21:00, 22F
→
01/30 21:01, , 23F
01/30 21:01, 23F
推
01/30 22:23, , 24F
01/30 22:23, 24F
→
01/30 22:42, , 25F
01/30 22:42, 25F