从零自制操作系统-第一部分(保护模式)
保护模式
x86
X86架构(The X86 architecture)是计算机语言指令集,指intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合
x86是一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,这个x与处理器没有任何关系,它是一个对所有某某86系统的简单的广泛的定义,例如:i386, 586,奔腾(pentium)。由于早期intel的CPU编号都是如8086,80286来编号(都有86),由于这整个系列的CPU都是指令兼容的,所以都用X86来标识所使用的指令集合.如今的奔腾,P2,P4,赛扬系列都是支持X86指令系统的,所以都属于X86家族 。
X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU–i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器则另外使用X87指令,以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到今天的Pentium 4(以下简为P4)系列,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。
BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"
寄存器
虚拟80806模式
虚拟8086模式又称为虚拟-实模式,允许在保护模式操作系统的控制下执行实模式的程序。
何为保护
保护各个进程所占的内存部分的安全
内存地图
CPU安照内存地图的规则去控制内存的访问
内存中的不同区域可以称之为段(segment)
为了方便CPU管理内存,可以将内存中的每个区域登记到一个表格里(全局描述符表)。然后CPU可以通过全局描述符表(global description table)去了解到该段的一些相关信息
进入保护模式-第一部分
实模式转换到保护模式
只要将CR0寄存器中的PE标志位设置为1,即可进入保护模式
汇编指令为
move eax,cr0
or eax,1
mov cr0,eax
进入保护模式-第二部分
上面三条语句后必须紧跟JMP或CALL指令,否则会出现一些错误
因为当cr0寄存器PE标志位改为1后,将安装32位的形式以流水线方式执行的后面的16位指令,会出现错误,所以此时需要转移指令来对CPU重置一遍