windows内核系统结构

2021-12-06 14:24:04 浏览数 (1)

CPU中断

  • 中断号,地址
  • 中断向量,中断号 中断服务
  • 中断服务,执行函数

中断只有使用汇编调用,所以很多C 代码里面会有汇编调用中断

IDT表

cpu通过IDT,找到ISR(中断服务)

windbg的!idt可以查看IDT表

GDT全局描述表

windows分为实模式(内核)和保护模式

  • 实模式,Segment Offset的方式访问,Segment16位(向后兼容,cpu位数增加寄存器位数增加,16位段寄存器数据被写入内存,所以增加了GDT描述段地址、段属性、段界限),每个段地址指向64k(16位cpu)大小,段地址因为左移4位所以地位大都是0,Offset是相对于Segment偏移
  • 保护模式,内存的管理模式分为两种,分段模式(段 偏移)和分页模式

分段内存段间的内存空间太大(16位64k),碎片太多,段 偏移转换为线性地址后,通过分页管理,映射到新的地址空间,页目录 页表 页内偏移(12位4k),减小内存间隙的大小

地址通过三次转换: 逻辑地址(段 偏移)>> 线性地址(分页)>> 物理地址

内核内存管理参考:https://blog.csdn.net/u013928208/article/details/115580324?ops_request_misc=%7B%22request%5Fid%22%3A%22162701749516780271539308%22%2C%22scm%22%3A%2220140713.130102334.pc%5Fall.%22%7D&request_id=162701749516780271539308&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-12-115580324.pc_search_result_control_group&utm_term=idt gdt ldt 分页&spm=1018.2226.3001.4187

LDT局部描述表

任务切换,系统当前的局部描述符表LDT也随之切换,LDT实现了任务间的隔离,GDT可以存放任务共享的段

SSDT表

内核到应用层的函数映射

0 人点赞