[問題] 如何撰寫一個作業系統

看板C_and_CPP作者 (吳先生)時間14年前 (2010/01/30 02:22), 編輯推噓15(15010)
留言25則, 16人參與, 最新討論串1/1
其實想問的問題有點多~~也有點雜~~比較不像是要問程式問題~~而是有點像是 作業系統或是計算機組織與結構的觀念~~所以起這個標題有點怪怪的~~ 不過或許這個標題比較適合我以下想問的問題 常聽過人家講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
一切都是先從 bootloader 控制權拿到開始
01/30 02:32, 1F

01/30 02:35, , 2F
driver 其實就是 Memory Map IO trigger HW.
01/30 02:35, 2F

01/30 02:37, , 3F
簡單的說 OS 就是 bootload 之後跳到的 entry function
01/30 02:37, 3F

01/30 02:48, , 4F
在 LinuxDev 板上推的兩本 kernel 入門書也就差不多在
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
http://tinyurl.com/ydjb4q7 教你寫簡單的OS
01/30 09:14, 7F

01/30 09:55, , 8F
我覺得你問的也是我想問的 我怎麼可以呼叫一些api就可畫圖
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
寫得不是很好XD
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 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 21:00, , 22F
上面那個是我自己玩的東西,你看完應該大概知道怎麼寫一
01/30 21:00, 22F

01/30 21:01, , 23F
個os
01/30 21:01, 23F

01/30 22:23, , 24F
作業系統其實要和硬體溝通了 非相關背景應該很難入門
01/30 22:23, 24F

01/30 22:42, , 25F
文章代碼(AID): #1BOoTDez (C_and_CPP)