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

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

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

3天內不再提示

為什么大部分操作系統都使用C語言來編寫

strongerHuang ? 來源:碼農的荒島求生 ? 作者:小風哥 ? 2022-07-14 09:04 ? 次閱讀

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

C語言在處理器界很受歡迎

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

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

由于C語言很簡單,被移植到了許多CPU架構上,甚至許多CPU設計者第一件事就是把C語言移植過來。

假設你自己打造了一款CPU,有自己獨特的機器指令,現在CPU有了,接下來的問題是你該怎么編寫程序讓你的CPU開始工作呢?關于CPU的工作原理你可以參考《你管這破玩意叫CPU?》 我們知道,CPU只能執行機器指令,程序員都使用高級語言來編寫程序,因此必須將高級語言翻譯成機器指令,接下來的問題是選擇什么語言呢?使用極為復雜的Java/C#還是簡單的C呢?答案不言而喻。

因此你接下來需要的就是為你設計的CPU打造一款C編譯器,之前都是通過魔改gcc來完成,現在你也可以使用LLVM(注意,這絕不是一件想象中那么簡單的事情)。

看到了吧,處理器設計者想到的第一個用來驅動CPU的高級語言就是C,那么針對該CPU編寫的操作系統該用什么語言還用得著說嗎?

C語言最獨立

為什么說C語言最獨立呢? 想一想Java、Python、C#等是不是需要一大坨運行時系統(runtime system),包括解釋器、線程模型、垃圾回收等等。

pYYBAGLPbA6AGPGvAACnlKTpgsQ111.jpg




而C語言就簡單太多了,C語言不需要依賴任何運行時系統(不考慮標準庫),它不需要內存管理系統、不需要解釋器、不需要線程模式等等,這就意味著你編寫的C語言程序可以直接在硬件上跑起來。

直接操作硬件的能力

讓我們來看一下在整個計算機系統中操作系統位于哪里:

pYYBAGLPbC2AKINFAAA_pF0AcbU936.jpg




可以看到操作系統位于應用程序與硬件中間,這就意味著操作系統必須對上層屏蔽硬件,這同時也意味著編寫操作系統時必須能直接控制硬件,尤其是內存管理,而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語言非常適合系統編程等偏向底層的方向,但在應用層你的選項則有很多。


審核編輯:劉清

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

    關注

    68

    文章

    19404

    瀏覽量

    230868
  • 操作系統
    +關注

    關注

    37

    文章

    6889

    瀏覽量

    123626
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137473

原文標題:為什么用C語言編寫操作系統?

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    淺談Linux操作系統的三大部分

    Linux操作系統是一種基于Unix的操作系統,它是由Linus Torvalds在1991年開發的。它是一個自由和開放源代碼的操作系統,因此任何人都可以自由地使用、修改和發布它。Linux
    發表于 07-23 12:59 ?3030次閱讀
    淺談Linux<b class='flag-5'>操作系統</b>的三<b class='flag-5'>大部分</b>

    μC/OS-II操作系統在各種處理器上的移植

    的工作就是操作系統的移植。本文選取使用較多的51單片機、LPC2210、NiosII三種處理器進行介紹。 1 μC/OS-II操作系統移植條件μC/OS-II
    發表于 08-14 09:46

    C語言相對于其他語言有哪些特點

    操作系統(包括內核、驅動等)是使用C語言和匯編編寫的,Windows,UNIX,Linux都是這樣的。絕大部分
    發表于 10-27 08:25

    開源操作系統大全

    ,重啟后不會影響用戶數據;KnightOS 內核具有獨立特性,它采用類 Unix 的環 境,使用 Z80 的匯編語言編寫,開發者可以用它編寫自己的
    發表于 10-27 15:13

    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

    基于WRK的操作系統課程設計

    WRK的全稱是Windows Research Kernel ,它是微軟為高校操作系統課程提供的可修改和跟蹤的操作系統教學平臺。它給出了 Windows 這個成功的商業操作系統的內核大部分
    發表于 04-17 23:34 ?37次下載

    TESTLICHENGlpc大部分歷程

    電子發燒友網站提供《TESTLICHENGlpc大部分歷程.rar》資料免費下載
    發表于 03-23 17:23 ?0次下載

    基于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語言編程能力?帶你提升C語言編程能力

      C語言: 1.Windows、Linux、Unix 等操作系統的內核90%以上都使C語言
    發表于 09-14 10:53 ?36次下載
    如何提高你的<b class='flag-5'>C</b><b class='flag-5'>語言</b>編程能力?帶你提升<b class='flag-5'>C</b><b class='flag-5'>語言</b>編程能力

    生活中為什么大部分采用交流電

    生活中為什么采用交流電,既然交流輸電損耗比直流多,而且除少數設備能直接使用交流電以外,大部分電子設備都使用直流電。那我們生活中大部分電為什么還是采用交流電呢?
    的頭像 發表于 11-16 10:44 ?1.8w次閱讀

    嵌入式底層開發為什么選擇C語言

    操作系統(包括內核、驅動等)是使用C語言和匯編編寫的,Windows,UNIX,Linux都是這樣的。絕大部分
    發表于 10-20 13:35 ?2次下載
    嵌入式底層開發為什么選擇<b class='flag-5'>C</b><b class='flag-5'>語言</b>

    如何利用C語言控制LED燈的實現

    實際工作中很少會使用到匯編去編寫嵌入式驅動,畢竟匯編太難,寫出來也不好理解,大部分情況下都使C語言
    的頭像 發表于 11-30 09:58 ?8210次閱讀

    大部分的干擾問題都來自電源和地

    大部分的干擾問題都來自電源和地,分享一個很好的PDF文檔,文末附文檔獲取方式。 ?
    的頭像 發表于 01-15 17:37 ?202次閱讀
    <b class='flag-5'>大部分</b>的干擾問題都來自電源和地
    主站蜘蛛池模板: 97人人看碰人免费公开视频 | 我的美女房东未删减版免费观看 | 欧美手机在线播放 | 国产精品嫩草影院在线观看免费 | 暖暖日本 在线 高清 | 日本二区三区欧美亚洲国 | 久久黄色免费网站 | 法国剧丝袜情版h级在线电影 | 亚洲 欧美 中文 日韩 另类 | 黄色a级免费网站 | 国产免费内射又粗又爽密桃视频 | 俄罗斯另类Z0Z0ZOZO | 99精品视频在线观看re | 久久全国免费久久青青小草 | 最近高清中文字幕无吗免费看 | 欧美xxxxx九色视频免费观看 | 手机免费毛片 | 囯产免费精品一品二区三区视频 | 老司机深夜福利ae 入口网站 | 成人免费视频网站www | 日本阿v片在线播放免费 | 116美女写真成人午夜视频 | 一本之道高清www在线观看 | 中文在线日韩亚洲制服 | 亚洲成人精品久久 | 美女脱衣服搞鸡 | 超碰在线视频地址 | 亚洲成人黄色片 | 16女下面流水不遮图免费观看 | 2021乱码精品公司 | 日本免费一区二区三区最新vr | 99国产在线观看 | 国产三级在线观看免费 | 午夜成a人片在线观看 | 香艳69xxxxx有声小说 | 国产精品 中文字幕 亚洲 欧美 | 涩涩电影网| 夜里18款禁用的免费B站动漫 | 久久精品一本到东京热 | 国产ZZJJZZJJ视频全免费 | 日日噜噜噜噜夜夜爽亚洲精品 |