个人理解的软件底层包含哪些内容

我个人会把硬件之上,应用之下的软件部分认为是软件底层。
那么底层包括哪些部分呢?

  1. 指令集:封装芯片的具体操作实现
  2. 操作系统:封装系统调用,驱动等提供软件需要处理的资源并协调调度。
  3. 编译器:将软件转化成可以被操作系统识别并运行的指令或调用,并对代码进行优化,优化性能。
  4. 各种封装库:github 上的大部分工具库,提供网络、文件等基础软件服务和操作系统的交互。

指令集

目前最火的指令集是 RISC-V,只要和硬件有点关系的大厂都在关注。如国内的玄铁 910。
当然还有 ARM 架构的也不会少。

操作系统

工业默认是 Linux 吧,在 linux 之上封装的厂商可能也不少。
这个没有国家资本扶持很难。华为也在自己做,国内华为可能是最强的。

编译器

目前由于芯片比较火,同时芯片设计自己的 DSL(domain specific language) 是最快的方式。
还是美国卡脖子的缘故,相比于操作系统,近两年需求大增。

封装库

不管 python/java/c++ 都有大量的开源封装库,只能说用的越多,知道的越多。当然底层还是以 linux x86 系统为主。
如果库用到嵌入式(Arm 架构),开源的代码如果有自己的底层指令优化,极大的概率是需要修改源码的。

操作系统和编译器一个级别的难度,都是系统级的软件工程。
操作系统在我读大学的时候看过什么 linux 源码解读,就压根看不下去。😓


↙↙↙阅读原文可查看相关链接,并与作者交流