概述
在这里以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,这样就开启了保护模式
相关推荐
#修改 GRUB_DEFAULT=0 为操作系统列表中目标操作系统序号,顺序从0开始计数,比如我的 windows 序号为 4# 2.然后: root@ubuntu:~# update-grub 终端提示信息: Generating grub.cfg … Found linux ...
描述win ce 6.0操作系统启动顺序,
安装了双系统后对操作系统的启动顺序、等待时间的设置不清楚或是找不到最简单的设置方法。下面就以“WinXP和Win7双系统”为例来说明一种最简单的调整方法。在WinXP的基础上安装了Win7后,默认启动的操作系统是Win 7...
Linux系统启动顺序,一个完整的启动流程,每一步都做了什么操作都有详细解释
尝试解决: 1,先根据提示路经找到VBoxGuestAdditions.iso,添加到光盘。 2,根据网上找的资料,需弹出光盘,再行安装增强功能。 这一步走了弯路,因为网上提示是鼠标右击光盘图标弹出,我这里犯了难,右击没有反应...
安装linux/windows多操作系统 修改默认启动
Linux启动顺序的修改.pdf
操作系统的五大类型是批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统。 多道程序设计:即在系统内(内存)同时存放并运行几道相互独立的程序。 多道程序设计的基础:是将...
书中的步骤遵循由小到大、由浅入深的顺序,跟随这些步骤,读者可以由一个最简单的引导扇区开始,逐渐完善代码,扩充功能,最后形成一个小的操作系统。 本书不仅介绍操作系统的各要素,同时涉及开发操作系统需要的...
书中的步骤遵循由小到大、由浅入深的顺序,跟随这些步骤,读者可以由一个最简单的引导扇区开始,逐渐完善代码,扩充功能,最后形成一个小的操作系统。 本书不仅介绍操作系统的各要素,同时涉及开发操作系统需要的...
操作系统基本知识包括了存储,零拷贝技术,进程启动顺序,虚拟内存管理,用户态内核态,逻辑地址和物理地址
对于操作系统而言,只需要把最开始执行的程序"定位" 在启动扇区,其余程序可以依照操作系统的设计顺序加载到后续扇区中。对于BIOS而言,"约定" 接到启动操作系统的命令,"定位识别"只从启动扇区加载代码,而不需要...
进入系统在侧边找到如图加载的虚拟光驱,右击,点击弹出,然后就可正常安装增强功能了 点击安装增强功能 点击“运行” 输入登录系统的密码,点击授权,就开始自动安装了 如图,为安装界面,安装完成后按下回车键...
而实际上操作系统监控着一个等待执行的任务队列,这些任务包括用户作业、操作系统任务、邮件和显示作业等。操作系统根据每个任务的优先顺序为每个任务分配合适的时间片段,每个时间片段大约都有零点几秒,虽然看起来...
2.1.5 HP-UNIX的安装步骤(以32bit操作系统、安装媒体为光盘为例): 4 2.2 系统启动配置 6 2.3 系统的启动 6 2.3.1系统加电的一般顺序: 6 2.3.2系统启动流程图 6 2.4 系统的关闭 7 第三章 系统日常管理和维护 7 ...
虚拟机的安装,使用,简单,便捷,能进行网络测试,跨平台测试。
指针:进程按顺序排成循环链表,用指针指出下一个进程的进程控制块首地址,最后一个进程中的指针指出第一个进程的进程控制块首地址。 要求运行时间:假设进程需要运行的单位时间数。 已运行时间:假设进程已经运行...
本书讲解了Linux操作系统的工作机制以及运行Linux系统所需...根据系统启动的大体顺序,本书更深入地介绍从设备管理到网络配置的各个部分,最后演示了系统各部分的运行方式,并介绍了一些基本技巧和开发人员常用的工具。
(4)由于本题目是模拟实验,所以对被选中的进程并不实际启动运行,而只是执行如下操作:1)估计运行时间减1; 2)输出当前运行进程的名字。 用这两个操作来模拟进程的一次运行。 (5)进程运行一次后,以后的...
服务器启动时的子进程数为5;使用端口为80。 3.使用bind设置DNS服务器。修改DNS服务器的主配置文件将域xx.com 的正向配置文件设置为db.xx.com;创建db.xx.com正向配置文件,并添加主机记录,使两个网站的域名都能被...