概述
在这里以x86的处理器为例
机器在启动的时候会执行第一条指令。这条指令会去执行bios,将控制权交给bios。
bios完成硬件的质检,然后将bootloader从硬盘读到内存中,执行bootloader,并将控制权交给bootloader
bootloader负责使能保护模式、建立段机制以及加载操作系统,然后将控制权交给操作系统
第一条指令
执行机器的第一条指令是为了跳转到bios执行,那么需要知道bios在哪里?cpu是怎么寻址的?
bios在哪里
bios是固化在内存EPROM中的,断电不会丢失(非易失性),这样biod的地址是固定的,因为在cpu第一次加电了之后,寄存器就会有缺省的初始值,所以bios地址=寻址寄存器的缺省值就好啦。
寻址是由段寄存器以及指令指针共同完成,bios地址由CS:IP=16*CS+IP(代码段寄存器:指令指针)来表示。
CS的缺省值是FFFF0000H,IP的缺省值是0000FFF0H。
CS:IP=FFFFFFF0H
寻址机制
寻址是由段寄存器以及指令指针共同完成。因为内存很大,而且在一段时间内操作的内存具有空间局部性,所以可以将内存分为一段一段由段寄存器来定位,这一段的内存中再由指令指针来定位到具体的代码、数据
段寄存器:
- CS——code segment,代码段寄存器
- DS——data segment,数据段寄存器
- ES——extra segment,附加段寄存器
- SS——stack segment,堆栈寄存器
指令寄存器IP(instruction pointer),即是我们熟悉的程序计数器PC。
一个地址由段寄存器:指令指针=16*段寄存器+指令指针来表示
由于在这一阶段,机器还是处于实模式,实模式是20位寻址,所以单单只用段寄存器(16位)是不够的。
因为实模式只有20位寻址,所以最大可调用的空间只有1M
bios
bios是负责做硬件自检并初始化以及将bootloader加载到内存中
要保证硬盘、内存…在后续工作中不会出错。
然后将bootloader加载到内存中的0x7c00,然后跳转到0x7c00执行。
bootloader
bootloader要完成使能保护模式(实模式——>保护模式)、建立段机制以及加载操作系统
bootloader结构
bootloader在硬盘中的第一个扇区也叫主引导扇区,一个扇区是512字节,所以bootloader也是512字节。
其中有400+个字节是启动代码,负责完成bootloader需要完成的工作,剩下的字节是记录硬盘分区表。
建立段机制
当没有段机制,CS:IP得到的是真实的物理地址,段机制就是为了更加灵活的分段。
段机制就是中间做了一层映射,CS先定位到GDT(全局描述表)相应的段描述符,再从段描述符中找到段的起始地址,与IP组成物理地址。
使能保护模式
将CR0寄存器(control 0 register控制寄存器),的第0位设为1,这样就开启了保护模式
相关推荐
在计算机系统中,有时用户可能需要同时运行Windows和Linux两个操作系统,这通常通过创建双系统来实现。在本文中,我们将详细讨论如何在已经安装了Windows XP SP3和Ubuntu LTS 12.10 64位桌面版的双系统环境中,将...
在 Ubuntu 和 Windows7 双系统中,GRUB 负责管理两个操作系统的启动顺序。为了修改启动顺序,需要修改 GRUB 的配置文件。 首先,需要了解 GRUB 的配置文件结构。在 Ubuntu 中,GRUB 的配置文件位于 `/etc/grub.d/` ...
在 `grub.cfg` 文件中,每个内核或者操作系统实例通常以 `menuentry` 开头,每个 `menuentry` 对应一个启动项。启动顺序是按照 `0`、`1`、`2` 等数字进行排列的。如果你想改变启动顺序,你需要编辑 `/etc/default/...
### Ubuntu与Windows双系统启动顺序修改攻略 #### 知识点概述 在使用Ubuntu与Windows双系统的环境中,用户可能会遇到开机时需要手动选择操作系统的问题。默认情况下,GRUB(Grand Unified Bootloader)作为启动...
### 双系统启动顺序设置详解 #### 背景与需求 随着计算机技术的发展和个人工作需求的多样化,很多用户会选择在一台电脑上安装两个或多个操作系统以满足不同的使用场景。例如,一部分用户可能会同时安装Windows XP和...
#修改 GRUB_DEFAULT=0 为操作系统列表中目标操作系统序号,顺序从0开始计数,比如我的 windows 序号为 4# 2.然后: root@ubuntu:~# update-grub 终端提示信息: Generating grub.cfg … Found linux ...
标题中的“双系统改启动项easybcd.zip”指的是一个用于管理多操作系统启动顺序的工具,EasyBCD。在计算机上安装了两个或多个操作系统时,通常需要通过启动管理器来选择启动哪个系统。EasyBCD就是这样一款软件,它...
在计算机系统安装操作系统时,需要在BIOS中设置启动顺序,以便从光盘启动。这篇文章将详细介绍如何在BIOS中设置启动顺序。 首先,需要进入BIOS设置环境中。不同的BIOS设置方法不同,但大多数情况下,可以通过按DEL...
该命令可以查询操作系统在每一个执行等级中会执行哪些系统服务。 chkconfig 命令的语法为:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] 其中,--add ...
### 修改Ubuntu启动顺序详解 #### 一、背景介绍 在多系统共存的情况下,Ubuntu用户可能会遇到需要调整启动顺序的情况。比如,默认启动的是Ubuntu而非Windows或其他操作系统。本文将详细介绍如何在不同版本的Ubuntu...
创建完成后,我们可以启动虚拟机,并安装 Ubuntu 操作系统。 Ubuntu 的安装 在虚拟机中,我们可以安装 Ubuntu 操作系统。我们需要下载 Ubuntu 的iso 文件,并将其挂载到虚拟机中。然后,我们可以启动 Ubuntu 的...
【标题】"自定义软件开机启动顺序"涉及的是操作系统中的启动项管理,特别是Windows XP系统下的启动优化。在计算机启动时,操作系统会加载一系列程序和服务,这些程序和服务被称为开机启动项。用户可以通过调整启动...
在Windows操作系统中,服务是系统运行的重要组成部分,它们在后台执行并提供各种功能支持。有时为了满足特定需求或解决冲突问题,可能需要调整这些服务的启动顺序。 #### 一、理解服务启动顺序的重要性 - **优化...
Linux操作系统的启动顺序是一个重要的概念,它决定了计算机启动时的默认操作系统。在本文中,我们将探讨如何修改Linux启动顺序,以便更好地控制计算机的启动过程。 Linux启动顺序的基本概念 ---------------------...
总结来说,电脑硬件启动顺序是一个复杂的过程,涉及到多个步骤,从电源开启到操作系统接管控制。这个过程中,系统BIOS起到了至关重要的作用,它负责硬件自检、设备初始化、资源配置,以及与操作系统的交接。理解这个...
### 改变启动顺序以及grub2配置技巧 在计算机领域,特别是在运行多个操作系统的环境中,启动管理器扮演着至关重要的角色。对于那些同时安装了Windows 7和Fedora的用户来说,掌握如何更改默认启动顺序及配置grub2是...
### XP和Win7双系统启动顺序的设置方法 在计算机技术快速发展的今天,许多用户希望在一台电脑上同时使用不同的操作系统来满足工作或娱乐的需求。其中一种常见的组合就是Windows XP与Windows 7双系统共存。这样的...
Tomcat的启动顺序涉及到多个层次的加载,从Bootstrap类开始,逐步加载系统配置、公共库、共享库以及Web应用程序。 【详细知识点】: 1. Bootstrap类: Tomcat的启动始于Bootstrap类,这是Tomcat服务器的主入口点...
1. **初始化安装**:启动虚拟机后,根据提示进行安装操作系统的初步设置。 2. **格式化硬盘**:选择格式化方式和文件系统类型。对于Windows XP,通常选择NTFS格式。 3. **安装过程**:安装过程包括文件复制、系统...