操作系统学习系统启动过程

Posted ay-a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统学习系统启动过程相关的知识,希望对你有一定的参考价值。

一、操作系统启动部分主要执行流程

  • 当PC电源打开后,80x86结构的CPU将自动进入实时模式。并从地址0xFFFF0 (FFFF:0) 开始自动执行程序代码,这个地址通常是是ROM-Bios中的地址。

  • PC机的BIOS将执行某些系统检测,并在物理地址0处开始初始化中断向量。 此后,它将可启动设备的第一个扇区(磁盘引导扇区,512字节)读入绝对内存地址 0x7C00 处,并跳转到这个地方。

注:启动设备通常是软驱或硬盘。

二、具体执行过程

  1. 开机后,CPU自动进入到FFFF:0 单元处执行,此处有一条跳转指令。CPU执行该跳转指令后,转去执行BIOS中的硬件系统检测和初始化程序。

  2. 初始化程序将将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。

  3. 硬件系统初始化完成后,调用 int 19h 进行操作系统引导工作。

  • 如果设为从软盘启动操作系统,则int 19h 将主要完成以下工作。

        a. 将控制0号软驱,读取软盘0道0面1扇区的内容到0:7C00
    
        b. 将CS:IP 指向0:7C00
  • 如果在0号软驱中没有软盘,或发生软盘I/O错误,则int 19h将主要完成以下工作

        a. 读取硬盘C的0道0面1扇区的内容到0:7c00
        b. 将CS:IP 指向0:7C00

注:如果从软盘启动软盘的0道0面1扇区中装有操作系统引导程序,int 19h 将其装在到0:7c00处后,设置CPU从0:7c00开始执行此处的引导程序,操作系统被激活,控制计算机。

以上是关于操作系统学习系统启动过程的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统启动过程的打印信息从何而来?

安卓源代码----安卓系统启动过程(初次研究源代码,表述不当还请见谅)

newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段

系统开机启动过程

从现有片段启动其他片段时应用程序崩溃

操作系统启动过程