(1)虚拟内存管理
32 位的CPU 的寻址空间是4G , 所以虚拟内存的最大值为4G (2的20次方);
windows 操作系统把这4G 分成2 部分, 即2G 的私有空间和2G 的系统空间, 系统空间是各个进程所共享的, 他存放的是操作系统及一些内核对象等,
而用户空间是分配给各个进程使用的,
虚拟空间:ms_dos 区,私有区代码数据和资源,共享区RING3共享区,系统区RING0共享区
或分为空指针区;win16兼容区;进程代码和数据,内存分配堆,进程栈,用户DLL;内存映射文件,系统DLL(user32.dll,kernel32.dll,gdi32.dll); 操作系统代码
用户空间依次为代码区,数据区,堆区,栈区。
(2)cpu保护模式[具体见WINDOWS 环境下32位汇编语言程序设计]
cup 的工作模式:dos 工作在实模式下,Windows工作在模型保护模式下。
dos: 段寄存器+偏移地址=物理地址
WINDOWS: 段寄存器+偏移量=线性地址=物理地址
以XXXX:YYYYYYYY逻辑地址为例。
80386引入48位全局描述符表寄存器 GDTR ,16为局部描述符表LDTR。
T1==0
GDT(段描述符首地址)+CS,DS,ES,FS,GS,SS(XXXX的高13位用来做索引)->取出段的基地址》+yyyyyyy=线性地址。
T1==1(GDT 段描述符首地址,LDTR给出索引值# 以局部描述符表为首地址+CS,DS.ES.FS.GS,SS(做索引) = 》段的基地址)
(1)GDTR(段描述符首地址)+LDTR(给出索引值)-〉LDT的局部描述符表的首地址信息;(2)LDT(局部描述符表首地址)+CS,DS,ES,FS,GS,SS(XXXX用来做索引)->取出段的基地址》+yyyyyyy=线性地址。
线性地址转换为物理地址
页目录表-》页表-》页内地址(操作系统处理)
(3)Windows运行机理
(4)系统调用流程
(5) 消息流程
(6)堆栈问题
用户栈和内核栈;多个线程栈