system mechanisms instructor: 許富皓 speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

148
System Mechanisms Instructor: 許許許 Speaker: 許許許 許許許 許許許 0 6 / 0 9 / 2 2 1

Upload: veronica-holmes

Post on 21-Jan-2016

287 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

System Mechanisms

Instructor: 許富皓Speaker: 彭文秈呂坤錡謝英成

04/21/23

1

Page 2: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Outline

Trap Dispatching

Interrupt Dispatching

Hardware Interrupt Processing

x86 Interrupt Controllers

MP Specification

A Logical Diagram of Interrupt Routing

Graphic Explanation of Programmable Interrupt Controller

x86 APIC architecture

x64 Interrupt Controllers2

Page 3: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Outline (Cont.)

Predefined IRQLs

IA64 Interrupt Controllers

SAPIC

Software Interrupt Request Levels (IRQLs)

Mapping Interrupts to IRQLs

Predefined IRQLs

Interrupt Objects

Software Interrupts

Deferred Procedure Call

The DPC Object-TechNet3

Page 4: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Outline (Cont.)

Interrupt Control Flow-TechNet

Advanced DPCs-TechNet

Asynchronous Procedure Call (APC)Interrupts

Process Explorer v11.12

Tool-Windbg

WDK Documentation

KrView

4

Page 5: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

5

Page 6: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Trap Dispatching

The term trap refers to a processor’s mechanism for capturing Exceptions Interrupts

And then transfer control to a fixed location

In Windows, the processor transfers control to a trap handler

6

Page 7: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Trap Dispatching (Cont.)

7

Page 8: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Trap Dispatching (Cont.)

Exceptions or interrupts occur Processor records enough machine state on the kernel

stack of the interrupted thread So that it can return to that point in the control flow

and continue execution

If thread was executing in user mode Windows switches to kernel-mode stack Then creates a trap frame on the kernel stack store the execution state of the thread

8

Page 9: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Trap Dispatching (Cont.)

Trap Frame(Store the execution state of the thread)

9

Kernel Stack of Threads

Page 10: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Dispatching

Hardware-generated interrupts I/O devices Notify the processor to serve

Interrupt-driven devices allow the operating system to get the maximum use out of the processor by overlapping central processing with I/O operations

10

Page 11: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Dispatching (Cont.)

Software-generated interrupts Initiate thread dispatching

Kernel disable interrupts Infrequently At critical moments e.g. Processing interrupts or dispatching exceptions

11

Page 12: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Dispatching (Cont.)

The kernel installs interrupt trap handlers Interrupt trap handlers transfer control either to an

external routine (the ISR) provided by device driver Or an internal kernel routine that responds to the

interrupt

ISRs is to serve device interrupts

Kernel provides interrupt handling routines for other types of interrupts

12

Page 13: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Controller

translate IRQ into interrupt

number

As an index into a structure

called interrupt dispatch table

(IDT)

transfers control to

the appropriate interrupt

dispatch routine

Hardware Interrupt Processing

13

External interrupts come into one of the lines on interrupt controllers and in turn interrupts the processor on a single line

Page 14: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Hardware Interrupt Processing (Cont.)

Mapping hardware IRQs to interrupt numbers in the IDT

System also uses the IDT to configure trap handlers for exceptions

Although Windows allow up to 256 IDT entries, the number of IRQs is determined by the interrupt controller

14

Page 15: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

In a multiprocessor system, each processor has a separate IDT so that different processors can run different ISRs

E.g.: Each processor receives the clock interrupt but only one processor updates the system clock in response to this interrupt

Some system might require a particular processor handle certain device interrupts

15

Hardware Interrupt Processing (Cont.)

Page 16: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

x86 Interrupt Controllers

i8259A Programmable Interrupt Controller (PIC) Originate with the original IBM PC For uni-processor systems 15 interrupt lines

A variant of the i82489 Advanced Programmable Interrupt Controller (APIC) For multiprocessor systems 256 interrupt lines Multiprocessor Specification (MP Specification)

16

Page 17: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

MP Specification

17

Page 18: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

MP Specification (Cont.)

18

Page 19: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

x86 Interrupt Controllers (Cont.)

APICs also supports a PIC compatibility mode with 15 interrupts and delivery of interrupts to only the primary processorThe I/O APIC is responsible Implementing interrupt routing

Software-Selectable or Hardware abstraction layer (HAL) Balance the device interrupt load Attempt to take advantage of locality, delivering device

interrupts

19

Page 20: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

A Logical Diagram of Interrupt Routing

20

Page 21: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Graphic Explanation of Programmable Interrupt Controller

21Hardware Device

H ControllerHardware Device

X Controller

Hardware Device A Controller

CPU

IF

I/O port (Vector) I/O port (ACK)

Master PIC

7 6 5 4 3 2 1 0

I/O port (Vector) I/O port (ACK)

Slave PIC

7 6 5 4 3 2 1 0

INT

IRQ 8

data bus

IRQ 15IRQ 1

INTR

INT

Page 22: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

HAL (Hardware Abstraction Layer)

Kernel

User GDI

Device Drivers

CLR Network Classes

WindowsForms

ASP.NET ADO.NET“Avalon” “WinFS” “Indigo”

Colla

bora

tion S

erv

ices

Base Services

IO Mgr

Storage

Secu

rity

Tra

nsa

ction

Serv

ices

Direct X

Graphics / Audio / Window Manager

Network ServicesMgmtServices

NDIS

network protocol stack

Page 23: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

x86 APIC architecture

CPU 0 CPU 1

LocalAPIC

LocalAPIC

I/OAPIC

I8259A- Equivalent

PIC

Device Interrupts

Page 24: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

x64 Interrupt Controllers

x64 architecture is compatible with x86 operating systems x64 provides the same interrupt controllers as x86

A significant differencex64 versions of Windows will not run on systems without an APIC

24

Page 25: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

IA64 Interrupt Controllers

Streamlined Advanced Programmable Interrupt Controller (SAPIC)

25

APIC SAPIC

Interrupts delivery private APIC bus I/O bus and system bus

interrupt routing and load balancing

handled bythe APIC bus on an APIC

system

1.Doesn’t have a private APIC bus2.Requires firmware3.Even if load balancing and routingare present in the firmware, Windows does not take advantage of it; instead, it staticallyassigns interrupts to processors in a round-robin manner

Page 26: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

SAPIC

Page 27: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Software Interrupt Request Levels (IRQLs)

Interrupt controllers perform interrupt prioritization

Windows has its own interrupt priority scheme known as interrupt request levels (IRQLs)

IRQLs as a number from 0 to 31 on x86 from 0 to 15 on x64 and IA64

27

Page 28: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Higher numbers means higher-priority interrupts

Although the kernel defines the standard set of IRQLs for software interrupts, the HAL maps hardware-interrupt numbers to the IRQLs

28

Software Interrupt Request Levels (IRQLs)

Page 29: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

29

Software Interrupt Request Levels (IRQLs)

Thread Scheduler

All threads

Page 30: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

IRQL IRQL value Descriptionx86 IA64 AMD64PASSIVE_LEVEL 0 0 0 User threads and most kernel-mode operations

APC_LEVEL 1 1 1 Asynchronous procedure calls and page faults

DISPATCH_LEVEL 2 2 2 Thread scheduler and deferred procedure calls (DPCs)

CMC_LEVEL N/A 3 N/A Correctable machine-check level (IA64 platforms only)

Device interrupt levels (DIRQL)

3-26 4-11 3-11 Device interrupts

PC_LEVEL N/A 12 N/A Performance counter (IA64 platforms only)

PROFILE_LEVEL 27 15 15 Profiling timer for releases earlier than Windows 2000

SYNCH_LEVEL 27 13 13 Synchronization of code and instruction streams across processors

CLOCK_LEVEL N/A 13 13 Clock timer

CLOCK2_LEVEL 28 N/A N/A Clock timer for x86 hardware

IPI_LEVEL 29 14 14 Interprocessor interrupt for enforcing cache consistency

POWER_LEVEL 30 15 14 Power failure

HIGH_LEVEL 31 15 15 Machine checks and catastrophic errors; profiling timer for Windows XP and later releases

Software Interrupt Request Levels (IRQLs)

Page 31: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

31

Software Interrupt Request Levels (IRQLs)

Page 32: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Software Interrupt Request Levels (IRQLs)

Interrupts are serviced in priority order

A higher-priority interrupt preempts the servicing of a lower-priority interrupt

When a high-priority interrupt occurs Processor saves the interrupted thread’s state Invoke the trap dispatchers associated with the

interrupt

32

Page 33: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Trap dispatcher raises the IRQL Call the interrupt’s service routine

After the service routine executes Interrupt dispatcher lowers the processor’s IRQL to

where it was before the interrupt occurred and then loads the saved machine state

The interrupted thread resumes executing where it left off

33

Software Interrupt Request Levels (IRQLs)

Page 34: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

When the kernel lowers the IRQL, lower-priority interrupts that were masked might materialize If this happens, the kernel repeats the process to handle

the new interrupts

34

Software Interrupt Request Levels (IRQLs)

Page 35: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

IRQL priority levels have a completely different meaning than thread-scheduling priorities A scheduling priority is an attribute of a thread An IRQL is an attribute of an interrupt source, such as a

keyboard or a mouse

35

Software Interrupt Request Levels (IRQLs)

Page 36: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

In addition, each processor has an IRQL setting that changes as operating system code executes

Each processor’s IRQL setting determines which interrupts that processor can receive

IRQLs are also used to synchronize access to kernel-mode data structures

36

Software Interrupt Request Levels (IRQLs)

Page 37: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

As a kernel-mode thread runs, it raises or lowers the processor’s IRQL Directly calling KeRaiseIrql and KeLowerIrql Indirectly calls to functions that acquire kernel

synchronization objects

37

Software Interrupt Request Levels (IRQLs)

Page 38: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Software Interrupt Request Levels (IRQLs)

38

• interrupts from a source with an IRQL above the current level

– Interrupt the processor

• interrupts from sources with IRQLs equal to or below the current level

– Masked until an executing thread lowers the IRQL

Synchronization method is needed due to shared data structure among multi-thread

Page 39: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Accessing a PIC is a slow operation, HALs that use a PIC implement a performance optimization called lazy IRQL, that avoids PIC accesses

When the IRQL is raised, the HAL notes the new IRQL internally instead of changing the interrupt mask

39

Software Interrupt Request Levels (IRQLs)

Page 40: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

If a lower-priority interrupt occurs, the HAL Sets the interrupt mask to the settings appropriate for

the first interrupt Postpones the lower-priority interrupt until the IRQL is

lowered

If no lower-priority interrupts occur while the IRQL is raised the HAL doesn’t need to modify the PIC

40

Software Interrupt Request Levels (IRQLs)

Page 41: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

A kernel-mode thread raises and lowers the IRQL of the processor on which it’s running, depending on what it’s trying to do

All components of the system, including the kernel and device drivers Attempt to keep the IRQL at passive level Because device drivers can respond to hardware

interrupts in a timelier manner if the IRQL isn’t kept unnecessarily elevated for long periods

41

Software Interrupt Request Levels (IRQLs)

Page 42: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

An exception to the rule that raising the IRQL blocks interrupts of that level and lower relates to APC_LEVEL interrupts If a thread raises the IRQL to APC_LEVEL and then is

rescheduled because of a DISPATCH_LEVEL interrupt, the system might deliver an APC_LEVEL interrupt to the newly scheduled thread. Thus, APC_LEVEL can be considered a thread-local rather than processor-wide IRQL

42

Software Interrupt Request Levels (IRQLs)

Page 43: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Software Interrupt Request Levels (IRQLs)

APC_LEVEL is a thread-specific IRQL Most commonly associated with paging I/O

Applications cannot suspend code that is running at IRQL=APC_LEVEL System implements fast mutexes (a type of

synchronization mechanism) at APC_LEVELKeAcquireFastMutex routine raises the IRQL to

APC_LEVELKeReleaseFastMutex returns the IRQL to its original value

43

Page 44: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Change a processor’s IRQL Only in kernel mode IRQL is always at passive level when it’s executing

user mode code IRQL can be higher Only when the processor is

executing kernel-mode code

44

Software Interrupt Request Levels (IRQLs)

Page 45: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Each interrupt level has a specific purpose Inter-processor interrupt (IPI)

request another processor perform an action– E.g.: Dispatching a particular thread for execution or updating its

translation look-aside buffer cache

Clock interrupt Kernel updates the clock and measuring thread execution time

– E.g.: If a hardware platform supports two clocks, the kernel adds another clock interrupt level to measure performance

The kernel uses software interrupts Initiate thread scheduling Asynchronously break into a thread’s execution

45

Software Interrupt Request Levels (IRQLs)

Page 46: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Mapping Interrupts to IRQLs

IRQL levels aren’t the same as the interrupt requests (IRQs) defined by interrupt controllers

How does Windows determine what IRQL to assign to an interrupt?

The answer is in the HAL

46

Page 47: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Mapping Interrupts to IRQLs (Cont.)

In Windows, a type of device driver called a bus driver determines Presence of devices on its bus (PCI, USB…etc) What interrupts can be assigned to a device

The bus driver reports this information to the Plug and Play manager After taking into account the acceptable interrupt

assignments for all other devices, which interrupt will be assigned to each device

47

Page 48: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Mapping Interrupts to IRQLs (Cont.)

Then it calls the HAL function HalpGetSystemInterruptVector, which maps interrupts to IRQLs

48

Page 49: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Plug and Play Architecture

49

Page 50: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

The algorithm for assignment differs for the various HALs that Windows includes

x86 uni-processor the IRQL of a given interrupt vector is calculated by

subtracting the interrupt vector from 27 E.g.: interrupt vector 5, its ISR executes at IRQL 22

50

Mapping Interrupts to IRQLs (Cont.)

Page 51: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

x86 multiprocessor systemAPICs support over 200 interrupt vectors

It isn’t enough IRQLs for a one-to-one mapping

HAL assigns IRQLs to interrupt vectors in a round-robin manner cycling through the device IRQL (DIRQL) range

It isn’t easy to know what IRQL assigns to APIC IRQs

x64 and IA64 systemsIRQL assignment

Divide the interrupt vector assigned to the IRQ by 16 51

Mapping Interrupts to IRQLs (Cont.)

Page 52: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Predefined IRQLs

52

• High level – when kernel halts the

system in KeBugCheckEx and masking out all interrupts

• Power fail level– power failure code

never been used

Page 53: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Predefined IRQLs (Cont.)

Inter-processor interrupt level Request another processor to perform an action Queue a DISPATCH_LEVEL interrupt to schedule a

particular thread for execution Updating TLB cache System shutdown System crash

53

Page 54: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Clock level Track the time of day Measure and allot CPU time to threads

Profile level System’s real-time clock uses it when kernel profiling-

a performance measurement mechanism Kernel’s profiling trap handler records the address of the

code that was executing when the interrupt occurred. A table of address samples is constructed over time that tools can extract and analyze

54

Predefined IRQLs (Cont.)

Page 55: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

device IRQLs Prioritize device interrupts

DPC/dispatch-level and APC-level interrupts Software interrupts that the kernel and device drivers

generate

passive level Not an interrupt level It’s the setting at which normal thread execution takes

place and all interrupts are allowed to occur

55

Predefined IRQLs (Cont.)

Page 56: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

One important restriction on code running at DPC/dispatch level or above is that it can’t wait for an objectIf doing so Necessitate scheduler to select threads to execute

It is an illegal operation Scheduler synchronizes its data structures at

DPC/dispatch level and cannot be invoked to perform a reschedule

56

Predefined IRQLs (Cont.)

Page 57: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Another restriction is that only non-paged memory can be accessed at IRQL DPC/dispatch level or higherThis rule is actually a side-effect of the first restriction because attempting to access memory that isn’t resident results in a page faultWhen a page fault occurs, the memory manager initiates a disk I/O and then needs to wait for the file system driver to read the page in from disk

57

Predefined IRQLs (Cont.)

Page 58: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

This wait would in turn require the scheduler to perform a context switch (perhaps to the idle thread if no user thread is waiting to run), thus violating the rule that the scheduler can’t be invoked (because the IRQL is still DPC/dispatch level or higher at the time of the disk read). If either of these two restrictions is violated, the system crashes with an IRQL_NOT_LESS_OR_EQUAL crash code

58

Predefined IRQLs (Cont.)

Page 59: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Violating these restrictions is a common bug in device drivers

Chapter 7, has an option you can set to assist in finding this particular type of bug

59

Predefined IRQLs (Cont.)

Page 60: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects

Kernel provides a portable mechanism—a kernel control objectAllow device drivers to register ISR for devicesAn interrupt object contains information associates ISR with a particular level of interrupt Address of the ISR IRQL at which the device interrupts Entry in the kernel’s IDT with which the ISR should be

associated

60

Page 61: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

Initialization of an interrupt object a few instructions of assembly language code called the

dispatch code copied from an interrupt handling template - KiInterruptTemplate

Stored in the object

When an interrupt occurs, this code is executed

61

Page 62: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

This interrupt-object resident code calls the real interrupt dispatcher KiInterruptDispatch or KiChainedDispatch routine KiInterruptDispatch is the routine for interrupt vectors

used for only one interrupt object KiChainedDispatch is for vectors shared among

multiple interrupt objects

Pass it a pointer to the interrupt object

62

Page 63: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

The interrupt object contains information this second dispatcher routine needs to locate and properly call the ISR the device driver provides

The interrupt object also stores the IRQL associated with the interrupt so that KiInterruptDispatch or KiChainedDispatch can Raise the IRQL to correct level before calling ISR Lower the IRQL after the ISR has returned

63

Page 64: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

64

Page 65: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

Two-step process is required

There’s no way to pass a pointer to the interrupt object (or any arguments) on the initial dispatch

Because the initial dispatch is done by hardware Multi-processor system, the kernel allocates and

initializes an interrupt object for each CPU, enabling the local APIC on that CPU to accept the particular interrupt

65

Page 66: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

Associating an ISR with a particular level of interrupt is called connecting an interrupt object Call kernel function- IoConnectInterrupt Allow a device driver to “turn on” an ISR when the

driver is loaded into the system

Dissociating an ISR from an IDT entry is called disconnecting an interrupt object Call kernel function- IoDisconnectInterrupt “turn off” the ISR if the driver is unloaded

66

Page 67: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

Pro. Prevents device drivers from fiddling directly with

interrupt hardware No need to know any details about the IDT Aid in creating portable device drivers

Eliminating the need to code in assembly language or to reflect processor differences in device drivers

Kernel can synchronize the execution of the ISR with other parts of a device driver that might share data with the ISR

67

Page 68: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

Interrupt objects allow the kernel to easily call more than one ISR for any interrupt level

If multiple device drivers create interrupt objects and connect them to the same IDT entry, the interrupt dispatcher calls each routine when an interrupt occurs at the specified interrupt line

Allowing the kernel to easily support “daisy-chain” configurations, in which several devices share the same interrupt line

68

Page 69: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

The chain breaks when one of the ISRs claims ownership for the interrupt by returning a status to the interrupt dispatcher

69

Page 70: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

If multiple devices sharing the same interrupt require service at the same time, devices not acknowledged by their ISRs will interrupt the system again once the interrupt dispatcher has lowered the IRQL

70

Page 71: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

Chaining is permitted only if all the device drivers wanting to use the same interrupt indicate to the kernel that they can share the interrupt; if they can’t, the Plug and Play manager reorganizes their interrupt assignments to ensure that it honors the sharing requirements of each

71

Page 72: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Objects (Cont.)

If the interrupt vector is shared, the interrupt object invokes KiChainedDispatch, which will invoke the ISRs of each registered interrupt object in turn until one of them claims the interrupt or all have been executed

72

Page 73: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Software Interrupts

Initiating thread dispatching

Non-time-critical interrupt processing

Handling timer expiration

Asynchronously executing a procedure in the context of a particular thread

Supporting asynchronous I/O operations

73

Page 74: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

74

Page 75: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

ISRs must execute as quickly as possible, drivers must usually postpone the completion of servicing an interrupt until after the ISR returns System provides support for deferred procedure calls

(DPCs), which can be queued from ISRs and which are executed at a later time and at a lower IRQL than the ISR (msdn)

I/O Manager DPCs (Microsoft TechNet) Kernel DPCs (Microsoft TechNet)

75

Page 76: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

Dispatch or Deferred Procedure Call (DPC) Interrupts When a thread can

No longer continue executing Terminate Enter a wait state

Kernel calls the dispatcher directly to context switch

76

Page 77: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

Kernel always raises the processor’s IRQL to DPC/dispatch level or above When kernel needs to synchronize access to shared

kernel structures This disables additional software interrupts and

thread dispatching

77

Page 78: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

When the kernel detects that dispatching should occur, it requests a DPC/dispatch-level interrupt But IRQL is now at or above that level, the processor

holds the interrupt in check

When the kernel completes its current activity, it is going to Lower the IRQL below DPC/dispatch level Check to see any dispatch interrupts are pending

78

Page 79: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

If there are interrupts are pending IRQL drops to DPC/dispatch level Dispatch interrupts are processed

Activating the thread dispatcher by using a software interrupt is a way to defer dispatching until conditions are right

Windows uses software interrupts to defer other types of processing as well

79

Page 80: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

In addition to thread dispatching, the kernel also processes deferred procedure calls (DPCs) at this IRQL

A DPC is a function that performs a system task that is less time-critical than the current one

The functions are called deferred because they might not execute immediately

80

Page 81: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

DPCs provide the operating system with Capability to generate an interrupt Execute a system function in kernel mode

Kernel uses DPCs Process timer expiration Release threads waiting for the timers Reschedule the processor after a thread’s quantum

expires

Device drivers use DPCs to complete I/O requests

81

Page 82: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

To provide timely service for hardware interrupts Windows-With the cooperation of device drivers—attempts

to keep the IRQL below device IRQL levels(DIRQL)

One way to achieve this goal is For device driver ISRs to

Perform the minimal work necessary to acknowledge their deviceSave volatile interrupt stateDefer data transfer or other less time-critical interrupt processing

activity for execution in a DPC at DPC/dispatch IRQL

82

Page 83: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

A DPC is represented by a DPC object Is a kernel control object

Not visible to user-mode programsVisible to device drivers and other system code

The most important information of DPC object Is the address of the system function that the kernel

will call when it processes the DPC interrupt

83

Page 84: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

DPC routines that Are waiting to execute Stored in kernel-managed queues, one per processor,

called DPC queues

To request a DPC System code calls the kernel to initialize a DPC object And places DPC in a DPC queue

84

Page 85: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

Kernel places DPC objects at the end of the DPC queue of the processor on which the DPC was requested

A device driver can specify a DPC priority Low Medium- the default priority High By targeting the DPC at a particular processor

85

Page 86: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

A DPC aimed at a specific CPU is known as a targeted DPC

DPC has a low or medium priority Kernel places the DPC object at the end of the queue

DPC has a high priority Kernel inserts the DPC object at the front of the queue

86

Page 87: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

When the processor’s IRQL is about to Drop from an IRQL of DPC/dispatch level or higher to a

lower IRQL (APC or passive level) The kernel processes DPCs

Windows ensures that the IRQL remains at DPC/dispatch level Pulls DPC objects off the current processor’s queue until

the queue is empty, calling each DPC function in turn Only when the queue is empty will the kernel let the IRQL

drop below DPC/dispatch level and let regular thread execution continue

87

Page 88: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

88

Page 89: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

89

Page 90: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

DPC priorities can affect system behavior another way The kernel usually initiates DPC queue draining with a

DPC/dispatch-level interrupt

The kernel generates such an interrupt only if DPC is directed at the processor the ISR is requested on DPC has a high or medium priority

90

Page 91: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

If the DPC has a low priority, the kernel requests the interrupt only if the number of outstanding DPC requests for the

processor rises above a threshold Or the number of DPCs requested on the processor

within a time window is low

91

Page 92: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

If a DPC is targeted at a CPU different from the one on which the ISR is running and the DPC’s priority is high, Kernel immediately signals the target CPU (by sending

it a dispatch IPI) to drain its DPC queue

92

Page 93: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

If the priority is medium or low Number of DPCs queued on the target processor must

exceed a threshold for the kernel to trigger a DPC/dispatch interrupt.

The system idle thread also drains the DPC queue for the processor it runs on

93

Page 94: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

Although DPC targeting and priority levels are flexible, device drivers rarely need to change the default behavior of their DPC objects

94

Page 95: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

User-mode threads execute at low IRQL A DPC will interrupt the execution of an ordinary

user’s thread

DPC routines execute without regard to what thread is running Means that when a DPC routine runs, it can’t assume

what process address space is currently mapped

95

Page 96: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

DPC routines can call kernel functions , but they can’t Call system services Generate page faults Create or wait for dispatcher objects

They can access non-paged system memory addresses Because system address space is always mapped

regardless of what the current process is

96

Page 97: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

DPCs are provided primarily for device drivers But the kernel uses them too

Kernel most frequently uses a DPC to handle Quantum expiration

At every tick of the system clock, an interrupt occurs at clock IRQL The clock interrupt handler (running at clock IRQL)

Update the system time Decrements a counter that tracks how long the current

thread has run97

Page 98: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

When the counter reaches 0 Thread’s time quantum has expired Kernel might need to reschedule the processor, a

lower-priority task that should be done at DPC/dispatch IRQL

98

Page 99: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Deferred Procedure Call(Cont.)

The clock interrupt handler queues a DPC to Initiate thread dispatching Finish its work Lowers the processor’s IRQL

Because the DPC interrupt has a lower priority than do device interrupts, any pending device interrupts that surface before the clock interrupt completes are handled before the DPC interrupt occurs

99

Page 100: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Advanced DPCs-TechNet

Interrupt servicing ISR Deferred Procedure Call (DPC)

ISR's execute at IRQL's above DISPATCH_LEVEL in the DIRQL range

One of NT's design goals is Spend as little time as possible at elevated IRQL, ISR's

usually perform minimal interactions with their devices, normally just reading some state and getting the device to stop interrupting 100

Page 101: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Advanced DPCs-TechNet

The mechanism by which an ISR can finish processing at a lower IRQL is a DPC

Some time after an ISR requests a DPC, its DPC function will be called by NT at DISPATCH_LEVEL Restrictions at DISPATCH_LEVEL (e.g. touching pageable

memory or blocking the thread) Virtually nothing can be done from within an ISR

It’s always possible to queue a worker thread work-item from a DPC so that interrupt processing can continue at PASSIVE_LEVEL

101

Page 102: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

The DPC Object-TechNettypedef struct {

SHORT Type;

UCHAR Number;

UCHAR Importance;

LIST_ENTRY DpcListEntry; PKDEFERRED_ROUTINE DeferredRoutine; PVOID DeferredContext;

PVOID SystemArgument1;

PVOID SystemArgument2;

PULONG Lock;

} KDPC, *PKDPC; 102

Page 103: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Interrupt Control Flow-TechNet

103

Page 104: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Asynchronous Procedure Call (APC) InterruptsAsynchronous procedure calls (APCs) provide a way for user programs and system code to execute in the context of a particular user thread Because APCs are queued to execute

In the context of a particular threadRun at an IRQL less than DPC/dispatch level, they don’t

operate under the same restrictions as a DPC

APC routine can Acquire resources Wait for object handles Incur page faults Call system services

104

Page 105: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Asynchronous Procedure Call (APC) Interrupts

APCs are described by a kernel control object called an APC object

APCs waiting to execute reside in a kernel-managed APC queue Unlike the DPC queue, which is system-wide, the APC

queue is thread-specific—each thread has its own APC queue

105

Page 106: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

When asked to queue an APC Kernel inserts it into the queue belonging to the thread

that will execute the APC routine

The kernel, in turn, requests a software interrupt at APC level When the thread eventually begins running, it

executes the APC

106

Asynchronous Procedure Call (APC) Interrupts

Page 107: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Two kinds of APCs Kernel mode

Kernel-mode APCs don’t require “permission” from a target thread to run in that thread’s context, while user-mode APCs do

Kernel-mode APCs interrupt a thread and execute a procedure without the thread’s intervention or consent

– Two types of kernel-mode APCs:

» normal APCs and special APCs Disable both types by raising the IRQL to APC_LEVEL or by calling

KeEnterGuardedRegion, KeEnterGuardedRegionThread disables APC delivery by setting the SpecialApcDisable field in the calling thread’s KTHREAD structure.

Disable normal APCs only by calling KeEnterCriticalRegion, which sets the KernelApcDisable field in the thread’s KTHREAD structure

User mode 107

Asynchronous Procedure Call (APC) Interrupts

Page 108: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

The executive uses kernel-mode APCs to perform operating system work that must be completed within the address space of a particular thread

By using special kernel-mode APCs to Direct a thread to stop executing an interruptible

system service Or to record the results of an asynchronous I/O

operation in a thread’s address space

108

Asynchronous Procedure Call (APC) Interrupts

Page 109: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Asynchronous Procedure Call (APC) Interrupts

Environment subsystems using special kernel-mode APCs to Make a thread suspend or terminate itself or to get or

set its user-mode execution context The POSIX subsystem uses kernel-mode APCs to

emulate the delivery of POSIX signals to POSIX processes

109

Page 110: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Kernel-mode APCs for Device drivers If an I/O operation is initiated and a thread goes into a

wait stateAnother threads in another process can be scheduled to run

When the device finishes transferring data, the I/O system must get back into the context of the thread that

initiated the I/OCopy the results of the I/O operation to the buffer in the

address space of the process containing that thread

110

Asynchronous Procedure Call (APC) Interrupts

Page 111: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Several Windows APIs ReadFileEx, WriteFileEx, and QueueUserAPC, use user-mode

APCs ReadFileEx and WriteFileEx functions allow the caller to

specify a completion routine to be called when the I/O operation finishes

The I/O completion is implemented by queuing an APC to the thread that issued the I/O

The callback to the completion routine doesn’t necessarily take place when the APC is queued because user-mode APCs are delivered to a thread only when it’s in an alertable wait state

111

Asynchronous Procedure Call (APC) Interrupts

Page 112: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

A thread can enter a wait state either by Waiting for an object handle and specifying that its wait is

alertable (WaitForMultipleObjectsEx function) Or Testing directly whether it has a pending APC

(SleepEx)

In both cases, if a user-mode APC is pending, the kernel interrupts (alerts) the thread, transfers control to the APC routine, and resumes the thread’s execution when the APC routine completes

Kernel-mode APCs execute at APC level

User-mode APCs execute at passive level112

Asynchronous Procedure Call (APC) Interrupts

Page 113: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

APC delivery can reorder the wait queues If the thread is in a wait state when an APC is

delivered, after the APC routine completes, the wait is reissued or re-executed

If the wait still isn’t resolved, the thread returns to the wait state, but now it will be at the end of the list of objects it’s waiting for

113

Asynchronous Procedure Call (APC) Interrupts

Page 114: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

For example, because APCs are used to suspend a thread from execution

If the thread is waiting for any objects, its wait will be removed until the thread is resumed, after which that thread will be at the end of the list of threads waiting to access the objects it was waiting for

114

Asynchronous Procedure Call (APC) Interrupts

Page 115: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Download site: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Process Explorer

115

Page 116: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Tool-Windbg

116

Page 117: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

Tool-Windbg (Cont.)

117

Page 118: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

WDK Documentation

Download site: http://www.microsoft.com/whdc/DevTools/WDK/WDKdocs.mspx

118

Page 119: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

WDK Documentation (Cont.)

119

Page 120: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

KrView

120

Page 121: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

KrView (Cont.)

121

Page 122: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

122

Exception Dispatching

Page 123: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

123

Structured Exception Handling (1)

Windows introduced a facility known as structured exception handling When (exceptions occur)

Allows applications to gain control

Application can fix condition and Return to the place the exception occurred, Unwind the stack (terminating execution of the subroutine that raised the

exception), Or declare back to the system that the exception isn’t recognized and the

system should continue searching for an exception handler that might process the exception.

Page 124: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

124

Structured Exception Handling (2)

Although exception handling is made accessible through language extensions It is a system mechanism Not language-specific.

On x86 all exceptions have predefined interrupt numbers that directly correspond to

the entry in the interrupt dispatch table (IDT).

Table on next page shows x86-defined exceptions Interrupt numbers

Because first entries of IDT are used for exceptions Hardware interrupts are assigned entries later

Page 125: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

125

Page 126: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

126

Exception Dispatcher

Many exceptions are serviced by kernel module -- exception dispatcher

Other simple exceptions are resolved by trap handler.

Exception dispatcher’s job is to find an exception handler to handle the exception.

Page 127: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

127

Kernel Handle Exception

Kernel traps and handles exceptions to user programs.For example, encountering a breakpoint while executing a program being debugged generates an exception, which the kernel handles by calling the debugger.Kernel handles certain other exceptions by returning unsuccessful state code to caller.

Page 128: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

128

Stack Frame

A few exceptions are allowed to filter back, untouched, to user mode. For example, a memory access violation or an arithmetic overflow generates an

exception.Environment subsystem Establish frame-based exception handlers to deal with these exceptions.

Frame-based refer to exception handler’s association with particular procedure activation.When a procedure is invoked, a Stack frame representing that activation of the procedure is pushed onto the stack.Stack frame can associating with some exception handlers, each of which protects a particular block of code in source program.When exception occurs, kernel search for an exception handler associated with current stack frame, if none exist, kernel search for previous one, and so on.If still none exist, kernel call its own default one.

Page 129: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

129

Trap frame

When exception occurs, a chain of events begins in kernel.

CPU hardware transfer control to kernel trap handler, which create a trap frame.

if (exception is resolved) Trap frame allow system to resume where if left off.

Trap handler create an exception record containing the reason for exception and relative information.

Page 130: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

130

Default exception handling

If exception occurred in kernel mode, exception dispatcher call a routine to locate a frame-based exception handler to handle it.Unhandled kernel-mode exceptions are considered fatal operating system errors, you can assume dispatcher always finds an exception handler.If it occurred in user mode, what exception dispatcher does is more complex, you’ll see in Chapter 6.Windows subsystem has debugger port and exception port to receive notification of user-mode exceptions.Kernel use these in its default exception handling.

Page 131: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

131

Page 132: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

132

Exception Dispatcher (1)

Exception dispatcher’s first action See whether process that incurred exception has associated

debugger process.

If (it does && system is Windows 2000) Exception dispatcher

Send first-chance debug message via local procedure call (LPC) to the debugger port associated with the process.

LPC message Is sent to session manager process, which then dispatches it to

appropriate debugger process.

On Windows XP and Server 2003 Exception dispatcher send debugger object message to debug

object associated with process.

Page 133: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

133

Exception Dispatcher (2)

If(No debugger process attached process || debugger doesn’t handle exception) Exception dispatcher

Switches into user modeCopy trap frame to user stack formatted as a CONTEXT data

structure.Call routine to find frame-based exception handler.

If(none is found || none handles the exception) Exception dispatcher

Switches back into kernel mode Call debugger to allow user to do more debugging.

Page 134: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

134

Exception Dispatcher (3)

If(debugger isn’t running && no frame-based handlers be found) The kernel

Send message to exception port associated with thread’s process. Exception port

Registered by environment subsystem that controls this thread. Give the environment subsystem, which presumably is listening at the port, the

opportunity to translate exception into environment-specific signal or exception.

CSRSS(Client/Server Run-Time Subsystem) Present message box notifying user of fault and terminate process, When (POSIX get message from kernel)

POSIX subsystem send POSIX-style signal to thread

If(kernel progresses this far in processing exception && subsystem do not handle exception) Kernel

Execute default exception handler to terminate process

Page 135: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

135

Unhandled Exceptions

All Windows thread Have an exception handler declared at the top of the stack that processes

unhandled exceptions The exception handler

Is declared in internal Windows start-of-process or start-of-thread function.

Start-of-process function Run when first thread in a process begins execution. Call main entry point in the image.

Start-of-thread function Run when a user create additional threads. Call user-supplied thread start routine specified in CreateThread call.

Page 136: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

136

Windows Unhandled Exception Filter (1)

If(thread has unhandled exception) Windows unhandled exception filter is called Purpose of this function

Provide system-defined behavior for what to do

Page 137: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

137

Windows Unhandled Exception Filter (2)

Two important value Auto Debugger

Auto Tell unhandled exception filter Whether to automatically run debugger Or, ask user what to do Default = 1

Launch debugger automatically. Installing development tools (ex: Visual Studio) changes this to 0

Debugger value A string

Pointing to path of debugger executable to run in the case of unhandled exception

Page 138: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

138

Debugger

Default debugger is Dr. Watson \Windows\System32\Drwtsn32.exe Not really a debugger A postmortem tool

Activation Capture state of the crashed application Records it in

Log file (Drwtsn32.log) Process crash dump file (User.dmp) \Documents And Settings\All Users\Documents\DrWatson

Page 139: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

139

Configuration for Dr. Watson

Page 140: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

140

Log File & Crash Dump File

Log file Contain basic information

Exception code Name of the failed image List of loaded DLLs Stack and instruction trace for the thread that incurred exception

Crash dump file Contain private pages in process at the time of exception This crash dump file can be opened by WinDbg (Windows

debugger, comes with Debugging Tools package, or Visual Studio 2003 and later)

Overwritten each time a process crash.

Page 141: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

141

Visual Notification (1)

Windows 2000 Pro. Visual notification, default = on After generate crash dump and records information in

log file.Message box displayed by Dr. Watson

Page 142: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

142

Visual Notification (2)

Dr. Watson process Remains until message box is dismissed. This is why visual notification is turned off by default in

Windows 2000 Server system.

This default is used Because

If(server application fail)– Usually nobody can dismiss message box.

Instead Server applications should log errors to the Windows event log.

Page 143: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

143

Message Box On Windows 2000

If(Auto value == 0) Message box is displayed

If (click OK)Process exit

If (click Cancel)Launch system defined debugger process.

Page 144: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

144

Windows Error Reporting (1)

Windows XP and Server 2003 have Windows Error Reporting More sophisticated error-reporting mechanism Automates the submission of

User-mode process crashes Kernel-mode system crashes

Configured How to bring up dialog box ?

My Computer -> Properties -> Advanced -> Error Reporting Or, System -> Error Reporting -> local or domain group policy settings

Store settings HKLM\Software\Microsoft\PCHealth\ErrorReporting

Page 145: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1
Page 146: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1
Page 147: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

147

Windows Error Reporting (3)

When (catch an unhandled exception) To see whether or not to initiate Windows Error Reporting

If (registry value == 0 || Debugger string contain “Drwtsn32”) Unhandled exception filter

Load \Windows\System32\Faultrep.dll into failing process Call its ReportFault function

ReportFault Check error-reporting configuration Purpose

To see whether this process crash should be reported If so,

Create process running \Windows\System32\Dwwin.exe, which display message box announcing process crash Along with option to submit error report to Micro$oft.

(as seen in figure of next page)

Page 148: System Mechanisms Instructor: 許富皓 Speaker: 彭文秈 呂坤錡 謝英成 12/16/2015 1

148

Windows Error Reporting (4)