摘要: 中断和异常的概述 中断(Interrupt) 中断包括硬件中断和软中断。硬件中断是由外围设备发出的中断信号引发的,以请求处理器提供服务。当I/O接口发出中断请求的时候,会被像8259A和I/O APIC这样的中断寄存器手机,并发送给处理器。硬件中断完全是随机产生的,与处理器的执行并不同步。当中断发生 阅读全文
posted @ 2020-03-30 19:27 放飞梦想C 阅读(500) 评论(0) 推荐(0) 编辑
摘要: 分页机制概述 分页其实就是内存块的映射管理。在我们之前的章节中,我们都是使用的分段管理模式,处理器中负责分段的部件是段部件,段管理机制是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) 编辑