成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么用C語言編寫操作系統?

開發 前端
使用C語言的程序員應該清楚的知道自己在干啥,這非常適合編寫操作系統這種貼近硬件涉及大量底層細節需要精密微調的程序,當然缺點就是剛才所說的沒有內置的一些常用數據結構。

大家好,我是島主小風哥。

你有沒有想過,為什么大部分操作系統都使用C語言來編寫而不是其它語言呢?這篇文章給你答案。

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語言最獨立

為什么說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語言非常適合系統編程等偏向底層的方向,但在應用層你的選項則有很多。

責任編輯:武曉燕 來源: 碼農的荒島求生
相關推薦

2022-06-26 00:24:57

C語言操作系統語言

2020-06-08 10:21:56

操作系統C語言Unix

2021-06-22 09:09:34

V語言Vinix操作系統

2012-09-21 14:35:01

2009-12-14 18:27:21

Linux操作系統

2010-01-05 17:16:51

2010-01-06 15:41:07

Linux操作系統

2012-06-08 09:16:16

操作系統

2022-11-01 11:22:38

2022-11-02 07:23:06

2021-12-30 19:36:48

GoDubboJava

2022-01-07 14:05:33

DubboGoJava

2023-04-13 08:09:35

操作系統虛擬地址內存

2022-07-29 08:25:02

volatileC語言原子

2020-05-18 09:07:30

編程語言開發操作系統

2023-09-21 08:46:44

操作系統windows 10內存

2020-02-14 15:22:58

編寫基礎架構Python

2020-02-14 13:13:04

Go機器學習Python

2022-03-16 09:25:22

操作系統編程語言中文

2012-04-06 10:35:30

SpringJavaHibernate
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲日韩中文字幕一区 | 国产精品18毛片一区二区 | 成人在线观看免费爱爱 | 国产福利久久 | 精品国产免费人成在线观看 | 你懂的在线视频播放 | 欧美日韩视频在线第一区 | 中文字幕男人的天堂 | 久久久精彩视频 | 国产黄色大片在线观看 | 91色视频在线观看 | 久久国产精品一区二区三区 | 日韩色视频 | 一区二区三区四区电影 | 亚洲国产一区二区视频 | 成人a免费 | 视频一区二区中文字幕日韩 | 一级片在线观看视频 | 91精品国产91久久久久久最新 | www.亚洲一区二区三区 | 精品国产18久久久久久二百 | 久久久久久久一区二区三区 | 三级视频在线观看电影 | 国产亚洲一区在线 | 久久久免费精品 | 欧美精品国产一区二区 | 国产成人在线视频 | 在线a视频网站 | 色婷婷国产精品综合在线观看 | 亚洲在线一区 | 欧美成人一级 | 亚洲欧美成人影院 | 在线免费黄色小视频 | 久久久久久网站 | av网站免费观看 | 亚洲一区不卡在线 | 在线观看成年视频 | 日韩免费高清视频 | 毛片网在线观看 | 久久不卡 | 一区二区三区视频在线免费观看 |