色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

解析C語言與操作系統

jf_78858299 ? 來源:碼農的荒島求生 ? 作者:碼農的荒島求生 ? 2023-02-15 11:38 ? 次閱讀

大家有沒有想過,為什么大部分操作系統都使用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語言非常適合系統編程等偏向底層的方向,但在應用層你的選擇則有很多。

希望這篇文章對大家理解C語言與操作系統有所幫助。

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

    關注

    21

    文章

    4987

    瀏覽量

    140120
  • JAVA
    +關注

    關注

    19

    文章

    2971

    瀏覽量

    104855
  • C語言
    +關注

    關注

    180

    文章

    7608

    瀏覽量

    137119
收藏 人收藏

    評論

    相關推薦

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

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

    書籍教程:linux操作系統c語言編程入門

    本資料是linux操作系統c語言編程入門教材。目 錄第一章 基礎知識 ……………………………………………………………………………4第二章 進程介紹
    發表于 07-26 22:34

    深入解析WINDOWS操作系統(第4版)

    本帖最后由 lee_st 于 2018-3-4 01:08 編輯 深入解析WINDOWS操作系統(第4版)
    發表于 03-02 23:45

    沒有操作系統真的不能使用LwIP套接字和域名解析嗎?

    裸機移植了LwIP協議棧,整體感覺不錯但是在使用套接字(Socket)功能和域名解析(lwip_gethostbyname)時發現編譯通不過,說是要啟用操作系統。如果不用操作系統就只能用RAW
    發表于 08-22 22:25

    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 ?96次下載

    米爾科技嵌入式實時操作系統介紹

    《嵌入式實時操作系統μC/OS-Ⅱ經典實例:基于STM32處理器》緊緊圍繞“μC/OS-Ⅱ系統設計”這一主題,立足實踐解析了嵌入式實時
    的頭像 發表于 11-25 09:02 ?2344次閱讀
    米爾科技嵌入式實時<b class='flag-5'>操作系統</b>介紹

    解析操作系統的概念、結構和機制

    全面。解析操作系統的概念、結構和機制。
    發表于 03-26 14:19 ?8次下載

    STM32操作系統系列使用C語言的教程

    C語言,相對于匯編有更好的可讀性,便于維護等優點。下面實驗將使用C語言實現點亮LED燈。C語言
    的頭像 發表于 08-10 23:26 ?3446次閱讀

    課堂筆記之嵌入式Linux操作系統

    :嵌入式操作系統、開發工具、系統應用開發(&GUI)、系統移植、驅動、內核。4、所具備的知識體系:C語言、單片機、嵌入式
    發表于 11-02 09:51 ?15次下載
    課堂筆記之嵌入式Linux<b class='flag-5'>操作系統</b>

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

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

    為什么不用Go開發操作系統

    操作系統 (OS) 是計算機系統的心臟和靈魂,它管理著計算機的硬件和軟件資源,并為用戶提供與計算機交互的方式。傳統上,C 和 Assembly 等語言因其低開銷和 “接近機器碼” 的特
    的頭像 發表于 05-26 15:09 ?577次閱讀
    為什么不用Go開發<b class='flag-5'>操作系統</b>?

    深度解析全球操作系統格局

    操作系統是負責協調、管理和控制計算機硬件與軟件資源的程序,是整個計算機的核心系統軟件。 按照操作系統面向的設備類型,通用操作系統主要包括桌面操作系統
    的頭像 發表于 01-18 15:00 ?1239次閱讀
    深度<b class='flag-5'>解析</b>全球<b class='flag-5'>操作系統</b>格局
    主站蜘蛛池模板: 欧美黄色第一页| 中文字幕亚洲无线码一区| 被黑人掹躁10次高潮| 色婷婷国产精品视频一区二区| 豆奶视频在线高清观看| 亚洲AV蜜桃永久无码精品红樱桃 | 免费精品一区二区三区在线观看| 99在线视频免费观看视频| 色姊姊真舒服| 久久AAAA片一区二区| 抽插性奴中出乳精内射| 亚洲综合日韩在线2019| 强上轮流内射高NP男男| 国产在线视频一区二区不卡| 99精品国产福利在线观看| 天天拍拍国产在线视频| 老师的脚奴| 国产欧美国日产在线播放| 97国产精品视频在线观看| 午夜性伦鲁啊鲁免费视频| 哪里能看毛片| 国产在线播放91| 被黑人掹躁10次高潮| 伊人热人久久中文字幕| 色欲午夜无码久久久久久| 久久亚洲精品中文字幕60分钟| 嘟嘟嘟在线视频免费观看高清中文| 亚洲色偷偷偷网站色偷一区人人藻 | 国产69精品久久久久人妻刘玥| 亚洲午夜AV久久久精品影院色戒| 青青草国产精品久久| 久久国产香蕉| 国产乱色伦影片在线观看| 99re8久久热在线视频| 亚洲精品无码不卡在线播放he| 青青草 久久久| 毛片大片免费看| 经典三级四虎在线观看| 国产精品人妻久久无码不卡| xiah俊秀| 91麻豆精品国产一级|