裸金属 Bare Metal

裸金属 Bare Metal

原文链接

我的博客

裸金属听起来很酷!在计算机科学中,裸金属 (bare metal) 或裸机 (bare machine) 是直接在逻辑硬件上执行指令而无需操作系统的计算机。现代操作系统走过了不同的阶段,从最初级到现今复杂、高敏捷并提供多种服务的系统。在可编程计算机开发出来到操作系统发展之前的这段时间,一系列指令直接在计算机硬件上通过机器语言执行,而不需要经过系统软件层。这种方式工作的设备就是现代操作系统的前身裸机。现如今,它通常在嵌入式系统或需要低时滞的情景下出现,而常规的软件则运行在操作系统上。

优点

对于一个给定的应用,大部分情况下,在裸金属上运行会更快,使用更少的内存,因此更加节能。这是因为操作系统像其他程序一样,运行时需要执行时间、内存空间。比如可以在裸金属上直接访问输入输出等硬件资源,而在一个操作系统中,则需要一系列的子过程调用 (比如 Linux 中的系统调用),这会消耗运行时间与运行内存。

缺点

对于一个给定的应用,让它能够在裸金属上成功运行,实现的工作量与复杂度会更高。因为操作系统提供的服务需要重新实现,这些服务可能是:

  • 系统启动
  • 内存管理
  • 中断处理
  • 任务调度
  • 外设管理
  • 错误管理

调试一个裸金属程序是困难的,因为:

  • 没有软件错误提示或故障管理,除非它们被实现
  • 没有标准输出,除非它被实现
  • 程序执行的位置与程序写入的位置是不同的,因此目标硬件可能是一个仿真器/模拟器或一个外部设备。这要求必须设置一个方式来将裸金属程序载入到目标,让程序开始执行,并访问目标资源

裸金属程序开发通常使用贴近硬件的语言,比如 RustC++C 汇编语言甚至是少量的机器码。这就意味着裸金属程序可移植性是不高的。

例子

早期计算机

早期计算机,比如 PDP-11,允许开发者以机器码载入程序到 RAM。程序运行的结果可以使用光展示,或写入到磁带。

嵌入式系统

裸金属程序在嵌入式系统中还是经常可以看到的,微控制器或微处理器直接启动去执行一个大型简单的软件,而无需载入操作系统。这种嵌入式软件在结构上可能有很大不同,最简单的形式可能只是一个 main 死循环,调用子程序来对输入进行响应,执行动作,写输出。

发展

对裸金属的使用为操作系统的发展铺下道路。比如,对下面内容的需求:

  • 输入设备来便利地输入代码或数据
    • 输入设备,比如键盘被创建

比如,载入 PDP-11 的程序是通过使用前面板的拨码开关实现的。键盘相较于这种输入方式,显然是极为先进的。显然,它能够更快速键入代码或数据。

  • 输出设备,比如显示器
  • 快速、廉价的辅助存储设备来存储程序到非易失存储设备
  • 高级开发语言,以及将这种高级语言转换成对应机器码的转换机制
  • 链接器用于连接库模块,这种库可以是由系统提供,也可以由用户自己实现
  • 将可执行内容从辅助存储设备载入到 RAM 中的一种载入机制
  • 合适的 I/O 设备
posted @ 2022-06-17 10:43  ArvinDu  阅读(2336)  评论(0编辑  收藏  举报