在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么大家都喜歡用C語言編寫操作系統

jf_78858299 ? 來源:碼農的荒島求生 ? 作者:碼農的荒島求生 ? 2023-02-24 13:53 ? 次閱讀

首先不得不說的是C語言真的非常簡單,看看K&R經典的"The C Programming Language",薄薄的一本書就把C語言講完了。

再去看看JavaC#等,要是介紹這些語言的書不能厚到去墊顯示器你都不好意思去讀。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11038

    瀏覽量

    216038
  • JAVA
    +關注

    關注

    20

    文章

    2984

    瀏覽量

    106929
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140453
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux操作系統C語言編程入門

    Linux操作系統C語言編程入門
    發表于 08-26 20:43

    設計者更喜歡什么操作系統

      如果你正在為手機操作系統iOS開發應用程序,XCode 4是一個更好的解決方案。它原生支持所有app在運行時都要用到的Objective-C 和Cocoa庫。蘋果公司為這些語言提供了特有的文檔,所以
    發表于 05-03 11:48

    為什么大家喜歡圖標?

    為什么大家喜歡圖標?設計圖標要遵循哪些原則?
    發表于 07-12 08:33

    為什么每一個程序員需要學習C語言呢?

    語言(像C++,JAVA),C語言是個低級語言。從總體上來說,低級的編程語言可以讓你更好的了解計
    發表于 07-20 06:07

    操作系統下軟件看門狗

    關于軟件看門狗:在裸機程序下軟件看門狗,大家都會在必要的地方喂狗保證看門狗有效;但在微操作系統下,程序的流向都是在操作系統下調度的,這種情況下怎么估算喂狗最大時間,位置,也就是在操作系統
    發表于 09-05 14:37

    C語言實時操作系統源代碼

    C語言實時操作系統源代碼
    發表于 06-05 12:36 ?63次下載

    Linux操作系統-C語言編程入門-pdf

    Linux操作系統-C語言編程入門介紹在LINUX 下進行C 語言編程所需要的基礎知識.在這篇文章當中,我們將會學到以下內容:⣷
    發表于 12-08 09:55 ?193次下載
    Linux<b class='flag-5'>操作系統</b>-<b class='flag-5'>C</b><b class='flag-5'>語言</b>編程入門-pdf

    基于Linux操作系統C語言編程入門

    基于Linux操作系統C語言編程入門
    發表于 10-27 15:36 ?11次下載
    基于Linux<b class='flag-5'>操作系統</b>下<b class='flag-5'>C</b><b class='flag-5'>語言</b>編程入門

    Linux操作系統C語言編程入門.pdf

    Linux操作系統C語言編程入門
    發表于 05-17 10:08 ?98次下載

    C語言厲害在什么地方

    C語言可以直接操縱底層的硬件,可以編寫硬件驅動程序和操作系統
    的頭像 發表于 03-22 17:04 ?1851次閱讀

    怎樣學習C語言

      C語言是目前世界上流行、使用非常廣泛的高級程序設計語言C語言操作系統
    發表于 04-19 09:36 ?7次下載

    為什么,操作系統內核都是C語言寫的?資料下載

    電子發燒友網為你提供為什么,操作系統內核都是C語言寫的?資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可
    發表于 04-28 08:41 ?4次下載
    為什么,<b class='flag-5'>操作系統</b>內核都是<b class='flag-5'>用</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>寫的?資料下載

    基于STM32從零寫操作系統系列---使用C語言

    如有不詳細的描述、錯誤或疑問,歡迎留言!!!基于STM32從零寫操作系統系列---前言與目錄目的??C語言,相對于匯編有更好的可讀性,便于維護等優點。下面實驗將使用C
    發表于 01-13 14:05 ?31次下載
    基于STM32從零寫<b class='flag-5'>操作系統</b>系列---使用<b class='flag-5'>C</b><b class='flag-5'>語言</b>

    C不再是一種編程語言

    比喻雖尖銳,依據卻不無道理。幾乎任何程序要做任何有用或有趣的事情,它都必須在操作系統上運行。這意味著它必須與那個操作系統交互——而很多操作系統都是
    的頭像 發表于 05-05 14:43 ?854次閱讀

    C語言基礎-為什么要使用C

    當今最流行的 Linux 操作系統和 RDBMS(Relational Database Management System:關系數據庫管理系統) MySQL 都是使用 C 語言
    發表于 03-25 11:20 ?1582次閱讀
    主站蜘蛛池模板: 日本人xxxxxxxxx69 | 狠狠ri| 亚洲成人免费观看 | 免费中国jlzzjlzz在线播放 | 九九99视频在线观看视频观看 | 天天摸天天操免费播放小视频 | 视频在线欧美 | 天天爽夜夜爽夜夜爽精品视频 | 在线播放一区二区精品产 | 天天精品在线 | 日本a级片在线观看 | 高清精品女厕在线观看 | 七月丁香八月婷婷综合激情 | 狠狠干.com| 亚洲人成在线精品 | 免费观看欧美成人1314色 | 久久综合五月开心婷婷深深爱 | 国产欧美精品午夜在线播放 | 亚洲卡1卡2卡新区网站 | 欧美午夜片 | 精品国产一区二区三区成人 | 1024在线观看你懂的 | 啪啪91视频 | 亚州 色 图 综合 | 1024你懂的在线播放欧日韩 | 国产成人乱码一区二区三区 | 91大神大战丝袜美女在线观看 | 深夜桃色影院 | 波多野结衣久久精品 | 天天干天天谢 | 天天爱天天做天天爽 | 午夜福免费福利在线观看 | 俄罗斯小屁孩cao大人免费 | 97人人做人人爱 | 黄色大片视频网站 | 狼人综合色 | 日本全黄视频 | 国产精品伦理一区二区三区 | 操女人网址 | 人人干免费 | 欧美精品福利 |