C語言編寫作業系統有什麼好處
首先不得不說的是C語言真的非常簡單,看看K&R經典的"The C Programming Language",薄薄的一本書就把C語言講完了。
再去看看Java、C#等,要是介紹這些語言的書不能厚到去墊顯示器你都不好意思去讀。
由於C語言很簡單,被移植到了許多CPU架構上,甚至許多CPU設計者第一件事就是把C語言移植過來。假設你自己打造了一款CPU,有自己獨特的機器指令,現在CPU有了,接下來的問題是你該怎麼編寫程式讓你的CPU開始工作呢?
我們知道,CPU只能執行機器指令,程式設計師都使用高階語言來編寫程式,因此必須將高階語言翻譯成機器指令,接下來的問題是選擇什麼語言呢?使用極為複雜的Java/C#還是簡單的C呢?答案不言而喻。
因此你接下來需要的就是為你設計的CPU打造一款C編譯器,之前都是透過魔改gcc來完成,現在你也可以使用LLVM(注意,這絕不是一件想象中那麼簡單的事情)。
看到了吧,處理器設計者想到的第一個用來驅動CPU的高階語言就是C,那麼針對該CPU編寫的作業系統該用什麼語言還用得著說嗎?
為什麼說C語言最獨立呢?想一想Java、Python、C#等是不是需要一大坨執行時系統(runtime system),包括直譯器、執行緒模型、垃圾回收等等。
而C語言就簡單太多了,C語言不需要依賴任何執行時系統(不考慮標準庫),它不需要記憶體管理系統、不需要直譯器、不需要執行緒模式等等,這就意味著你編寫的C語言程式可以直接在硬體上跑起來。
讓我們來看一下在整個計算機系統中作業系統位於哪裡:
可以看到作業系統位於應用程式與硬體中間,這就意味著作業系統必須對上層遮蔽硬體,這同時也意味著編寫作業系統時必須能直接控制硬體,尤其是記憶體管理,而C語言就是為此而生的。
C語言本身不像Java等自帶記憶體管理系統,在C語言中這一工作完全由程式設計師控制,這種控制權在開發作業系統時是極為重要的,再加上指標這一大殺器,程式設計師可以方便的直接操作記憶體,像建立頁表(page table)、DMA控制器、Memory mapped IO等等。
有的同學可能對指標(pointer)心生畏懼,的確,對於大部分工作在應用層的程式設計師來說沒有指標我們一樣可以編寫出有用的程式,像Java程式、Python程式等等,這些語言中沒有指標,我們也不需要直接面對硬體,而這恰恰是因為作業系統幫我們遮蔽掉了,而在作業系統這一層我們無可逃避,C語言可以乾淨利落的解決問題。
C語言中沒有複雜的資料結構,像各種容器、hash表、樹等,程式設計師必須自己來實現這些,這也是很多同學覺得不方便的地方,然而這樣設計的初衷是為了讓程式設計師能確切的知道C程式碼是怎樣影響硬體的,C語言也是最接近機器指令的高階語言,C語言是非常透明,而這一點在其它高階語言中幾乎不可能,因為C語言的設計哲學之一就是:
Trust the programmer
使用C語言的程式設計師應該清楚的知道自己在幹啥,這非常適合編寫作業系統這種貼近硬體涉及大量底層細節需要精密微調的程式,當然缺點就是剛才所說的沒有內建的一些常用資料結構。
本篇介紹了為什麼大部分作業系統都使用C語言來編寫,也介紹了C語言的許多優點,但值得注意的是每種語言都有自己的使用場景,C語言也不例外,C語言非常適合系統程式設計等偏向底層的方向,但在應用層你的選項則有很多。希望這篇對大家理解C語言與作業系統有所幫助。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2904971/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 手機寫作業系統之 使用C語言編寫核心作業系統C語言
- 企業用ERP系統有什麼好處
- 企業使用ERP系統有什麼好處?
- 資料分析用python語言有什麼好處?Python
- 使用CRM系統有什麼好處?
- Python對比其他語言有什麼好處?Python就業怎麼樣?Python就業
- 使用CRM系統對企業各部門有什麼好處?
- c語言作業C語言
- CRM系統可以做什麼?企業擁有CRM的好處是什麼?
- 用python語言寫程式有什麼好用的編輯器?Python
- 學習Python有什麼好處?Python語言為什麼這麼受歡迎?Python
- 財務人員有必要學習Python語言嗎?有什麼好處?Python
- 作業系統是什麼?Linux是什麼作業系統?作業系統Linux
- 編譯warp,d語言寫的c/c++前處理器.編譯C++
- C語言作業2C語言
- C語言作業1。C語言
- 中小型企業用進銷存系統有什麼好處?
- 用ERP系統做資料管理對企業有什麼好處?
- 資料分析用python語言有什麼好處?Python入門教程Python
- 作業系統實驗:銀行家演算法(C語言)作業系統演算法C語言
- 【作業系統】銀行家演算法實現(C語言)作業系統演算法C語言
- C語言 編寫線段樹C語言
- 獨立商城系統B2C開發多少錢?有什麼好處
- 企業上了MES系統後,能有什麼好處?
- Python和C語言有什麼區別?PythonC語言
- C語言實驗作業C語言
- 為什麼中國開發不出流行的作業系統和程式語言作業系統
- Linux系統有什麼優點?linux作業系統學習Linux作業系統
- 電商使用CRM系統有什麼好處,如何選擇
- 使用Zoho Projects的檔案管理系統有什麼好處?Project
- Unix和Linux作業系統有什麼區別Linux作業系統
- 【轉載】C 語言有什麼奇技淫巧
- Python和C語言有什麼區別?分析!PythonC語言
- 作業系統:程式狀態轉換模擬,C語言實現作業系統C語言
- 什麼是lambda?有什麼好處
- 線上CRM系統對企業的好處是什麼
- 什麼是Go語言?Go語言有什麼特點?Go
- 服裝行業做小程式有什麼好處?行業