Assembly 基本操作系统引导问题
我对计算机的引导过程和引导加载程序调用操作系统的部分有一些基本的问题 所以我知道BIOS将可引导驱动器的前512字节复制到内存中,并执行代码——这就是引导块Assembly 基本操作系统引导问题,assembly,operating-system,boot,bios,Assembly,Operating System,Boot,Bios,我对计算机的引导过程和引导加载程序调用操作系统的部分有一些基本的问题 所以我知道BIOS将可引导驱动器的前512字节复制到内存中,并执行代码——这就是引导块 但是这个小的汇编程序是如何引导引导引导程序从操作系统中执行命令的呢 引导加载程序是否继续运行,并且仍然充当软件和硬件之间的“传送器”?或者控制权完全交给了操作系统 为什么所有引导加载程序都是用汇编语言编写的 为什么在编写OS时必须从C++返回到C? 致以最良好的祝愿, lamas1)引导加载程序通常包含一些简单的指令,用于从磁盘加载更多
- 但是这个小的汇编程序是如何引导引导引导程序从操作系统中执行命令的呢
- 引导加载程序是否继续运行,并且仍然充当软件和硬件之间的“传送器”?或者控制权完全交给了操作系统
- 为什么所有引导加载程序都是用汇编语言编写的 为什么在编写OS时必须从C++返回到C?
<>强>编辑:我还听到一些OS开发者坚持C语言的说法,因为在不同的编程范式和风格中,选择比C++中要少。因此,对于一个拥有公共代码库的团队来说,工作更容易,因为每个人都会编写更多“相似”的代码。(因为我自己没有参与过任何开源或操作系统开发,我无法根据经验判断这是否是一个有效的说法。)回答你的最后一个问题:内核不需要用C编写。但是当涉及到分配内存时,这会使它们更容易 C++有许多不同的情况,您可以隐式地为临时变量等分配内存,这些情况在代码检查时并不总是明显的。这使得编写内核更加困难,因为您必须避免在某些上下文中分配内存
但是,它并不完全排除C++中的内核编写。有很多方法可以解决这个问题。
引导加载程序从磁盘加载操作系统 这就是为什么它被称为引导加载程序-它通过在没有任何磁盘操作系统从磁盘加载任何内容之前从磁盘加载磁盘操作系统,从而在引导过程中提升自身 加载操作系统时,它将接管并丢弃加载程序 引导加载程序通常用汇编语言编写,因为它在总体控制和可读性之间有很好的平衡。它可以用简单的机器代码编写(第一个可能是),但这更难阅读。它可以用像C这样的低级语言编写,但很难达到BIOS中加载所需的低级例程,也很难将其保持在大小限制内,因为编译后的代码往往会有大量开销 操作系统通常是用像C这样的低级语言编写的(引导加载程序和硬件驱动程序仍然在汇编程序中)。你可以用C++来写它,因为它是用C语言编写的,但是这将是毫无意义的,因为你不会使用C++所增加的很多内容。编写操作系统时,面向对象并不是很有用。- 但是这个小的汇编程序是如何引导引导引导程序从操作系统中执行命令的呢
- 引导加载程序是否继续运行,并且仍然充当软件和硬件之间的“传送器”?或者控制权完全交给了操作系统李>
- 为什么所有引导加载程序都是用汇编语言编写的
-
为什么在编写OS时必须从C++返回到C?