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

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(十六进制)

相关文章:

  • 策略模式 vs. 工厂模式:对比与分析
  • 15:视图
  • T113-i开发板的休眠与RTC定时唤醒指南
  • git | 回退版本 并保存当前修改到stash,在进行整合。[git checkout | git stash 等方法 ]
  • 【安全运营】安全运营关于告警降噪的一些梳理
  • NO.55十六届蓝桥杯备战|排序|插入|选择|冒泡|堆|快速|归并(C++)
  • Linux-数据结构-双向链表与栈
  • Linux进程间通信方式
  • TypeScript教程
  • python爬虫可能遇到的小bug
  • 【RK3588嵌入式图形编程】-SDL2-渲染文本
  • CSS 文档流:元素排列的底层逻辑与布局控制
  • stm32-ADC
  • 明远智睿SD2351核心板:多接口融合,破解边缘计算难题
  • 关于强化学习小记
  • 玩转 SpringCloud - 快速构建分布式系统详解
  • 第十六届蓝桥杯康复训练--5
  • 排列与二进制
  • 力扣刷题记录-二叉树展开为链表
  • 【2025】基于springboot+vue的教务/课程/成绩管理系统设计与实现(源码、万字文档、图文修改、调试答疑)
  • 新华时评:中国维护国际经贸秩序的立场坚定不移
  • 智利观众也喜欢上海的《好东西》
  • 面对非专业人士,科学家该如何提供建议
  • 国办印发《关于进一步加强困境儿童福利保障工作的意见》
  • “上海之帆”巡展在日本大阪开幕,松江区组织企业集体出展
  • 巴基斯坦信德省首府卡拉奇发生爆炸