设为首页 收藏本站
查看: 772|回复: 0

[经验分享] 《深入理解Windows操作系统》笔记3

[复制链接]

尚未签到

发表于 2016-5-20 11:41:59 | 显示全部楼层 |阅读模式
  X86/X64的页面错误异常号是0xe,页面错误:一个线程企图访问虚拟内存中没有定义的或者已经存在的页面时产生的异常。Windows支持的硬件体系结构允许最多可达256IDT项。一台PC所能支持的中断IRQ数量是由该机器的中断控制器的具体设计决定的。
  由于大多数X86都依赖一个硬件i8259A可编程中断控制器(PIC)在单处理器系统上有15条中断线。
  0:kd>!idt
  DumpingIDT:
  37:806e6864hal!PicSpuriousService37
  3d:806e7e2chal!HalpApcInterrupt
  41:806e7c88hal!HalpDispatchInterrupt
  50:806e693chal!HalpApicRebootService
  62:8a3019548a38ecb8(KINTERRUPT8a301918)
  63:89d3d044NDIS!ndisMIsr(KINTERRUPT89d3d008)
  8a225cb8(KINTERRUPT89cc7bb0)
  73:8a056becVIDEOPRT!pVideoPortInterrupt(KINTERRUPT8a056bb0)
  8a225cb8(KINTERRUPT89cd8938)
  8a225cb8(KINTERRUPT89ccf938)
  83:8a2b6afc8a38ecb8(KINTERRUPT8a2b6ac0)
  8a38ecb8(KINTERRUPT8a2b5bb0)
  NDIS!ndisMIsr(KINTERRUPT89ce2930)
  92:899e1becserial!SerialCIsrSw(KINTERRUPT899e1bb0)
  93:899e8044i8042prt!I8042KeyboardInterruptService(KINTERRUPT899e8008)
  a4:89cdfbec8a225cb8(KINTERRUPT89cdfbb0)
  8a225cb8(KINTERRUPT89cd0bb0)
  b1:8a36f044ACPI!ACPIInterruptServiceRoutine(KINTERRUPT8a36f008)
  8a1d0cb8(KINTERRUPT8a075508)
  b4:89d38bec8a225cb8(KINTERRUPT89d38bb0)
  HDAudBus!AzController::Isr(KINTERRUPT89d32410)
  c1:806e6ac0hal!HalpBroadcastCallService
  d1:806e5e54hal!HalpClockInterrupt
  e1:806e7048hal!HalpIpiHandler
  e3:806e6dachal!HalpLocalApicErrorService
  fd:806e75a8hal!HalpProfileInterrupt
  fe:806e7748hal!HalpPerfInterrupt
  查看PICAPIC
  0:kd>!pic
  -----IRQNumber-----000102030405060708090A0B0C0D0E0F
  Physicallyinservice:YY.Y....YY.Y....
  Physicallymasked:YYY.Y.Y.YYY.Y.Y.
  Physicallyrequested:.Y.Y.....Y.Y....
  0:kd>
  对于本机单CPU双核来看:是否使用了MPSHAL
  lkd>!apic
  Apic@fffe0000ID:1(80050010)LogDesc:02000000DestFmt:ffffffffTPR41
  TimeCnt:0be420e0clkSpurVec:1fFaultVec:e3error:0
  IpiCmd:01000000`00040041Vec:41FixedDelDest=Selfedghigh
  Timer..:00000000`000300fdVec:FDFixedDelDest=Selfedghighm
  Linti0.:00000000`0001001fVec:1FFixedDelDest=Selfedghighm
  Linti1.:00000000`000184ffVec:FFNMIDest=Selflvlhighm
  TMR:63,73,A4,B1,B4
  IRR:
  ISR:
  0:kd>!ioapic
  IoApic@FEC00000ID:0(0)Arb:0
  Inti00.:00000000`00000000Vec:00FixedDelPh:00000000edghigh
  仅在windows2003上菜支持!Irql查看一个处理器的IRQL
  lkd>!pcr
  KPCRforProcessor0atffdff000:
  Major1Minor1
  NtTib.ExceptionList:ffffffff
  NtTib.StackBase:805524f0
  NtTib.StackLimit:8054f700
  NtTib.SubSystemTib:00000000
  NtTib.Version:00000000
  NtTib.UserPointer:00000000
  NtTib.SelfTib:00000000
  SelfPcr:ffdff000
  Prcb:ffdff120
  Irql:00000000
  IRR:00000000
  IDR:ffffffff
  InterruptMode:00000000
  IDT:8003f400
  GDT:8003f000
  TSS:80042000
  CurrentThread:8055ce60
  NextThread:00000000
  IdleThread:8055ce60
  DpcQueue:
  可以使用DDK上头文件中的ntddk.H定义的PCRPRCB的信息。不幸的是在不适用延迟IRQL的系统上,比如本机器AMDAthlon64X26000+windowsXPSP3上就不支持,因此为0,需要至少WINDOWS2003
  http://msdn.microsoft.com/zh-cn/windows/hardware/gg463382
下载安装kernrates软件,进行内核性能剖析程序来分析性能。
  C:\ProgramFiles\SupportTools>cd"c:\ProgramFiles\KrView\Kernrates"
  C:\ProgramFiles\KrView\Kernrates>dir
  驱动器C中的卷没有标签。
  卷的序列号是18F6-A188
  C:\ProgramFiles\KrView\Kernrates的目录
  2012-02-0716:57<DIR>.
  2012-02-0716:57<DIR>..
  2003-11-0716:58269,312Kernrate_i386_Win2000.exe
  2003-11-0716:58129,024Kernrate_i386_XP.exe
  2003-11-0716:59326,656Kernrate_ia64_XP.exe
  3个文件724,992字节
  2个目录146,187,862,016可用字节
  C:\ProgramFiles\KrView\Kernrates>Kernrate_i386_XP.exe
  /==============================\
  <KERNRATELOG>
  \==============================/
  Date:2012/02/07Time:16:58:17
  MachineName:AMD6000
  NumberofProcessors:2
  PROCESSOR_ARCHITECTURE:x86
  PROCESSOR_LEVEL:15
  PROCESSOR_REVISION:4303
  PhysicalMemory:2816MB
  PagefileTotal:2656MB
  VirtualTotal:2047MB
  PageFile1:(null),0MB
  OSVersion:5.1Build2600Service-Pack:3.0
  WinDir:C:\WINDOWS
  KernrateUser-SpecifiedCommandLine:
  Kernrate_i386_XP.exe
  KernelProfile(PID=0):Source=Time,
  UsingKernrateDefaultRateof25000events/hit
  Startingtocollectprofiledata
  ***>Pressctrl-ctofinishcollectingprofiledata
  ------------OverallSummary:--------------
  P0K0:00:08.562(8.8%)U0:00:11.109(11.4%)I0:01:17.703(79.8%)DPC
  0:00:01.656(1.7%)Interrupt0:00:00.062(0.1%)
  Interrupts=142334,InterruptRate=1462/sec.
  P1K0:00:10.562(10.8%)U0:00:06.406(6.6%)I0:01:20.406(82.6%)DPC
  0:00:05.828(6.0%)Interrupt0:00:00.265(0.3%)
  Interrupts=73111,InterruptRate=751/sec.
  TOTALK0:00:19.125(9.8%)U0:00:17.515(9.0%)I0:02:38.109(81.2%)DPC
  0:00:07.484(3.8%)Interrupt0:00:00.328(0.2%)
  TotalInterrupts=215445,TotalInterruptRate=2213/sec.
  TotalProfileTime=97375msec
  BytesStartBytesStopByt
  esDiff.
  AvailablePhysicalMemory,1864134656,2005221376,141086
  720
  AvailablePagefile(s),1864282112,2005024768,140742
  656
  AvailableVirtual,2131689472,2130640896,-1048
  576
  AvailableExtendedVirtual,0,0,
  0
  TotalAvg.Rate
  ContextSwitches,571193,5866/sec.
  SystemCalls,2132527,21900/sec.
  PageFaults,325110,3339/sec.
  I/OReadOperations,11188,115/sec.
  I/OWriteOperations,8299,85/sec.
  I/OOtherOperations,29196,300/sec.
  I/OReadBytes,39124405,3497/I/O
  I/OWriteBytes,16790740,2023/I/O
  I/OOtherBytes,4785210,164/I/O
  -----------------------------
  ResultsforKernelMode:
  -----------------------------
  OutputResults:KernelModuleCount=142
  PercentageinthefollowingtableisbasedontheTotalHitsfortheKernel
  Time69611hits,25000eventsperhit--------
  ModuleHitsmsec%TotalEvents/Sec
  processr608559735987%15626444
  ntkrnlpa4118973755%1057252
  ati2cqag947973591%243172
  hal907973751%232862
  ati2dvag838973591%215182
  PECKP701973591%180003
  win32k654973590%167935
  USBPORT130973590%33381
  athuw81973590%20799
  RtkHDAud38973590%9757
  usbehci38973590%9757
  ati2mtag37973590%9500
  kmixer34973590%8730
  tcpip30973590%7703
  NDIS24973590%6162
  Ntfs23973590%5905
  afd21973590%5392
  Npfs18973590%4622
  portcls15973590%3851
  l151x8613973590%3338
  sptd13973590%3338
  usbhub12973590%3081
  wdf010009973590%2311
  watchdog6973590%1540
  fltMgr6973590%1540
  ipnat5973590%1283
  LiveKdD4973590%1027
  avipbb4973590%1027
  ati3duag3973590%770
  ks3973590%770
  avgntflt2973590%513
  el90xbc52973590%513
  usbohci2973590%513
  wdmaud1973590%256
  sniffer1973590%256
  LMouFilt1973590%256
  mouhid1973590%256
  LHidFilt1973590%256
  HIDPARSE1973590%256
  avkmgr1973590%256
  rdbss1973590%256
  ipsec1973590%256
  psched1973590%256
  TDI1973590%256
  av261r6u1973590%256
  HDAudBus1973590%256
  Mup1973590%256
  CLASSPNP1973590%256
  PartMgr1973590%256
  PCIIDEX1973590%256
  WMILIB1973590%256
  =================================ENDOFRUN==================================
  ==============================NORMALENDOFRUN==============================
  C:\ProgramFiles\KrView\Kernrates>
  由此可见系统在内核模式下花了TOTALK0:00:19.125(9.8%)的时间。碰撞率最高的模块是process,这个是CPU处理器驱动程序。
  在X86的多处理器系统上,IRQ本质上是随机的,但在X64或者IA64上,IRQ16除中断向量号。
  因为windows并没有以任何一种可控的方式对设备IRQ进行优先级处理,而且用户的应用程序只能在处理器的IRQL为被动级别的时候才能执行,所以windows不适合作实时系统。
  声明:真相:windowsXPEmbedded并没有实时特性,而是借助venturcom公司将实时内核内嵌到自定义好的HAL中。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-219554-1-1.html 上篇帖子: Windows下找回mysql管理员密码 下篇帖子: 深入解析Windows系统两大进程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表