BIOS是如何工作的

本文详细解析了计算机启动过程中的BIOS作用,包括其如何检测硬件、建立中断向量表,以及如何检查并加载主引导记录(MBR),实现从BIOS到操作系统的控制权转移。

启动BIOS:
按下电源后,设备加电,CPU会进入实模式运行,并强制设置CS和IP寄存器的值(CS=0xFFFF IP = 0x0000或者CS = 0xF000 IP=0xfff0,没有进行验证);则CS:IP的物理地址即为0xFFFF0;这个地址即为BIOS的入口地址,则加电后CPU会去默认执行改地址存储的指令,启动BIOS。
BIOS的工作:
BIOS启动后将开始检测内存,显卡.外设之类的工作。
建立中断向量表:实模式的中断处理程序由硬件提供完成,bios只需要建立中断向量表即可调用;.BIOS会在内存0-0x3ff建立中断向量表。
检查启动盘:bios会检查启动盘启动扇区的末尾2个字节是否是0x55,0xaa,如果存在bios将会认为此处有主引导记录程序MBR.bios将把此扇区的内容(程序)加载到物理地址0x7c00,.最后bios将执行jmp 0:0x7c00(随意写的.跳转到0x7c00)处.执行mbr.至此控制权由BIOS转交给了Windows(MBR)

### BIOS 工作原理详解 BIOS(Basic Input/Output System,基本输入输出系统)是计算机中的一个重要组件,主要用于初始化硬件并加载操作系统。以下是关于 BIOS工作原理的详细介绍: #### 1. 启动阶段 当计算机开机时,电源供应器会向主板发送信号以启动 CPU。随后,CPU 执行第一条指令,这条指令通常指向 ROM 芯片上的 BIOS 程序[^1]。 #### 2. POST 自检 POST(Power-On Self Test,加电自检)是 BIOS 的第一个重要功能。在此过程中,BIOS 对计算机的主要硬件设备进行检测,包括内存、硬盘、键盘和其他外设。如果发现任何错误,BIOS 可能通过蜂鸣声或其他方式通知用户[^2]。 #### 3. 初始化硬件 在完成 POST 测试之后,BIOS 开始初始化各种硬件设备。这一步骤涉及配置芯片组参数、设置内存控制器以及其他必要的硬件准备活动。这些操作确保所有硬件处于正常工作的状态[^1]。 #### 4. 加载引导程序 一旦硬件被成功初始化,BIOS 将查找存储有引导记录的介质。按照预定义顺序(通常是光驱、USB 设备或硬盘),BIOS 寻找可引导设备并将控制权移交给找到的第一个有效引导扇区代码。此过程称为“引导链传递”。具体来说,MBR(Master Boot Record,主引导记录)位于硬盘的第一个扇区中,它的职责是从特定分区读取实际的操作系统引导程序[^2]。 #### 5. 控制权转移至操作系统 最后,在引导扇区内的小型程序被执行后,真正的操作系统内核会被加载到 RAM 中运行起来。此时,BIOS 完成了自己的使命,并将整个系统的管理责任完全交付给新启动的操作系统环境。 需要注意的是,随着技术发展,传统 BIOS 正逐渐被更先进的 UEFI 替代。尽管两者目标相似,但在实现细节上有很大不同,比如支持更大的磁盘容量、提供更强的安全特性等[^1]。 ```python # Python 示例:模拟简单的BIOS流程逻辑 def bios_process(): print("Step 1: Power On and Initialize Hardware...") # 假设这是POST测试的结果 post_result = True if not post_result: raise Exception("Hardware failure detected during POST.") print("Step 2: Initializing hardware components...") boot_device_found = False devices_to_check = ["CD/DVD", "USB Drive", "Hard Disk"] for device in devices_to_check: if check_bootable(device): boot_device_found = True load_os_from(device) break if not boot_device_found: raise Exception("No valid boot device found.") def check_bootable(device_name): """假装检查某个装置是否含有有效的启动信息""" return device_name == 'Hard Disk' def load_os_from(device_name): print(f"Loading OS from {device_name}...") try: bios_process() except Exception as e: print(e) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值