• Aucun résultat trouvé

Unit OS2: Unit OS2: Operating System Principles Operating System Principles

N/A
N/A
Protected

Academic year: 2022

Partager "Unit OS2: Unit OS2: Operating System Principles Operating System Principles"

Copied!
29
0
0

Texte intégral

(1)

Unit OS2:

Unit OS2:

Operating System Principles Operating System Principles

2.5.2.5. Lab ManualLab Manual

(2)

Copyright Notice Copyright Notice

© 2000-2005 David A. Solomon and Mark Russinovich

© 2000-2005 David A. Solomon and Mark Russinovich

These materials are part of the

These materials are part of the Windows Operating Windows Operating System Internals Curriculum Development Kit,

System Internals Curriculum Development Kit, developed by David A. Solomon and Mark E.

developed by David A. Solomon and Mark E.

Russinovich with Andreas Polze Russinovich with Andreas Polze

Microsoft has licensed these materials from David Microsoft has licensed these materials from David Solomon Expert Seminars, Inc. for distribution to Solomon Expert Seminars, Inc. for distribution to academic organizations solely for use in academic academic organizations solely for use in academic environments (and not for commercial use)

environments (and not for commercial use)

(3)

Roadmap for Section 2.5.

Roadmap for Section 2.5.

Lab experiments investigating:

Lab experiments investigating:

Process Execution Process Execution

Object Manager & Handles Object Manager & Handles

Interrupt Handling Interrupt Handling

Memory Pools Labs Memory Pools Labs

System Threads System Threads

System Processes

System Processes

(4)

Thread Activity with QuickSlice Thread Activity with QuickSlice

Fastest way to find CPU hogs Fastest way to find CPU hogs Red=Kernel, Blue=User mode Red=Kernel, Blue=User mode Double-click on a process to Double-click on a process to see a per-thread display for see a per-thread display for that process

that process

Sum of threads’ bars for a Sum of threads’ bars for a process represents all of the process represents all of the process’s time, not all CPU process’s time, not all CPU timetime

(5)

Process Info with Task Manager Process Info with Task Manager

Processes tab: List of Processes tab: List of processes

processes

“Running” means Running” means waiting for window waiting for window messages

messages

Applications tab: List of top Applications tab: List of top level visible windows

level visible windows

Right-click on a Right-click on a

window and select window and select

(6)

Process Details with Process Process Details with Process

Explorer Explorer

““Super Task Manager”Super Task Manager”

Shows full image path, command line, environment variables, Shows full image path, command line, environment variables,

parent process, security access token, open handles, loaded DLLs parent process, security access token, open handles, loaded DLLs

& mapped files

& mapped files

(7)

The Process Explorer tool The Process Explorer tool

1.1. Run Process Explorer & maximize windowRun Process Explorer & maximize window

2.2. Run Task Manager – click on Processes tabRun Task Manager – click on Processes tab

3.3. Arrange windows so you can see bothArrange windows so you can see both

4.4. Notice process tree vs flat list in Task ManagerNotice process tree vs flat list in Task Manager

If parent has exited, process is left justifiedIf parent has exited, process is left justified

5.5. Sort on first column (“Process”) and note tree view disappearsSort on first column (“Process”) and note tree view disappears

6.6. Sort Process column 2 more times and tree view returnsSort Process column 2 more times and tree view returns

Can also Click on View->Show Process Tree or press CTRL+T to Can also Click on View->Show Process Tree or press CTRL+T to bring it back

bring it back

7.7. Notice description and company name columnsNotice description and company name columns

8.8. Hover mouse over image name to see full pathHover mouse over image name to see full path

9.9. Right click on a process and choose “Google”Right click on a process and choose “Google”

(8)

Image Information Image Information

Double click on Explorer.exe to Double click on Explorer.exe to

bring up process properties bring up process properties

Image tab:

Image tab:

Description, company name, Description, company name, version (from .EXE)

version (from .EXE) Full image path

Full image path

Command line used to start Command line used to start process

process

Current directory Current directory Parent process Parent process User name

User name Start time Start time

(9)

Viewing the Process Tree Viewing the Process Tree

1. Look at process hierarchy with TLIST /T 1. Look at process hierarchy with TLIST /T

Start a Windows command prompt, then run Notepad Start a Windows command prompt, then run Notepad from command prompt, then look at TLIST /T output from command prompt, then look at TLIST /T output

Exit the command prompt and notice “orphan” process Exit the command prompt and notice “orphan” process with TLIST /T

with TLIST /T

2. 2. Task Manager: Task Manager:

Applications tab: find the process that owns a window Applications tab: find the process that owns a window (right mouse click on window title)

(right mouse click on window title)

Process tab: add a few additional columns: Virtual Process tab: add a few additional columns: Virtual Memory size, Handle count, Thread count

Memory size, Handle count, Thread count

Windows: add I/O counters; right click on a process & notice Windows: add I/O counters; right click on a process & notice

“end process tree” option

“end process tree” option

(10)

Viewing the Base HALs Viewing the Base HALs

Windows 2000/XP/2003 HALs (see \windows\driver cache\i386\driver.cab) Windows 2000/XP/2003 HALs (see \windows\driver cache\i386\driver.cab)

Hal.dllHal.dll Standard PCStandard PC (uniprocessor)(uniprocessor) Halacpi.dllHalacpi.dll ACPI PCACPI PC (uniprocessor)(uniprocessor) Halapic.dllHalapic.dll APIC PCAPIC PC (uniprocessor)(uniprocessor) Halaacpi.dllHalaacpi.dll APIC ACPI PCAPIC ACPI PC (uniprocessor)(uniprocessor) Halmps.dllHalmps.dll Standard PCStandard PC (multiprocessor)(multiprocessor) Halmacpi.dllHalmacpi.dll ACPI PCACPI PC (multiprocessor)(multiprocessor) Win2000 only:

Win2000 only:

Halborg.dllHalborg.dll Silicon GraphicsSilicon Graphics (multiprocessor)(multiprocessor) WinXP only:

WinXP only:

Halsp.dllHalsp.dll Compaq SystemProCompaq SystemPro (multiprocessor)(multiprocessor)

Additional NT4 HALs (see Knowledge Base article 156358) Additional NT4 HALs (see Knowledge Base article 156358)

Halast.dllHalast.dll AST Manhattan SMPAST Manhattan SMP

Halcbus.dllHalcbus.dll Corollary C-bus ArchitectureCorollary C-bus Architecture

Halmca.dllHalmca.dll IBM PS/2 or other Micro Channel-based PCIBM PS/2 or other Micro Channel-based PC halmpsm.dllhalmpsm.dll Micro Channel Multi Processor PCMicro Channel Multi Processor PC

Halncr.dllHalncr.dll NCR System 3000 Model 3360/3450/3550NCR System 3000 Model 3360/3450/3550 Haloli.dllHaloli.dll Olivetti LSX5030/40Olivetti LSX5030/40

Halwyse7.dllHalwyse7.dll Wyse Series 7000i Model 740MP/760MPWyse Series 7000i Model 740MP/760MP Hal486c.dllHal486c.dll Standard PC with C-Step i486Standard PC with C-Step i486

(11)

Determining Which HAL You’re Determining Which HAL You’re

Running Running

Selected at installation time Selected at installation time

See \windows\repair\setup.log to find out which one See \windows\repair\setup.log to find out which one

Can select manually at boot time with /HAL= in Can select manually at boot time with /HAL= in

boot.ini boot.ini

Windows distribution CD-ROM:\i386

NTOSKRNL.EXE, NTKRNLPA.EXE, NTKRNLMP.EXE, NTKRPAMP.EXE HAL.DLL

HALACPI.DLL

…etc.

NTOSKRNL.EXE NTKRNLPA.EXE HAL.DLL

Boot Partition:

\windows\System32

Windows Setup Windows Setup

(12)

Determine the HAL Determine the HAL

Can also see by viewing the “device drivers” for the Can also see by viewing the “device drivers” for the Computer

Computer

Go to Control Panel->System – Hardware tab Go to Control Panel->System – Hardware tab

Click on “Device Manager”

Click on “Device Manager”

Click on “Computer”

Click on “Computer”

Right click/Properties on “driver” for PC Right click/Properties on “driver” for PC

Screen snapshot from:

Control Panel | System | Hardware | Device Manager | Computer properties | Driver Details

(13)

NTOSKRNL.EXE NTOSKRNL.EXE

Executive and Kernel Executive and Kernel

HAL.DLL HAL.DLL

Hardware Abstraction Hardware Abstraction

Layer - interface to Layer - interface to

hardware platform hardware platform

BOOTVID.DLL BOOTVID.DLL

Boot video driver Boot video driver

Added in Win2000 Added in Win2000

KDCOM.DLL KDCOM.DLL

Examining NTOSKRNL & HAL Examining NTOSKRNL & HAL

Image Dependencies Image Dependencies

Tool: Dependency Walker (Depends.Exe in Resource Kit & Platform SDK)

Allows viewing of image->DLL relationships, imports, and exports

(14)

Installed Device Drivers Installed Device Drivers

Separate loadable modules (drivername.SYS) Separate loadable modules (drivername.SYS)

Linked like .EXEs Linked like .EXEs

Typically linked against NTOSKRNL.EXE and HAL.DLL Typically linked against NTOSKRNL.EXE and HAL.DLL

Only one version of each driver binary for both uniprocessor (UP) and multiprocessor Only one version of each driver binary for both uniprocessor (UP) and multiprocessor (MP) systems…

(MP) systems…

… but drivers call routines in the kernel that behave differently for UP vs. MP Versionsbut drivers call routines in the kernel that behave differently for UP vs. MP Versions

Defined in registry Defined in registry

Same area as Windows services (t.b.d.) - differentiated by Type value Same area as Windows services (t.b.d.) - differentiated by Type value

Several types:

Several types:

“ordinary”, file system, NDIS miniport, SCSI miniport (linked against port drivers), bus ordinary”, file system, NDIS miniport, SCSI miniport (linked against port drivers), bus drivers

drivers

More information in I/O subsystem section More information in I/O subsystem section

To view loaded drivers, run drivers.exe To view loaded drivers, run drivers.exe

Also see list at end of output from pstat.exe – includes addresses of each driver Also see list at end of output from pstat.exe – includes addresses of each driver

To view installed drivers:

To view installed drivers:

System properties->Hardware Tab->Device Manager System properties->Hardware Tab->Device Manager

(15)

Peering into Undocumented Peering into Undocumented

Interfaces Interfaces

Exported symbols Exported symbols

Functions and global variables Microsoft wants visible outside the Functions and global variables Microsoft wants visible outside the

image (e.g. used by device drivers) image (e.g. used by device drivers)

About 1500 symbols exported About 1500 symbols exported

Ways to list:

Ways to list:

Dependency Walker (File->Save As) Dependency Walker (File->Save As)

Visual C++ “link /dump /exports ntoskrnl.exe”

Visual C++ “link /dump /exports ntoskrnl.exe”

Global symbols Global symbols

Over 9000 global symbols in XP/Server 2003 (Windows NT 4.0 was Over 9000 global symbols in XP/Server 2003 (Windows NT 4.0 was

4700) 4700)

Many variables contain values related to performance and memory policies Many variables contain values related to performance and memory policies

Ways to list:

Ways to list:

Visual C++: “dumpbin /symbols /all ntoskrnl.exe” (names only) Visual C++: “dumpbin /symbols /all ntoskrnl.exe” (names only) Kernel debugger:

Kernel debugger: “x nt!*”“x nt!*”

(16)

Image Subsystem Type Image Subsystem Type

Look at subsystem startup information in registry Look at subsystem startup information in registry

Using EXETYPE, look at subsystem types for:

Using EXETYPE, look at subsystem types for:

\windows\system32\notepad.exe, cmd.exe,

\windows\system32\notepad.exe, cmd.exe, csrss.exe

csrss.exe

(17)

Viewing Open Handles Viewing Open Handles

Process Explorer (GUI version) or handle (character Process Explorer (GUI version) or handle (character cell version) from

cell version) from www.sysinternals.comwww.sysinternals.com

Uses a device driver to walk handle table, so doesn’t need Uses a device driver to walk handle table, so doesn’t need

Global Flag set Global Flag set

(18)

Experiment with Handle-tool Experiment with Handle-tool

Handle View Handle View

Suggestion: sort by type or path column Suggestion: sort by type or path column

Objects of type “File” and “Key” are most interesting for general troubleshooting Objects of type “File” and “Key” are most interesting for general troubleshooting By default, shows named objects

By default, shows named objects

Click on Options->Show Unnamed Objects Click on Options->Show Unnamed Objects

Solve file locked errors Solve file locked errors

Use the search feature to determine what process is holding a file or directory Use the search feature to determine what process is holding a file or directory openopen

Can even close an open files (be careful!) Can even close an open files (be careful!)

Understand resources used by an application Understand resources used by an application

Files Files

Registry keys Registry keys

Detect handle leaks using refresh difference highlighting Detect handle leaks using refresh difference highlighting

Can also view the state of synchronization objects (mutexes, semaphores, Can also view the state of synchronization objects (mutexes, semaphores, events)

events)

(19)

Maximum Number of Handles Maximum Number of Handles

1. 1. Run Process Explorer, and click View and then Run Process Explorer, and click View and then System Information. Open a command prompt.

System Information. Open a command prompt.

2. 2. Run the testlimit -h Run the testlimit -h

When Testlimit fails to open a new handle, it will display When Testlimit fails to open a new handle, it will display the total number of handles it was able to create.

the total number of handles it was able to create.

If the number is less than approximately 16 million, you If the number is less than approximately 16 million, you are probably running out of paged pool before hitting are probably running out of paged pool before hitting

the theoretical per-process handle limit.

the theoretical per-process handle limit.

3. 3. kill the testlimit process by closing the command- kill the testlimit process by closing the command- prompt window; thus closing all the open handles.

prompt window; thus closing all the open handles.

(20)

Viewing Open Handles with Viewing Open Handles with

Kernel Debugger Kernel Debugger

lkd> !handle 0 f 9e8 file processor number 0

Searching for Process with Cid == 9e8 Searching for handles of type file

PROCESS 82ce72d0 SessionId: 0 Cid: 09e8 Peb: 7ffdf000 ParentCid: 06ec DirBase: 06602000 ObjectTable: e1c879c8 HandleCount: 430.

Image: POWERPNT.EXE

0280: Object: 82c5e230 GrantedAccess: 00120089 Object: 82c5e230 Type: (82fdde70) File

ObjectHeader: 82c5e218

HandleCount: 1 PointerCount: 1 Directory Object: 00000000 Name:

\slides\ntint\new\4-systemarchitecture.ppt {HarddiskVolume1}

If looking at a dump, use !handle in Kernel Debugger If looking at a dump, use !handle in Kernel Debugger

(see help for options) (see help for options)

(21)

Troubleshooting a Pool Leak Troubleshooting a Pool Leak

Run NotMyFault and select Run NotMyFault and select

“Leak Pool”

“Leak Pool”

(available from

(available from http:// http://

www.sysinternals.com

www.sysinternals.com /files/ /files/

notmyfault.zip notmyfault.zip ) )

Allocates paged pool buffers Allocates paged pool buffers

and doesn’t free them and doesn’t free them

Stops leaking when you Stops leaking when you

select “Stop Leaking”

select “Stop Leaking”

(22)

Determining the Maximum Pool Determining the Maximum Pool

Sizes Sizes

Three options:

Three options:

1. 1. Poolmon Poolmon (in Support Tools and Device (in Support Tools and Device Driver Kit)

Driver Kit)

2. 2. Kernel Debugger Kernel Debugger !Poolused !Poolused command command

3. 3. Driver Verifier (in Windows 2000 and later) Driver Verifier (in Windows 2000 and later)

(23)

Mapping a System Thread to a Mapping a System Thread to a

Device Driver Device Driver

1. 1. Generate network file access activity, for example: Generate network file access activity, for example:

“dir \\computername\c$ /s”

“dir \\computername\c$ /s”

• System process should be consuming CPU System process should be consuming CPU time time

2. 2. Open System process process properties Open System process process properties

3. 3. Go to Threads tab Go to Threads tab

4. 4. Sort by CPU time and find thread(s) running Sort by CPU time and find thread(s) running

5. 5. Determine what driver these are in Determine what driver these are in

(24)

Identifying System Threads in the Identifying System Threads in the

System Process System Process

To really understand what’s going on, must find To really understand what’s going on, must find

which

which driver driver a thread “belongs to” a thread “belongs to”

With standard user-mode tools:

With standard user-mode tools:

1. 1.

PerfMon: monitor %Processor time for each thread in PerfMon: monitor %Processor time for each thread in System process & determine which thread(s) are

System process & determine which thread(s) are running

running

2. 2.

Pviewer: get “Start address” (address of thread Pviewer: get “Start address” (address of thread function) of running thread(s)

function) of running thread(s)

3. 3.

Pstat: find which driver thread start address falls inPstat: find which driver thread start address falls in

Look for what driver starts near the thread start addressLook for what driver starts near the thread start address

(25)

Solitaire as a Service Solitaire as a Service

Create a service to run Sol.exe Create a service to run Sol.exe

Sc create dumbservice binpath= c:\windows\system32\sol.exe Sc create dumbservice binpath= c:\windows\system32\sol.exe

Start the service Start the service

Use the GUI, or type “sc start dumbservice”, or “net start..”

Use the GUI, or type “sc start dumbservice”, or “net start..”

Quickly run Process Explorer and look at handle table for Quickly run Process Explorer and look at handle table for

sol.exe sol.exe

Notice name of Windowstation object Notice name of Windowstation object

Open services.msc; mark service “Allow Service to Interact Open services.msc; mark service “Allow Service to Interact

with Desktop”

with Desktop”

Start the service again and in Process Explorer, look at handle Start the service again and in Process Explorer, look at handle

table for sol.exe table for sol.exe

Notice name of Windowstation object Notice name of Windowstation object

(26)

Listing Installed Services Listing Installed Services

Not always a 1-to-1 mapping Not always a 1-to-1 mapping

Some service processes contain more than one service Some service processes contain more than one service

Conserves virtual memory, reduces boot time Conserves virtual memory, reduces boot time

This is up to the developer of the service This is up to the developer of the service

Service properties displayed through Control Panel Service properties displayed through Control Panel

(services.msc) show name of .EXE (services.msc) show name of .EXE

But not which process the services is running in But not which process the services is running in

(27)

Viewing Service Details Inside Viewing Service Details Inside

Service Processes Service Processes

Tlist /S (Debugging Tools) or Tasklist /svc (XP/2003) list Tlist /S (Debugging Tools) or Tasklist /svc (XP/2003) list

internal name of services inside service processes internal name of services inside service processes

Process Explorer shows more: external display name Process Explorer shows more: external display name

and description and description

(28)

Viewing Services Running Inside Viewing Services Running Inside

Processes Processes

1. 1.

Open a command promptOpen a command prompt

2. 2.

Type “tasklist /svc”Type “tasklist /svc”

3. 3.

Find the Svchost.exe process with the most services Find the Svchost.exe process with the most services inside it

inside it

4. 4.

In Process Explorer, double click on that Svchost.exe In Process Explorer, double click on that Svchost.exe process

process

5. 5.

Click on Services tabClick on Services tab

6. 6.

Notice extra details about each service displayed by Notice extra details about each service displayed by Process Explorer

Process Explorer

(29)

Service Configuration &

Service Configuration &

Control Tools Control Tools

To view & control services:

To view & control services:

Control Panel->Administrative Tools->Services Control Panel->Administrative Tools->Services

No option to add/remove – done at install/uninstall time No option to add/remove – done at install/uninstall time

Références

Documents relatifs

JNK3 is highly produced in pancreatic islets To determine in situ levels of the JNK3 protein in pancreatic islets, we performed immunohistochemistry studies on human and mouse

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

For countries at all levels of economic development, increasing public finance to fund action across the social determinants of health – from child development and education, through

While involving stakeholders from Member States, international organizations, and research institutes, the specific global health equity component of a global health observatory

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

EASIT challenge: how to approach this when we design our training materials taking into account we want to stay at cross-language level?...

Windows 2000 Datacenter Server & Windows 2003 Server, Datacenter Edition Windows 2000 Datacenter Server & Windows 2003 Server, Datacenter Edition Process Control

Object name Object directory Security descriptor Quota charges Open handle count Open handles list Object type. Reference count