linux操作系统是用C++还是C语言写的?

那天在咖啡店里,我盯着笔记本电脑屏幕上闪烁的终端命令行,突然想到这有多复杂。
Linux 是用 C 和 C++ 编写的。
我查了资料,发现以前的大型企业服务器,比如IBM的System 3 7 0,都是用C语言编写的操作系统。
Linux是从Unix演变而来的,这很有趣。
Unix 于 1 9 6 9 年诞生于贝尔实验室。
当时,还没有现在那么多奇特的小玩意儿。

内核完全开放,攻击是不是少了?这种说法似乎有点片面。
上次看安全报告,2 02 1 年的Linux内核仍然存在很多漏洞,比如Dirty COW漏洞,已经影响了好几代内核。
开源代码使得调试变得更加容易,但反过来也让黑客更容易发现错误。
不过确实可以在网上找到源代码。
我尝试打开一些文件,这些评论让我的头脑感觉就像一本圣经。
例如,kernel/sched.c 包含宏定义和函数调用的集合,注释很少。
弄得我满头大汗。

用C语言写界面?这个想法现在看来有点天真。
同事之前提到,想用C写一个简单的桌面应用程序,却发现各种库不太好用。
事件处理和图形显示比以往更加困难。
C 是一种非常低级的语言,适合编写驱动程序、内核和应用程序接口。
Java和Python比较合适。
C 仍然主要用于嵌入式应用,例如微控制器开发。
这些小东西只占几千字节的内存。
运行 C 语言效率高并且节省内存。

单线程的操作系统,不是需要开发多线程的程序吗?这也是事实。
就像单片机一样,只需一个核心就足以执行单线程任务。
多线程会增加复杂性。
但在Linux这样的多核系统中,多线程编程是必不可少的。
我曾经在 Linux 上运行视频处理软件。
如果没有多线程,CPU 使用率还不到一半。
但加上话题之后,立刻就上去了。
所以看来单线程开发还是主要用在嵌入式领域。
单片机开发已经有市场。
但坦率地说,微控制器开发是一回事很无聊。

等一下,您刚刚看到了微控制器论坛。
有些人讨论过用 C 语言编写 AI 算法并在 STM3 2 上运行它们。
他们说内存不够,需要提高。
这将C发挥到了极致。
然而,为什么没有人使用 C 来创建 Linux 桌面应用程序呢? Java、Python 和 C 不是很棒吗?

Linux系统中一般使用什么语言编程呀?

说白了,Linux内核基本都是用C写的,汇编只占一小部分,主要是为了性能。
其实很简单。
C语言可以直接操作内存和硬件,效率很高,而且写起来比汇编直观得多。
去年我们运行的内核模块改用C语言后,编译速度直接快了3 0%,调试也容易多了。

还有一点是,Linux的组件和工具确实使用了C++、Python等,但是内核仍然坚持使用C,因为C++有更多的抽象层次,而内核这样的底层东西想要直接。
还有另一个关键细节,比如内存管理部分。
用C写可以精确到字节,但用C++写智能指针就容易出问题。
很多人不注意这一点。

我一开始以为C++可以完全取代C,但后来发现这是错误的,尤其是在驱动层面。
C的指针控制权仍然是C++无法比拟的。
等等,还有一件事。
Python虽然方便,但是当在内核中使用时,其性能缺点太明显了。
对于3 000左右甚至更多的并发量,Python就有点卡住了。

一个陷阱:不要利用用户模式编程的灵活性来进行内核开发。
Linux社区对内核代码的严谨性要求极高。
任何内存越界都可能导致蓝屏。
说实话,这确实是一个陷阱。
建议初学者先学习C语言的基础知识,然后再看内核源代码。