当前位置: 首页 > article >正文

KiLog2MaximumIncrement的由来和KiMaximumIncrementReciprocal的由来


第一部分:KiLog2MaximumIncrement的由来

       i = 1;
        j = KeMaximumIncrement;
        while ((1UI64<<i) <= KeMaximumIncrement) {
            i++;
        }
        KiLog2MaximumIncrement = i;

2^17=131072
2^18=262144
i=18=KiLog2MaximumIncrement
中断多久触发一次? 使用windbg进入内核态,使用nt!KeMaximumIncrement命令查看看它的值 nt!KeMaximumIncrement=2625a=156250
注意,单位为100ns,因此156250*100/1000/1000=15.625ms

第二部分:KiMaximumIncrementReciprocal的由来

        Temp1 = 1UI64 << (KiLog2MaximumIncrement + 32);
        Temp1 /= KeMaximumIncrement;
        Temp1 -= 1UI64<<32;
        Temp1 += 1;
        KiMaximumIncrementReciprocal = (ULONG) Temp1;
        KeTimerReductionModulus = KeMaximumIncrement * TIMER_TABLE_SIZE;
        ASSERT ((KeTimerReductionModulus / TIMER_TABLE_SIZE) == KeMaximumIncrement);
        Temp1 = 1UI64<<32;
        Temp1 %= KeTimerReductionModulus;
        KiUpperModMul = (ULONG) Temp1;

4000000000000(十六进制) = 1125899906842624(十进制)
1125899906842624/156250=7205759403
100000000(十六进制) = 4294967296(十进制)
7205759403-4294967296=2910792107
2910792107+1=2910792108


2910792108(十进制) = AD7F29AC(十六进制)


http://www.kler.cn/a/598195.html

相关文章:

  • 2025年第二期 | CCF ODC《开源战略动态月报》
  • 【leetcode hot 100 51】N皇后
  • JVM如何处理Java中的精度转换: 从源码到字节码
  • 坦克大战(c++)
  • list的模拟实现和学习
  • 数据分析异步进阶:aiohttp与Asyncio性能提升
  • 杨辉三角 II(js实现,LeetCode:119)
  • OSPF多区域通信
  • Js闭包Closure 及 其可能产生的内存泄漏问题
  • C++常见问题与思考
  • js去除后端返回json的冗余字段
  • C语言-状态模式详解与实践 - OTA升级状态机
  • WebSocket:现代实时通信协议的深度解析与实践
  • flask不会随着网页的刷新和关闭停止任务
  • 从失衡到平衡:手撕 AVL 树的插入旋转操作
  • 嵌入式学习(31)-Lora模块A39C-T400A30D1a
  • Transformer中,Fisher矩阵与权重之间关系
  • 开源AI大模型、AI智能名片与S2B2C商城小程序源码:实体店引流的破局之道
  • 新闻发布时间抽取(二)
  • 微调这件小事:训练集中的输入数据该作为instruction还是input?从LLaMA-Factory的源码中寻找答案吧~