精華區beta C_and_CPP 關於我們 聯絡資訊
其實想問的問題有點多~~也有點雜~~比較不像是要問程式問題~~而是有點像是 作業系統或是計算機組織與結構的觀念~~所以起這個標題有點怪怪的~~ 不過或許這個標題比較適合我以下想問的問題 常聽過人家講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
flashliqu:一切都是先從 bootloader 控制權拿到開始 01/30 02:32
flashliqu:driver 其實就是 Memory Map IO trigger HW. 01/30 02:35
flashliqu:簡單的說 OS 就是 bootload 之後跳到的 entry function 01/30 02:37
COLDTURNIP:在 LinuxDev 板上推的兩本 kernel 入門書也就差不多在 01/30 02:48
COLDTURNIP:解釋你的疑問。 01/30 02:48
Cloud:會寫程式嗎?自己動手寫就知道了.... 01/30 09:13
Cloud:http://tinyurl.com/ydjb4q7 教你寫簡單的OS 01/30 09:14
QQ29:我覺得你問的也是我想問的 我怎麼可以呼叫一些api就可畫圖 01/30 09:55
QQ29:好厲害喔 01/30 09:55
twotwoone:這些都有書,真有興趣花點小朋友跟時間去買來看就好了 01/30 09:56
suhorng:之前看過一本 "自己動手寫作業系統" (操作系統) 01/30 10:14
suhorng:我是覺得那本主要以實做來帶領還不錯,不過可能有些地方 01/30 10:14
suhorng:寫得不是很好XD 01/30 10:15
Dannvix:回樓上,那可以看看「打造個人作業系統」 01/30 13:51
alongalone:你問的這些問題,是否有相對應的背景去理解你找到的答案 01/30 14:11
final01:砍掉重練? 01/30 14:41
loveme00835:好像很好玩~ 01/30 15:54
kazuto:有些東西可以參考貝殼書,其實也有說到相關的東西 01/30 16:30
x000032001:~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ 01/30 18:56
mimi0213:上面那個是我自己玩的東西,你看完應該大概知道怎麼寫一 01/30 21:00
mimi0213:個os 01/30 21:01
vizshala:作業系統其實要和硬體溝通了 非相關背景應該很難入門 01/30 22:23
saxontai:http://share.solrex.org/WriteOS/ 01/30 22:42