KPCR: CPU控制区(Processor Control Region) 当线程进入0环时, FS:[0]指向KPCR(3环时FS[0]-> TEB)每个CPU都有一个KPCR结构体(一个核一个)KPCR中存储了CPU本身要用的一些重要数据: GDT, IDT以及线程相关的一些信息。在winbb ...
分类:
其他好文 时间:
2019-02-26 15:19:51
阅读次数:
175
GDAL中的GDALDataType是一个枚举型,其中的值为:GDT_Unknown : 未知数据类型GDT_Byte : 8bit正整型 (C++中对应unsigned char)GDT_UInt16 : 16bit正整型 (C++中对应 unsigned short)GDT_Int16 : 16... ...
分类:
编程语言 时间:
2019-02-22 11:56:21
阅读次数:
281
GDT临时分段 GDT临时段说明 现在已经进入了保护模式, 目前的改变 可以访问1M以上的内存了 可以使用32位的指令操作 问题: 由于以前的是实式下段寄存器寻址方式无法使用了,我们必须切换到使用GDT段方式来寻址 首要的任务就是先建立一个临时的GDT段,以便我们接下来的指令操作 目前准备建立3个段 ...
分类:
其他好文 时间:
2019-01-05 00:55:22
阅读次数:
219
进入保护模式 [TOC] 进入保护模式 进入保护模式的步骤: 1. 关闭中断,打开地址线A20GATE,使得CPU可以访问1M以上的内存空间。 2. 设置CR0寄存器,进入保护模式。 3. 加载临时GDT 4. 进入保护模式后,首先执行jmp指令。因为内存寻址方式改变,需要刷新指令流水线 打开A20 ...
分类:
其他好文 时间:
2019-01-05 00:54:28
阅读次数:
204
★PART1:进入保护模式 1. 全局描述符表(Global Descriptor Table,GDT) 32位保护模式下,如果要使用一个段,必须先登记,登记的信息包括段的起始地址,段的界限和各种访问属性,如果偏移地址超过了段的界限,就会引发异常中断。和一个段有关的信息需要8个字节来描述,这被称为段 ...
分类:
其他好文 时间:
2018-11-09 16:03:05
阅读次数:
177
系统异常处理 CPU如果调用系统异常处理程序 需要的数据结构 + IDT\_Table: 中断向量表, 在中断向量表中的每一项都是一个中断描述符(中断门或者陷阱门), 一个中断描述符中的几位是段选择符 + GDT或者LDT 处理过程(没有特权变化的情况) + 中断向量号 IDT 中断描述符 段选择子 ...
分类:
其他好文 时间:
2018-10-14 19:18:30
阅读次数:
189
功能 + 定义data段和text段 + 重新手动初始化gdt表, idt表, tss表结构 + 初始化页表和页目录 页目录的数据放在一个页表中 + 在页目录中, 其实地址为0x1000, 初始化页目录, 一个页目录占用的页表的剩余数据值使用0来填充, 一个页表的大小分为(2MB, 4MB, 8MB ...
分类:
其他好文 时间:
2018-10-11 00:02:31
阅读次数:
166
写在前面添油加醋系列第二弹——剖析GDT头文件:https://github.com/bajdcc/MiniOS/blob/master/include/gdt.h实现:https://github.com/bajdcc/MiniOS/blob/master/src/kernel/gdt.c话说C语... ...
分类:
其他好文 时间:
2018-04-30 11:45:50
阅读次数:
181
这部分内容介绍了Dos环境下实模式与保护模式的相互切换实例,该实例通过切入保护模式将指定内存块数据拷贝出来,再切回实模式执行打印,并使用adu.exe进行正确性校验,以此来验证模式切换的正确性。具体代码包括建立VGDTR和GDT、实模式切换到保护模式、数据传送、保护模式切换到实模式、显示缓冲区等内容... ...
分类:
编程语言 时间:
2017-11-19 11:15:21
阅读次数:
251
回顾第五天的GDT和IDT,之前不是很懂这个GDT,IDT,在这一章节的学习后,对第5天的知识进行一个补充。 GDT:全局段号记录表 分段:将4G的内存分成一块一块的,每一块的起始地址都可以当做0来处理。像这样分出来的块,就叫做段。 表示一个段所需要的信息:段的大小,段的起始地址,段的管理属性(禁止 ...
分类:
其他好文 时间:
2017-11-01 13:41:25
阅读次数:
117