`
javatgo
  • 浏览: 1169242 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

《深入理解Windows操作系统》笔记3

 
阅读更多

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中。



分享到:
评论

相关推荐

    深入解析windows操作系统(第4版)卷3

    本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...

    操作系统笔记

    总的来说,操作系统笔记涵盖了操作系统的基础知识,包括其核心功能、类型、特征以及关键操作,如多道程序设计、中断处理和系统调用,这些都是理解和学习操作系统不可或缺的部分。对于软件专业的学生和开发者而言,...

    操作系统:精髓与设计原理01(读书笔记)

    本笔记最大的特点就是对操作系统的基本概念解释的很清楚;... 最后,这本书比Andrew S.Tanenbaum的那本经典的《现代操作系统》还要更加深入一些,不仅可以让读者入门,还可以让读者对操作系统的理解更加的深刻。

    Windows程序设计读书笔记(合集)

    1. **Windows API**:Windows API是一组函数、数据类型和常量,用于与Windows操作系统进行交互。笔记可能会详细介绍如何使用API函数进行窗口创建、消息处理、内存管理、线程同步等操作。 2. **窗口和消息机制**:...

    深入解析wondows 操作系统教程 微软写的~~~

    根据提供的文件信息,我们可以深入解析关于Windows操作系统的相关内容。标题为“深入解析Windows操作系统教程微软写的~~~”,描述部分提到这是微软编写的操作系统教材。基于这些信息,下面将详细阐述与该教材相关的...

    软件设计师之操作系统笔记

    【操作系统笔记】 操作系统是计算机系统的核心组成部分,它管理和控制计算机硬件及软件资源,为用户提供一个与硬件分离的友好交互界面。在软件设计师的工作中,理解操作系统的基本原理和功能至关重要。 1. 操作系统...

    操作系统面试笔记.pdf

    - **Windows操作系统中的内存管理**: - 物理内存管理 - 虚拟内存管理 - **Unix文件系统的特点**: - 文件权限模型 - 文件系统挂载机制 - **嵌入式操作系统的特点与应用**: - 实时性要求 - 低功耗设计 以上...

    深入浅出MFC读书笔记2

    总的来说,深入浅出MFC读书笔记2涉及的内容包括MFC的框架结构、类库分类、数据类型、全局函数以及链接方式的选择,这些都是理解和使用MFC开发Windows应用程序的基础。通过学习这些知识点,开发者能够更好地利用MFC...

    操作系统:精髓与设计原理02(读书笔记)

    本笔记最大的特点就是对操作系统的基本概念解释的很清楚;... 最后,这本书比Andrew S.Tanenbaum的那本经典的《现代操作系统》还要更加深入一些,不仅可以让读者入门,还可以让读者对操作系统的理解更加的深刻。

    操作系统笔记、题型、知识点等

    首先,操作系统笔记部分可能会涵盖以下几个核心概念: 1. **进程与线程**:进程是程序的执行实例,每个进程都有独立的内存空间。线程是进程内的执行单元,共享同一内存空间,使得多任务并行执行成为可能。理解它们...

    Windows server2003 笔记

    总的来说,《Windows Server 2003 学习笔记》作为备考MCSE的参考资料,提供了全面且深入的Windows Server 2003操作系统的知识体系,对提升IT专业人士的技术能力和解决问题的能力有着极大的帮助。通过这份笔记,读者...

    Windows驱动学习笔记

    总之,“Windows驱动学习笔记”将引导你深入理解Windows驱动程序的工作原理,提供编写、调试和优化驱动程序所需的知识,是IT专业人士提升技术能力的宝贵资料。通过阅读和实践,你可以逐步掌握这个复杂而关键的领域。

    MFC 深入浅出 + 学习笔记

    总的来说,"深入浅出MFC"的学习资源可以帮助开发者从基础到高级全面了解MFC,通过实例和笔记加深理解,从而更高效地开发Windows应用程序。无论是初学者还是有一定经验的程序员,都能从中受益,提升自己的MFC编程能力...

    WINDOWS核心编程_笔记合集.zip

    《WINDOWS核心编程》笔记合集是一份详尽深入的学习资源,涵盖了Windows操作系统内核编程的各个方面。这份资料可能包括了Windows API的底层实现、进程与线程管理、内存管理、I/O操作、设备驱动程序开发等多个关键主题...

    深入浅出MFC学习笔记

    在深入探讨MFC之前,我们先来理解Windows操作系统中的消息机制及其核心组成部分——回调函数。 ##### 1.1 Windows消息机制概述 Windows操作系统采用了一种基于消息的事件驱动模型。这意味着系统的各种事件(比如...

    windows程序设计笔记

    《Windows程序设计》是计算机科学领域的一本经典教材,它深入浅出地讲解了如何在Windows操作系统环境下进行程序开发。这份“windows程序设计笔记”很可能包含了作者在学习和实践中积累的丰富经验和心得,对于我们...

    《操作系统》学习笔记.doc

    操作系统是计算机科学中的核心组成部分,它是管理计算机硬件和软件资源的中心软件,旨在提供一个有效、安全、...学习者应深入理解操作系统如何管理和优化计算机资源,以及如何通过各种机制保证系统稳定、高效地运行。

    深入浅出mfc-笔记

    在深入了解MFC之前,我们首先需要理解Windows操作系统的基本工作原理,尤其是消息驱动模型以及回调函数的概念。 **1.1 Windows消息机制** Windows操作系统本质上是一个基于消息的事件驱动系统。这意味着所有的用户...

    《操作系统真相还原》读书笔记八:获取物理内存容量以及本书源代码

    在阅读《操作系统真相还原》这本书的过程中,我们深入探讨了操作系统的核心机制,其中之一是了解如何获取计算机的物理内存容量。这是操作系统设计与实现中的基础部分,因为它对于系统资源管理至关重要。本章将详细...

Global site tag (gtag.js) - Google Analytics