一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么大部分操作系統(tǒng)都使用C語(yǔ)言來(lái)編寫(xiě)

strongerHuang ? 來(lái)源:碼農(nóng)的荒島求生 ? 作者:小風(fēng)哥 ? 2022-07-14 09:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

你有沒(méi)有想過(guò),為什么大部分操作系統(tǒng)都使用C語(yǔ)言來(lái)編寫(xiě)而不是其它語(yǔ)言呢?這篇文章給你答案。

C語(yǔ)言在處理器界很受歡迎

首先不得不說(shuō)的是C語(yǔ)言真的非常簡(jiǎn)單,看看K&R經(jīng)典的"The C Programming Language",薄薄的一本書(shū)就把C語(yǔ)言講完了。

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

由于C語(yǔ)言很簡(jiǎn)單,被移植到了許多CPU架構(gòu)上,甚至許多CPU設(shè)計(jì)者第一件事就是把C語(yǔ)言移植過(guò)來(lái)。

假設(shè)你自己打造了一款CPU,有自己獨(dú)特的機(jī)器指令,現(xiàn)在CPU有了,接下來(lái)的問(wèn)題是你該怎么編寫(xiě)程序讓你的CPU開(kāi)始工作呢?關(guān)于CPU的工作原理你可以參考《你管這破玩意叫CPU?》 我們知道,CPU只能執(zhí)行機(jī)器指令,程序員都使用高級(jí)語(yǔ)言來(lái)編寫(xiě)程序,因此必須將高級(jí)語(yǔ)言翻譯成機(jī)器指令,接下來(lái)的問(wèn)題是選擇什么語(yǔ)言呢?使用極為復(fù)雜的Java/C#還是簡(jiǎn)單的C呢?答案不言而喻。

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

看到了吧,處理器設(shè)計(jì)者想到的第一個(gè)用來(lái)驅(qū)動(dòng)CPU的高級(jí)語(yǔ)言就是C,那么針對(duì)該CPU編寫(xiě)的操作系統(tǒng)該用什么語(yǔ)言還用得著說(shuō)嗎?

C語(yǔ)言最獨(dú)立

為什么說(shuō)C語(yǔ)言最獨(dú)立呢? 想一想Java、Python、C#等是不是需要一大坨運(yùn)行時(shí)系統(tǒng)(runtime system),包括解釋器、線程模型、垃圾回收等等。

pYYBAGLPbA6AGPGvAACnlKTpgsQ111.jpg




而C語(yǔ)言就簡(jiǎn)單太多了,C語(yǔ)言不需要依賴任何運(yùn)行時(shí)系統(tǒng)(不考慮標(biāo)準(zhǔn)庫(kù)),它不需要內(nèi)存管理系統(tǒng)、不需要解釋器、不需要線程模式等等,這就意味著你編寫(xiě)的C語(yǔ)言程序可以直接在硬件上跑起來(lái)。

直接操作硬件的能力

讓我們來(lái)看一下在整個(gè)計(jì)算機(jī)系統(tǒng)中操作系統(tǒng)位于哪里:

pYYBAGLPbC2AKINFAAA_pF0AcbU936.jpg




可以看到操作系統(tǒng)位于應(yīng)用程序與硬件中間,這就意味著操作系統(tǒng)必須對(duì)上層屏蔽硬件,這同時(shí)也意味著編寫(xiě)操作系統(tǒng)時(shí)必須能直接控制硬件,尤其是內(nèi)存管理,而C語(yǔ)言就是為此而生的。

C語(yǔ)言本身不像Java等自帶內(nèi)存管理系統(tǒng),在C語(yǔ)言中這一工作完全由程序員控制,這種控制權(quán)在開(kāi)發(fā)操作系統(tǒng)時(shí)是極為重要的,再加上指針這一大殺器,程序員可以方便的直接操作內(nèi)存,像創(chuàng)建頁(yè)表(page table)、DMA控制器、Memory mapped IO等等。

有的同學(xué)可能對(duì)指針(pointer)心生畏懼,的確,對(duì)于大部分工作在應(yīng)用層的程序員來(lái)說(shuō)沒(méi)有指針我們一樣可以編寫(xiě)出有用的程序,像Java程序、Python程序等等,這些語(yǔ)言中沒(méi)有指針,我們也不需要直接面對(duì)硬件,而這恰恰是因?yàn)椴僮飨到y(tǒng)幫我們屏蔽掉了,而在操作系統(tǒng)這一層我們無(wú)可逃避,C語(yǔ)言可以干凈利落的解決問(wèn)題。

最接近底層的高級(jí)語(yǔ)言

C語(yǔ)言中沒(méi)有復(fù)雜的數(shù)據(jù)結(jié)構(gòu),像各種容器、hash表、樹(shù)等,程序員必須自己來(lái)實(shí)現(xiàn)這些,這也是很多同學(xué)覺(jué)得不方便的地方,然而這樣設(shè)計(jì)的初衷是為了讓程序員能確切的知道C代碼是怎樣影響硬件的,C語(yǔ)言也是最接近機(jī)器指令的高級(jí)語(yǔ)言,C語(yǔ)言是非常透明,而這一點(diǎn)在其它高級(jí)語(yǔ)言中幾乎不可能,因?yàn)镃語(yǔ)言的設(shè)計(jì)哲學(xué)之一就是:

Trust the programmer

使用C語(yǔ)言的程序員應(yīng)該清楚的知道自己在干啥,這非常適合編寫(xiě)操作系統(tǒng)這種貼近硬件涉及大量底層細(xì)節(jié)需要精密微調(diào)的程序,當(dāng)然缺點(diǎn)就是剛才所說(shuō)的沒(méi)有內(nèi)置的一些常用數(shù)據(jù)結(jié)構(gòu)。

總結(jié)

本篇介紹了為什么大部分操作系統(tǒng)都使用C語(yǔ)言來(lái)編寫(xiě),也介紹了C語(yǔ)言的許多優(yōu)點(diǎn),但值得注意的是每種語(yǔ)言都有自己的使用場(chǎng)景,C語(yǔ)言也不例外,C語(yǔ)言非常適合系統(tǒng)編程等偏向底層的方向,但在應(yīng)用層你的選項(xiàng)則有很多。


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19896

    瀏覽量

    235244
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7152

    瀏覽量

    125592
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141765

原文標(biāo)題:為什么用C語(yǔ)言編寫(xiě)操作系統(tǒng)?

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    淺談Linux操作系統(tǒng)的三大部分

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

    KaihongOS操作系統(tǒng):ArkTS語(yǔ)言基礎(chǔ)

    ArkTS語(yǔ)言基礎(chǔ) KaihongOS是面向全場(chǎng)景的萬(wàn)物智聯(lián)技術(shù)底座,在OpenHarmony基礎(chǔ)上技術(shù)創(chuàng)新和系統(tǒng)能力增強(qiáng)的跨設(shè)備的操作系統(tǒng),它支持多種設(shè)備類(lèi)型。ArkTS是KaihongOS
    發(fā)表于 04-23 06:31

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

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

    C語(yǔ)言相對(duì)于其他語(yǔ)言有哪些特點(diǎn)

    操作系統(tǒng)(包括內(nèi)核、驅(qū)動(dòng)等)是使用C語(yǔ)言和匯編編寫(xiě)的,Windows,UNIX,Linux都是這樣的。絕大部分
    發(fā)表于 10-27 08:25

    開(kāi)源操作系統(tǒng)大全

    ,重啟后不會(huì)影響用戶數(shù)據(jù);KnightOS 內(nèi)核具有獨(dú)立特性,它采用類(lèi) Unix 的環(huán) 境,使用 Z80 的匯編語(yǔ)言編寫(xiě),開(kāi)發(fā)者可以用它來(lái)編寫(xiě)自己的
    發(fā)表于 10-27 15:13

    C語(yǔ)言實(shí)時(shí)操作系統(tǒng)源代碼

    C語(yǔ)言實(shí)時(shí)操作系統(tǒng)源代碼
    發(fā)表于 06-05 12:36 ?63次下載

    Linux操作系統(tǒng)-C語(yǔ)言編程入門(mén)-pdf

    Linux操作系統(tǒng)-C語(yǔ)言編程入門(mén)介紹在LINUX 下進(jìn)行C 語(yǔ)言編程所需要的基礎(chǔ)知識(shí).在這篇文章當(dāng)中,我們將會(huì)學(xué)到以下內(nèi)容:⣷
    發(fā)表于 12-08 09:55 ?193次下載
    Linux<b class='flag-5'>操作系統(tǒng)</b>-<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>編程入門(mén)-pdf

    TESTLICHENGlpc大部分歷程

    電子發(fā)燒友網(wǎng)站提供《TESTLICHENGlpc大部分歷程.rar》資料免費(fèi)下載
    發(fā)表于 03-23 17:23 ?0次下載

    基于Linux操作系統(tǒng)C語(yǔ)言編程入門(mén)

    基于Linux操作系統(tǒng)C語(yǔ)言編程入門(mén)
    發(fā)表于 10-27 15:36 ?11次下載
    基于Linux<b class='flag-5'>操作系統(tǒng)</b>下<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>編程入門(mén)

    Linux操作系統(tǒng)C語(yǔ)言編程入門(mén).pdf

    Linux操作系統(tǒng)C語(yǔ)言編程入門(mén)
    發(fā)表于 05-17 10:08 ?98次下載

    如何提高你的C語(yǔ)言編程能力?帶你提升C語(yǔ)言編程能力

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

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

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

    嵌入式底層開(kāi)發(fā)為什么選擇C語(yǔ)言

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

    如何利用C語(yǔ)言控制LED燈的實(shí)現(xiàn)

    實(shí)際工作中很少會(huì)使用到匯編去編寫(xiě)嵌入式驅(qū)動(dòng),畢竟匯編太難,寫(xiě)出來(lái)也不好理解,大部分情況下都使C語(yǔ)言
    的頭像 發(fā)表于 11-30 09:58 ?9060次閱讀

    大部分的干擾問(wèn)題都來(lái)自電源和地

    大部分的干擾問(wèn)題都來(lái)自電源和地,分享一個(gè)很好的PDF文檔,文末附文檔獲取方式。 ?
    的頭像 發(fā)表于 01-15 17:37 ?575次閱讀
    <b class='flag-5'>大部分</b>的干擾問(wèn)題都來(lái)自電源和地