系统初始化 —— 上电

本文详细解析了Linux系统在x86架构下从上电到BIOS引导的初始化过程,涉及CPU复位、实模式寻址、BIOS的功能以及中断处理流程。通过对这段初始化代码的分析,读者可以更深入地理解操作系统如何与硬件交互。
摘要由CSDN通过智能技术生成

读内核源代码是一件很有意思的事。它像一条线,把操作系统,编译原理,汇编语言,计算机组成原理,C 语言,数据结构与算法,计算机系统结构等等计算机的基础课程串起来。而分析linux的启动很重要,因为牵涉到硬件的初始化和内核各模块初始化环境的搭建,所以我们就针对linux/arch/x86下的代码,对从打开PC电源到屏幕上出现shell环境,来对整个Linux的初始化过程进行一个全方位的分析,希望能有帮助,不足之处,还请各位网友不吝赐教。

 

1 引子

目前,市面上的大多数计算机系统的内存都是“随机性”的:一旦关机断电,存储在内存中的信息、连同操作系统本身都会丢失。所以,必须把操作系统(内核)的程序存储在某种永久性的介质中,使得开机加电时有一个从不挥发介质装入操作系统、并转入运行的过程,这个过程就叫做“引导”(bootload,或boot),也称为“自举”。

 

1.1 上电

我们只关注x86体系的这个过程,CPU所在的主板会有一个特殊的硬件电路在CPURESET引脚上产生一个电平。这时,CPU处于实地址模式中,并开始自检,自检的最后一个步骤是把一些寄存器(如cseip)设置成固定值。我们知道,实模式下的寻址方法是16位段寄存器左移4位加上16位偏移构成具有能寻址1MB能力的20位地址。所以,刚开始时,复位输入提供一种初始化的硬件手段:标志寄存器设为0xuuuu0002(u代表未定义,实模式下9

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值