美文网首页
打开电源,计算机执行过程

打开电源,计算机执行过程

作者: salix_ | 来源:发表于2020-02-25 20:07 被阅读0次
1.我们都知道计算机是取指执行的。

每一条指令(有一个基址,一般放在CS。有一个偏移地址,一般放在IP)。比如说我们要运行qq程序,我们首先肯定是把qq从磁盘上加载到我们的内存(不会全部加载)。我们加载到内存的肯定是一段代码。运行的时候就是取指执行。

2.问题是刚开机内存里面啥也没有,CS、IP该指向哪里呢?该执行内存中的哪一条指令呢?
3.直接说结论:刚一上电,会设置CS=0xFFFF;IP=0x0000。就会寻址到0xFFFF0(CS<<4+IP)区域。

这个区域其实就是ROM BIOS映射区(ROM没电也能保存信息),然后在这个区域检查RAM、键盘、显示器、软硬磁盘。(因此计算机执行的第一条指令就是BIOS里面的代码

4.然后就把硬盘512字节的引导扇区加载进入内存,放在 0x07c0:0x0000。引导扇区的代码文件是bootsect.s(汇编代码)
5.然后把0x07c0:0x0000处的512个字节再放在0x9000:0x0000处。
6.然后开始运行bootsect.s的代码。然后读入磁盘中setup的4个扇区。磁盘第2个扇区开始,读4个。(int 0x13读磁盘)放到0x9020:0x0000也就是0x9000:0x0000再偏移512个字节。接着读取System模块
7:
8:然后把System模块移动到0地址。此后操作系统一直都在0地址。
9:通过改变cro寄存器,使得计算机变成32位模式(通过CS、IP、GDT表开始寻址)。
10:最后Setup.s执行了下面的代码(操作系统在次之前已经进入保护模式,就是步骤9)。

这个跳到了0地址。(通过查GDT表,而不是通过CS<<4+IP )


11:开始执行System.s代码。
12:System.s源代码最开始就是head.s。然后进行初始化GDT、IDT等操作。
13:head.s执行完之后就执行main.c(c语言)。

例:其中的mem_init其实就是将内存分页,4k一页。然后用个位图记录。

相关文章

  • 打开电源,计算机执行过程

    1.我们都知道计算机是取指执行的。 每一条指令(有一个基址,一般放在CS。有一个偏移地址,一般放在IP)。比如说我...

  • 计算机是如何启动的

    本文参考了这里. 计算机是如何启动的? 作者: 阮一峰 从打开电源到开始操作,计算机的启动是一个非常复杂的过程。 ...

  • 计算机是如何启动的?

    从打开电源到开始操作,计算机的启动是一个非常复杂的过程。 零、boot的含义 "启动"的英文是boot。而boot...

  • Linux Boot,Kernel 和 Service 介绍

    Linux 启动过程是初始化系统的过程。 它包括从第一次打开计算机电源到用户界面完全可操作时发生的所有事情。 充分...

  • linux系统启动过程详解

    大家好我是猪猪!今天给大家说一下linux启动流程,linux系统启动开机过程指的是从打开计算机电源直到LINUX...

  • 计算机是如何启动的?

    从打开电源到开始操作,计算机的启动是一个非常复杂的过程。 零、boot的含义 先问一个问题,"启动"用英语怎么说?...

  • 操作系统启动流程&&kickstart光盘镜像的制作

    (一).简述linux操作系统启动流程 第一步: 计算机加电,加载BIOS进行开机自检 打开计算机电源,计算机会通...

  • Linux启动过程详解

    启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机...

  • Linux 服务器启动流程详解

    启动第一步--加载 BIOS 当你打开计算机电源,计算机会首先加载 BIOS 信息,BIOS 信息是如此的重要,以...

  • 第八节、linux相关系统的面试题目

    一、系统的开机启动流程 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息...

网友评论

      本文标题:打开电源,计算机执行过程

      本文链接:https://www.haomeiwen.com/subject/pttwqhtx.html