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

    文章

    10863

    浏览量

    211758
  • JAVA
    +关注

    关注

    19

    文章

    2967

    浏览量

    104750
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136820
收藏 人收藏

    评论

    相关推荐

    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 96次下载

    C语言厉害在什么地方

    C语言可以直接操纵底层的硬件,可以编写硬件驱动程序和操作系统
    的头像 发表于 03-22 17:04 1723次阅读

    怎样学习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 748次阅读

    C语言基础-为什么要使用C

    当今最流行的 Linux 操作系统和 RDBMS(Relational Database Management System:关系数据库管理系统) MySQL 都是使用 C 语言
    发表于 03-25 11:20 443次阅读