摘要: 分页机制概述 分页其实就是内存块的映射管理。在我们之前的章节中,我们都是使用的分段管理模式,处理器中负责分段的部件是段部件,段管理机制是Intel处理器最基本的处理机制,在任何时候都是无法关闭的。而当开启了分页管理之后,处理器会把4GB的内存分成长度相同的段,也就是说用长度固定的页来代替长度不一的段 阅读全文
posted @ 2020-03-30 18:56 放飞梦想C 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 任务切换 任务切换的方法 第一个方法就是借助中断来进行任务切换,这是现代抢占式多任务的基础。在实模式下,内存最低端1KB是中断向量表,保存着256个中断处理过程的段地址和偏移地址。在保护模式下,处理器不再使用中断向量表,而是使用中断描述符表。中段描述符表和GDT,LDT是一样的,用于保存描述符,唯一 阅读全文
posted @ 2020-03-30 18:47 放飞梦想C 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 任务,任务的LDT和TSS 程序是记录在载体上的指令和数据,其正在执行的一个副本,叫做 任务(Task) 。如果一个程序有多个副本正在内存中运行,那么他对应多个任务,每一个副本都是一个任务。为了有效地在任务之间进行隔离,处理器建议每个任务都应该具有他自己的描述符表,称为 局部描述符表LDT(Loca 阅读全文
posted @ 2020-03-30 18:32 放飞梦想C 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 内核结构 内核分为四个部分,分别是初始化代码,内核代码,内核数据段和公共例程段,主引导程序也是初始化代码的组成部分。 初始化代码用于从BIOS那里接管处理器和计算机硬件的控制权,安装最基本的段描述符,初始化最初的执行环境。然后,从硬盘上读取和加载内核的剩余部分,创建组成内核的各个内存段。 内核的代码 阅读全文
posted @ 2020-03-30 17:43 放飞梦想C 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 修改段寄存器时的保护 GDT的基地址和界限,都在寄存器 GDTR 中。描述符在内存中的地址,是用索引号乘以 8,再和描述符表的线性基地址相加得到的,而这个地址必须在描述符表的地址范围内。换句话说,索引号乘以 8 得到的数值,必须位于描述符表的边界范围之内。换句话说,处理器从 GDT 中取某个描述符时 阅读全文
posted @ 2020-03-30 13:12 放飞梦想C 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 全局描述符 和一个段有关的信息需要 8 个字节来描述,所以称为 段描述符(Segment Descriptor) ,每个段都需要一个描述符。为了存放这些描述符,需要在内存中开辟出一段空间。在这段空间里,所有的描述符都是挨在一起,集中存放的,这就构成一个 描述符表 ,最主要的描述符表是 全局描述符表( 阅读全文
posted @ 2020-03-26 13:32 放飞梦想C 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 1. IA 32架构的基本执行环境 1.1 寄存器的扩展 为了在汇编语言程序中使用经过 扩展(Extend) 的寄存器: 在32位模式下,为了生成32位物理地址,处理器需要使用32位的指令指针寄存器。标志寄存器也扩展到32位,第16位和原先保持一致。 32位处理器依然需要以段位单位访问内存,即,只分 阅读全文
posted @ 2020-03-24 19:48 放飞梦想C 阅读(531) 评论(0) 推荐(0) 编辑
摘要: 中断 中断 就是打断处理器当前的执行流程,去执行另外一些和当前工作不相干的指令,执行完之后,还可以返回到原来的程序流程继续执行。 外部硬件中断 顾名思义,外部硬件中断,就是从处理器外面来的中断信号。当外部设备发生错误,或者有数据要传送(比如,从网络中接收到一个针对当前主机的数据包),或者处理器交给它 阅读全文
posted @ 2020-03-23 20:39 放飞梦想C 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 用户程序的结构 NASM编译器使用汇编指令 SECTION 或者 SEGMENT 来定义段。它的一般格式是: NASM 对段的数量没有限制,不过 Intel 处理器要求段在内存中的其实物理地址起码是 16 字节对齐的。相应的在段定义使用: 为了方便取得该段的汇编地址, NASM 编译器提供了以下的表 阅读全文
posted @ 2020-03-23 17:10 放飞梦想C 阅读(621) 评论(0) 推荐(0) 编辑
摘要: Bochs Bochs就像一台真机一样,处理器在加电之后,要开始取指令并执行指令。 如图在左侧显示了该指令所在的物理内存地址 0x0000fffffff0 。 但为什么是 0x0000fffffff0 ?因为和8086不同,现代处理器在加电时,段寄存器CS的内容为,0xF000,指令指针寄存器IP的 阅读全文
posted @ 2020-03-21 17:27 放飞梦想C 阅读(2012) 评论(0) 推荐(0) 编辑