第一节 程序是如何跑起来的
- 双击程序运行
- 双击程序 --> 发送请求给操作系统 --> 操作系统根据当前的内存情况为程序分配内存 --> 操作系统将程序加载到内存中 --> 操作系统根据其他程序运行情况在适当情况下提交给处理器 --> 处理器执行程序
- 程序需要根据操作系统的要求来进行编写,不同的操作系统对程序有不同的要求,故不同操作系统之间的软件是不互相兼容的
- 是否可以绕过操作系统使程序运行起来?
- 可以
- 理由:详见本章第五节
第二节 计算机的启动和重启
- 计算机在启动或者重启的时候,处理器会对寄存器执行一个初始化操作
- 代码段寄存器
CS
的值被初始化为FF FF
- 其他寄存器(
IP
)的值被初始化为00 00
- 代码段寄存器
- 初始化工作完成后,处理器会立刻开始机器周期的循环
第三节 BIOS
1MB
并不是指内存大小,而是指处理器可以访问的空间(寻址空间)的大小,与计算机实际内存之间并没有直接联系1MB
的寻址空间从物理上被分为了三大部分:- 大部分用于访问内存(
640KB
) - 剩余部分分给了只读存储器ROM(
64KB
)和外围板卡(320KB
)
- 大部分用于访问内存(
- ROM(Read-Only Memory):只读存储器
- BIOS(Basic Input Output System):基本输入输出系统
- 跳转指令:
- 作用:改变
CS
和IP
的值,让处理器从ROM较低的位置处执行 - 执行
jmp F000:005C
以后, CS
的值变为F000
,IP
的值变为005C
CS
的值左移四位,变为F0000
,加上IP
的值,结果为F005C
,F005C
属于ROM中较低端的位置,从而使得ROM有更多的空间执行指令
- 作用:改变
- 如图可以看出,
FFFF0
距离顶端FFFFF
只有16个字节
的空间,故在FFFF0
处一般为跳转指令,使得程序跳到ROM的底部去执行 - 如果使用的是8086的处理器,分配一块
640KB
大小的内存条刚刚好(8086处理器访问内存的能力只有640KB
)
第四节 硬盘
- 组成:盘片、读写磁头、磁头臂、磁头支架、转轴、扇区、磁道
- 数据存储于硬盘的盘片上,盘片都串于同一根轴(转轴)上,由电动机带动,进行同步旋转
- 除了最上面和最下面的盘片外,其余每个盘片都有上下两个磁头最上面的盘片只有上方一个磁头,最下面的盘片只有下方一个磁头
- 磁头具有编号,从上往下分别为1,2,3,··· 。磁头是一个整体,不能单独移动其中的某一个磁头
- 磁头通过磁头臂固定在支架上,由步进电机带动,同步的在盘片的中心和边缘之间来回移动
- 磁道:磁头在电机带动下围绕圆心所画的圆,由于所有的磁头都是同步的,所以每个盘片都有相同的磁道
- 柱面:将每个盘片上的同一条磁道上下相连,形成柱面
- 作用:优化数据读写
- 磁道和柱面皆具有编号,编号由边缘向圆心的位置编号分别为0,1,2,3,···
- 在硬盘上,数据的访问是以柱面来组织的,数据存储时当每个盘面的同一磁道都完成了存储,数据才会被存入下一磁道中
- 磁道进一步划分为扇区,扇区之间存在一定的间隔,每个扇区都有一个编号,分别为1,2,3,···
- 每个扇区以扇区头开始,扇区头后面是
512个字节
的存储空间(真正存储数据的部分),扇区头包含了每个扇区的信息,比如扇区所在的磁道号、磁头号、扇区号等 - 主引导扇区(硬盘的第一个扇区):0面0道1扇区
第五节 操作系统的自举
- 1、启动或重启计算机,寄存器被初始化
CS
:FFFF
代码段寄存器被初始化为FFFF
IP
:0000
指令指针寄存器被初始化为0000
- 2、初始化完成后,处理器开始进入机器周期的循环,首先到
FFFF0
的位置执行跳转指令(jmp F000:005C
)CS
:F000
代码段寄存器的值被改为F000
IP
:005C
指令指针寄存器的值被改为005C
- 3、处理器到
F005C
的位置(ROM存储器的底部)取指令并执行- 从下往上依次执行
BIOS
中的指令
- 从下往上依次执行
- 4、
BIOS
所做的最后一件事:将主引导扇区中的内容加载到内存地址为7C00
的位置处 - 5、
BIOS
的最后一条指令(跳转指令):JMP 0000:7C00
CS
:0000
代码段寄存器的值被改为0000
IP
:7C00
指令指针寄存器的值被改为7C00
- 6、处理器到
7C00
的位置处执行主引导扇区中的指令- (1)、加载操作系统自举代码到内存中
- (2)、最后通过一条跳转指令,使处理器去执行操作系统的自举代码,启动操作系统
- 处理器如何绕过操作系统使程序运行起来?
- 在第4步的时候,将程序写入主引导扇区中,由主引导扇区加载到内存地址为
7C00
的位置处 - 继续执行第5步的跳转指令,执行
7C00
位置处的程序,此处的程序为绕过操作系统写入的程序 - 引发的问题:主引导扇区中的内容被改写,操作系统无法启动,造成计算机瘫痪
- 在第4步的时候,将程序写入主引导扇区中,由主引导扇区加载到内存地址为
第六节 虚拟机
- 在虚拟机中创建一个虚拟硬盘
第七节 向虚拟硬盘写入数据
- 虚拟硬盘的本质:文件
- 准备:
- 向虚拟硬盘写入数据的软件:
Vhd Writer
- 汇编代码编写的程序(作用:通过汇编代码控制显卡,在屏幕上显示一串字符)
- 向虚拟硬盘写入数据的软件:
- 操作:
- 运行
Vhd Writer
- 点击左下角
选择虚拟硬盘文件
,选中想要写入的虚拟硬盘,点击下一步
,在数据文件
对话框中选择
准备好的汇编程序,点击下一步
,点击写入文件
,看到提示数据写入完成,本次共操作了一个扇区
,点击完成
。 - 启动虚拟机(在虚拟机中创建的虚拟硬盘)
- 运行
选择
准备好的汇编程序,点击下一步
,点击写入文件
,看到提示数据写入完成,本次共操作了一个扇区
,点击完成
。
- 启动虚拟机(在虚拟机中创建的虚拟硬盘)
来源:CSDN
作者:、南、
链接:https://blog.csdn.net/Insist0224/article/details/103726148