x86计算机启动过程分析

原创 2015年11月20日 20:58:43

x86计算机启动过程分析

 

 

计算机的加电和复位

       在处理器的众多引脚中,有一个RESET引脚,用于接受复位信号。每当处理器加电,或者RESET引脚的电平由低变高时,处理器都会执行一个硬件初始化以及一个可选的内部自测试,然后将所有寄存器的内容初始化到一个预置的状态。比如对于Intel8086来说,将CS寄存器初始化为0xFFFF,其他所有寄存器的内容都为0x0000,包括指令指针寄存器(IP)。

处理器的主要功能就是取指令和执行指令。加电或复位后,它就会立即尝试去做这样的工作。不过,在这个时候,内存中还没有任何有意义的指令,它该怎么办?

计算机的存储结构

 

       对于Intel8086来说,它有20根地址线,可访问的空间范围为1MB。范围为0x00000~0xFFFFF,处于各方面考虑,计算机系统设计者将这1MB的空间从物理上分为不同部分。如图,0x00000~0x9FFFF分配给内存条,即我们所熟知的内存,即SDRAM。0xF0000~0xFFFFF为BIOS芯片,即ROM。另外细心的读者可以发现,两者之间还空闲一部分区域,即从0xA0000~0xEFFFF的空间。这部分空间分配给了其他的物理部件,比如显存之类的板卡。


      由于SDRAM存储的数据掉电即失,而ROM存储的数据能长时间保存,掉电也不失,我们根据ROM的特性,将一些程序指令固化在ROM中。使处理器加电后自动执行。不能让处理器饿着,聪明的人类总会有办法让它自己觅食的。所以,计算机开机后,根据CS:IP的初始化值,计算机找到0xFFFF*16+0,即0xFFFF0处的指令执行。这里通常是一个跳转指令,原因是处理器执行时,IP的值是自动增长的,访存空间最多到0xFFFFF,所以程序最多再访问16字节的空间就到达存储器尽头了。

      程序通常还是跳转到ROM中运行,进行硬件的监测,诊断,初始化。它还包括一套软件流程,包括读取从外围键盘输入的数据,显示硬件状况。由于这片ROM完成的是最基本的必备功能,所以得名BIOS(即Basic Input & Output System),BIOS的容量是有限的,在完成最基本的功能后,接下来要做的,就是从辅存(一般是硬盘)读取指令数据到内存条,然后跳转到内存条的地址空间执行。

 

硬盘中的数据是什么?

硬盘中存放的就是我们的操作系统,一般位于C盘。BIOS会从硬盘的第一扇区,读取512字节的数据到内存的0x0000:0x7c00位置。这512字节就是大名鼎鼎的主引导扇区,即Bootloader。Bootloader将有关操作系统更详细的信息,读取到内存中来,例如全局描述符表。完成配置后,CPU使用权移交给操作系统。至此,操作系统登场。回顾以下整个过程,CPU的使用权好像接力棒一样从BIOS到Bootloader,再从Bootloader到操作系统。

 

总结

如何快速掌握操作系统启动流程呢,我认为以下几点最重要:1.复位后,处理器从哪里执行,即IP指向哪里;2.内存有多大,地址空间从哪里到哪里;3.操作系统存储在什么地方,如何加载操作系统到内存;4.加载操作系统后,内存中的各个段怎么管理。不同的处理器设计不同,所以上述方法也不同。比如ARM架构的处理器,就有ARM的方法。所以,学习操作系统过程中,最主要关注的不是技术,而是结合硬件特性来采取合适的解决方法,万变不离其宗。

 

 

 

 

计算机的启动过程(详细)

【转】计算机的启动 Feb 17th, 2013 寒假回来就要开始执行新年的计划了~首先是每周的一篇blog。 今天看了阮一峰最新的一篇博客计算机是如何启动的,感觉写得很好,又清楚又简单。...
  • langeldep
  • langeldep
  • 2013年04月11日 14:28
  • 80986

计算机启动与关机过程详解

1.电源自检程序运行;2.主引导记录被装入内存,并开始运行;  主引导记录:主引导记录(MBR,Master Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它要检查硬盘的分区...
  • smartwhitehorse
  • smartwhitehorse
  • 2011年03月27日 17:04
  • 3986

计算机开机启动过程原理详解

非常好的一篇文章,论述条理而又讲解详细,相比而言,以前看点那些关于开机过程点文章要么只要大概没有详细介绍,只适合入门,不适合学习理论,要么知识多而无条理,看得人头大。 从打开电源到开始操作,计算...
  • momowuwenderen
  • momowuwenderen
  • 2013年08月12日 21:02
  • 1519

Windows启动过程详解

我们每天都在和Windows打交道,很多人可能每天都要面对多次Windows的启动过程,可是您知道在Windows的启动过程背后,隐藏着什么秘密吗?在这一系列过程中都用到了哪些重要的系统文件?系统的启...
  • jacky0922
  • jacky0922
  • 2007年10月16日 23:38
  • 13904

X86架构下Linux启动过程分析

1、X86架构下的从开机到Start_kernel启动的总体过程 这个过程简要概述为: 开机——>BIOS——>GRUB/LILO——>Linux Kernel 其运行的流程图和重要函数如下图所...
  • yuesichiu
  • yuesichiu
  • 2014年08月07日 15:27
  • 4513

X86计算机启动流程分析之BIOS

一、 计算机启动过程 1. 程序被加载器(软件或硬件)加载到内存某个区域。 2. CPU的cs:ip寄存器被指向这个程序的起始地址。   以上是程序载入内存的步骤,操作系统在加载程序时,是加载器将用...
  • hwxlovezy
  • hwxlovezy
  • 2016年12月04日 14:56
  • 230

计算机是怎么开机的?(以x86 PC机为例)

计算机是怎么开机的?(以x86 PC机为例)
  • iostream1001001
  • iostream1001001
  • 2017年08月14日 15:43
  • 71

计算机的启动过程

每天我都会打开计算机,按一下开关键然后到看到操作系统载入,看到桌面,然后开始一天的工作学习,可是,这一过程我还是不太了解。。今天看了阮一峰的一篇博客计算机是如何启动的,了解了计算机启动的四个阶段。。 ...
  • tongyijia
  • tongyijia
  • 2016年09月22日 16:42
  • 261

计算机启动过程详解;;

  • 2010年03月19日 16:21
  • 61KB
  • 下载

HIT软件学院第一次OS实验

这次实验主要是修改linux V0.11版本的引导程序的代码,使操作系统在启动时能再屏幕上打印一个你自己规定的字符串。因为这次实验仅仅修改了OS的引导部分(bootsect.s),我们只需要让引导部分...
  • liushuaikobe
  • liushuaikobe
  • 2011年11月05日 18:41
  • 5058
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:x86计算机启动过程分析
举报原因:
原因补充:

(最多只允许输入30个字)