我正在学习开发自己的操作系统。我知道一旦加载引导加载程序会发生什么,因为我无论如何都是自己编写的。但是,在按下电源开关和加载引导加载程序之间会发生什么操作并不十分清楚。
我知道,从高层次来看,情况是这样的:
- 电源供应至动力装置
- 检查电源是否有问题(POST)
- BIOS 已加载
- BIOS 执行一些检查
- BIOS 加载引导加载程序
我的问题是:
- 我读到过关于未通电时 RESET 信号不断发送到处理器的信息。通电后,此信号停止?这是真的吗?如果是,那么谁提供此信号,检查电源是否正常是在信号停止之前还是之后进行的?如果不是,那么按下电源按钮时会发生什么?
- 简而言之,POST 中执行的操作是什么?有些资料提到 POST 由硬件执行,有些资料说由 BIOS 执行。对吗?
- BIOS 执行哪些检查?它们是否仅涉及检查所有设备是否配置正确?
- 我还读过一些关于检查/读取 CMOS 芯片的内容。那是什么操作?是由 BIOS 完成的吗?
附言:如果这个问题不适合这个网站,请关闭它并告诉我正确的网站。如果有人能添加其他合适的标签,那会很有帮助。
答案1
它确实取决于计算机:BIOS(按这个名字)相对较新,“BIOS 已加载”通常不正确,“BIOS 已存在”在 ROM 或闪存中更接近于系统标记有BIOS。
按顺序回答问题:
1) RESET 并非“未通电时持续发送”,只不过 RESET 通常为低电平有效信号(即 0V),并且这是无电时唯一存在的电压。通常,RESET 在通电后保持低电平,并且只有在电源稳定足够长的时间后才允许变为非活动状态。
较新的台式电脑可能有不同的安排,因为它们有一个支持电源可以执行诸如为键盘、以太网等供电以实现“按需唤醒”的功能,但这与原始加电无关。
2) 通常没有对电源进行单独测试;除了“电源电压 > 运行 PC 所需的最低电压”之外 - 该测试允许 RESET 变为非活动状态并且 CPU 启动。
在某些系统上,RESET 会一直持续,直到操作计算机的人通过设置开关将其清除。这允许他们从纸带、开关、卡片组等加载 BIOS 或其他启动程序;现在不太常见了!
3) CPU 开始从特定地址获取并执行指令:对于 ARM Cortex 处理器,地址为 0:对于其他 CPU,可能是其他地址;确切地址已在 CPU 数据手册中公布。
如果 BIOS 或其他硬连线程序(电子手表、洗衣机控制器等)尚未存在,则 CPU 会挂起并且不会发生任何事情。
4) BIOS 执行自检。检查可能包括测量 PSU 电压、测试有多少内存、内存是否工作等;有哪些外围设备;是否有硬盘?- 这是一个开放式列表。如果系统有 CMOS 芯片,则可能包括电池供电时钟,因此 BIOS 会设置系统时间,并且可能包括设置列表(例如引导加载程序位于哪个磁盘上)。
假设有一个硬盘,上面有一个引导加载程序,并且测试通过,那么 BIOS 加载和运行引导加载程序是正常的,并且您自己的操作系统也可以启动并运行...