Win内核
_STONER_
这个作者很懒,什么都没留下…
展开
-
线程调度
WrkKiSwapThread(OldThread, CurrentPrcb){ //单核:从Prcb拿一个新线程,如果没有就选(KiSelectReadyThread)一个,如果再没有就拿Idle NewThread = CurrentPrcb->NextThread //多核:自己还是没有可执行的线程就从其他核去拿,如果有就得看是不是Idle,要是Id原创 2017-06-28 21:32:22 · 373 阅读 · 0 评论 -
线程启动
WrkKeInitThread(KThread, KernelStack, SystemRoutine, StartRoutine, StartContext, ContextFrame, Teb, KProcess){ 1.初始化KThread 2.MmCreateKernelStack 创建内核栈 3.KiInitializeContextThread 构建内核栈原创 2017-06-28 22:04:45 · 287 阅读 · 0 评论 -
C++&系统 异常
User ModeC++ Demo(Debug)int wmain( int argc, WCHAR * argv[]){00DF13C0 push ebp00DF13C1 mov ebp,esp00DF13C3 push 0FFFFFFFEh00DF13C5 push 0DF6EB原创 2017-06-28 22:48:13 · 807 阅读 · 0 评论 -
AWE & PAE
PAE和AWE本质上是无关的东西PAEPAE是需要硬件支持的,32位地址总线变成36条,那么寻址范围从4G变成了64G;此外PDE和PTE中的pfn的范围也大了(页大小没有变),所以PDE和PTE的长度就变了,成了8字节,那么虚址物址映射时,1个页面就只能存512项PDE或PTE,2^9,原来的10+10+12变成了9+9+12少了2位,所以又增加了一级映射,也就是三级映射的成因。如果是LARGE原创 2017-07-02 03:31:24 · 531 阅读 · 0 评论