• 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!
52
0
0

Texte intégral

(1)

Unit OS2:

Unit OS2:

Operating System Principles Operating System Principles

2.1. 2.1. Structuring of the Windows Operating System Structuring of the Windows Operating System

(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.1.

Roadmap for Section 2.1.

Architecture Overview Architecture Overview

Program Execution Environment Program Execution Environment

Kernel Mode Architecture Kernel Mode Architecture

System Threads System Threads

System Processes / Services

System Processes / Services

(4)

Simplified OS Architecture Simplified OS Architecture

System support processes

Service processes

User applications

Environment subsystems

Subsystem DLLs

Executive

Kernel Device drivers

Hardware Abstraction Layer (HAL)

Windowing and graphics User

Mode

Kernel

Mode

(5)

OS Architecture OS Architecture

Multiple personality OS design Multiple personality OS design

user applications don't call the native Windows operating system services user applications don't call the native Windows operating system services directly

directly

Subsystem DLLs is to translate a documented function into the Subsystem DLLs is to translate a documented function into the

appropriate internal (and undocumented) Windows system service calls.

appropriate internal (and undocumented) Windows system service calls.

Environment subsystem processes Environment subsystem processes

Manage client processes in their world Manage client processes in their world

Impose semantics such as process model, security Impose semantics such as process model, security

Originally three environment subsystems: Windows, POSIX, and OS/2 Originally three environment subsystems: Windows, POSIX, and OS/2

Windows 2000 only included Windows and POSIX Windows 2000 only included Windows and POSIX Windows XP only includes Windows

Windows XP only includes Windows

Enhanced POSIX subsystem available with Services for Unix Enhanced POSIX subsystem available with Services for Unix Included with Windows Server 2003 R2

Included with Windows Server 2003 R2

(6)

Kernel-Mode Kernel-Mode

Components: Core OS Components: Core OS

Executive Executive

base operating system services, base operating system services,

memory management, process and thread management, memory management, process and thread management, security, I/O, interprocess communication.

security, I/O, interprocess communication.

Kernel Kernel

low-level operating system functions, low-level operating system functions,

thread scheduling, interrupt and exception dispatching, thread scheduling, interrupt and exception dispatching,

multiprocessor synchronization.

multiprocessor synchronization.

provides a set of routines and basic objects that the rest of the provides a set of routines and basic objects that the rest of the

executive uses to implement higher-level constructs.

executive uses to implement higher-level constructs.

(7)

Device drivers

Device drivers (*.sys) (*.sys)

hardware device drivers translate user I/O function calls into hardware device drivers translate user I/O function calls into specific hardware device I/O requests

specific hardware device I/O requests

virtual devices - system volumes and network protocols virtual devices - system volumes and network protocols

Windowing and Graphics Driver

Windowing and Graphics Driver (Win32k.sys) (Win32k.sys)

graphical user interface (GUI) functions (USER and GDI) graphical user interface (GUI) functions (USER and GDI) windows, user interface controls, and drawing

windows, user interface controls, and drawing

Hardware Abstraction Layer

Hardware Abstraction Layer (Hal.dll) (Hal.dll)

isolates the kernel, device drivers, and executive from hardware isolates the kernel, device drivers, and executive from hardware Hides platform-specific hardware differences (motherboards) Hides platform-specific hardware differences (motherboards)

Kernel-Mode Kernel-Mode

Components: Drivers

Components: Drivers

(8)

Background System Background System

Processes Processes

Core system processes, Core system processes,

logon process, the session manager, etc.

logon process, the session manager, etc.

not started by the service control manager not started by the service control manager

Service processes Service processes

Host Windows services Host Windows services

i.e.; Task Scheduler and Spooler services i.e.; Task Scheduler and Spooler services

Many Windows server applications, such as Microsoft Many Windows server applications, such as Microsoft

SQL Server and Microsoft Exchange Server, also

SQL Server and Microsoft Exchange Server, also

(9)

Portability Portability

When Windows NT was designed, there was no dominant processor When Windows NT was designed, there was no dominant processor architecture

architecture

Therefore it was designed to be portable Therefore it was designed to be portable

How achieved?

How achieved?

Most Windows OS code and device drivers is written in C Most Windows OS code and device drivers is written in C

HAL and kernel contain some assembly language HAL and kernel contain some assembly language

Some components are written in C++:

Some components are written in C++:

windowing/graphics subsystem driver windowing/graphics subsystem driver volume manager

volume manager

Hardware-specific code is isolated in low level layers of the OS (such as Kernel Hardware-specific code is isolated in low level layers of the OS (such as Kernel and the HAL)

and the HAL)

Provides portable interface Provides portable interface

NT 4.0 had support for x86, MIPS, PowerPC, Digital Alpha AXP NT 4.0 had support for x86, MIPS, PowerPC, Digital Alpha AXP

PowerPC and MIPS dropped soon after NT 4 release PowerPC and MIPS dropped soon after NT 4 release Alpha AXP dropped in 1999 (supported through SP6) Alpha AXP dropped in 1999 (supported through SP6)

(10)

Reentrant and Asynchronous Reentrant and Asynchronous

Operation Operation

Windows kernel is fully reentrant Windows kernel is fully reentrant

Kernel functions can be invoked by multiple threads Kernel functions can be invoked by multiple threads

simultaneously simultaneously

No serialization of user threads when performing No serialization of user threads when performing

system calls system calls

I/O system works fully asynchronously I/O system works fully asynchronously

Asynchronous I/O improves application’s throughput Asynchronous I/O improves application’s throughput

Synchronous wrapper functions provide ease-of- Synchronous wrapper functions provide ease-of-

programming

programming

(11)

Key Windows System Files Key Windows System Files

Core OS components:

Core OS components:

NTOSKRNL.EXE**

NTOSKRNL.EXE** Executive and kernelExecutive and kernel HAL.DLL

HAL.DLL Hardware abstraction layerHardware abstraction layer NTDLL.DLL

NTDLL.DLL Internal support functions and system Internal support functions and system service dispatch stubs to

service dispatch stubs to executive functionsexecutive functions

Core system processes:

Core system processes:

SMSS.EXE

SMSS.EXE Session manager process Session manager process WINLOGON.EXE

WINLOGON.EXE Logon processLogon process SERVICES.EXE

SERVICES.EXE Service controller processService controller process LSASS.EXE

LSASS.EXE Local Security Authority SubsystemLocal Security Authority Subsystem

Windowing subsystem:

Windowing subsystem:

CSRSS.EXE*

CSRSS.EXE* Windows subsystem processWindows subsystem process WIN32K.SYS

WIN32K.SYS USER and GDI kernel-mode componentsUSER and GDI kernel-mode components

(12)

Key System Components Key System Components

OS/2 Windows POSIX

Environment Subsystems

User

Application

Subsystem DLL

Windows User/GDI

Device Driver

Executive

Device Drivers Kernel

Hardware Abstraction Layer (HAL) User

Mode Kernel Mode

System

& Service Processes

Windows

(13)

Multiple OS Personalities Multiple OS Personalities

Windows was designed to support multiple “personalities”, called Windows was designed to support multiple “personalities”, called

environment subsystems environment subsystems

Programming interface Programming interface File system syntax File system syntax Process semantics Process semantics

Environment subsystems provide exposed, documented interface Environment subsystems provide exposed, documented interface

between application and Windows native API between application and Windows native API

Each subsystem defines a different set of APIs and semantics Each subsystem defines a different set of APIs and semantics Subsystems implement these by invoking native APIs

Subsystems implement these by invoking native APIs

Example: Windows CreateFile in Kernel32.Dll calls native NtCreateFile Example: Windows CreateFile in Kernel32.Dll calls native NtCreateFile

.exes and .dlls you write are associated with .exes and .dlls you write are associated with

a subsystem a subsystem

Specified by LINK /SUBSYSTEM option

Specified by LINK /SUBSYSTEM option

Cannot mix calls between subsystems

Cannot mix calls between subsystems

(14)

Environment Subsystems Environment Subsystems

Three environment subsystems originally provided with NT:

Three environment subsystems originally provided with NT:

Windows –Windows API (originally 32-bit, now also 64-bit) Windows –Windows API (originally 32-bit, now also 64-bit) OS/2 - 1.x character-mode apps only

OS/2 - 1.x character-mode apps only

Removed in Windows 2000 Removed in Windows 2000

Posix - only Posix 1003.1 (bare minimum Unix services - no networking, Posix - only Posix 1003.1 (bare minimum Unix services - no networking, windowing, threads, etc.)

windowing, threads, etc.)

Removed in XP/Server 2003 – enhanced version ships with Services For Unix 3.0 Removed in XP/Server 2003 – enhanced version ships with Services For Unix 3.0

Of the three, the Windows subsystem provides access to the majority of Of the three, the Windows subsystem provides access to the majority of native OS functions

native OS functions

Of the three, Windows is required to be running Of the three, Windows is required to be running

System crashes if Windows subsystem process exits System crashes if Windows subsystem process exits

POSIX and OS/2 subsystems are actually Windows applications POSIX and OS/2 subsystems are actually Windows applications POSIX & OS/2 start on demand (first time an app is run)

POSIX & OS/2 start on demand (first time an app is run) Stay running until system shutdown

Stay running until system shutdown

(15)

App calls Subsystem App calls Subsystem

Function is entirely implemented in user mode Function is entirely implemented in user mode

No message sent to environment subsystem process No message sent to environment subsystem process No Windows executive system service called

No Windows executive system service called Examples:

Examples: PtInRect(), IsRectEmpty() PtInRect(), IsRectEmpty()

Function requires one/more calls to Windows executive Function requires one/more calls to Windows executive

Examples: Windows

Examples: Windows ReadFile() / WriteFile() implemented using I/O ReadFile() / WriteFile() implemented using I/O system services

system services NtReadFile() / NtWriteFile() NtReadFile() / NtWriteFile()

Function requires some work in environment subsystem Function requires some work in environment subsystem

process (maintain state of client app) process (maintain state of client app)

Client/server request (message) to env. Subsystem (LPC facility) Client/server request (message) to env. Subsystem (LPC facility) Subsystem DLL waits for reply before returning to caller

Subsystem DLL waits for reply before returning to caller

Combinations of 2/3:

Combinations of 2/3: CreateProcess() / CreateThread() CreateProcess() / CreateThread()

(16)

Windows Subsystem Windows Subsystem

Environment subsystem process (CSRSS.EXE):

Environment subsystem process (CSRSS.EXE):

Console (text) windows Console (text) windows

Creating and deleting processes and threads Creating and deleting processes and threads

Portions of the support for 16-bit virtual DOS machine (VDM) Portions of the support for 16-bit virtual DOS machine (VDM)

Other func:

Other func: GetTempFile, DefineDosDevice, ExitWindowsEx GetTempFile, DefineDosDevice, ExitWindowsEx

kernel-mode device driver (WIN32K.SYS):

kernel-mode device driver (WIN32K.SYS):

Window manager: manages screen output;

Window manager: manages screen output;

input from keyboard, mouse, and other devices input from keyboard, mouse, and other devices

user messages to applications.

user messages to applications.

Graphical Device Interface (GDI)

Graphical Device Interface (GDI)

(17)

Windows Subsystem (contd.) Windows Subsystem (contd.)

Subsystem DLLs (such as USER32.DLL, Subsystem DLLs (such as USER32.DLL,

ADVAPI32.DLL, GDI32.DLL, and KERNEL32.DLL) ADVAPI32.DLL, GDI32.DLL, and KERNEL32.DLL)

Translate Windows API functions into calls to NTOSKRNL.EXE Translate Windows API functions into calls to NTOSKRNL.EXE

and WIN32K.SYS.

and WIN32K.SYS.

Graphics device drivers Graphics device drivers

graphics display drivers, printer drivers, video miniport drivers graphics display drivers, printer drivers, video miniport drivers

Prior to Windows NT 4.0, the window manager and Prior to Windows NT 4.0, the window manager and

graphics services were part of the user-mode Win32 graphics services were part of the user-mode Win32

subsystem process.

subsystem process.

Is Windows Less Stable with Win32 USER and GDI in Kernel Is Windows Less Stable with Win32 USER and GDI in Kernel

Mode?

Mode?

(18)

Processes and Threads Processes and Threads

What is a process?

What is a process?

Represents an instance of a running program Represents an instance of a running program

you create a process to run a program you create a process to run a program starting an application creates a process starting an application creates a process

Process defined by:

Process defined by:

Address space Address space

Resources (e.g. open handles) Resources (e.g. open handles)

Security profile (token) Security profile (token) What is a thread?

What is a thread?

An execution context within a process An execution context within a process

Unit of scheduling (threads run, processes don’t run) Unit of scheduling (threads run, processes don’t run)

All threads in a process share the same per-process address space All threads in a process share the same per-process address space

Services provided so that threads can synchronize access to shared Services provided so that threads can synchronize access to shared resources (critical sections, mutexes, events, semaphores)

resources (critical sections, mutexes, events, semaphores)

All threads in the system are scheduled as peers to all others, All threads in the system are scheduled as peers to all others, without regard to their “parent” process

without regard to their “parent” process

System calls System calls

Per-process address space

Per-process address space

Thread

Thread

Thread

(19)

Memory Protection Model Memory Protection Model

No user process can touch another user process address space No user process can touch another user process address space (without first opening a handle to the process, which means passing (without first opening a handle to the process, which means passing through Windows security)

through Windows security)

Separate process page tables prevent this Separate process page tables prevent this

“ “ Current” page table changed on context switch from a thread in 1 process Current” page table changed on context switch from a thread in 1 process to a thread in another process

to a thread in another process

No user process can touch kernel memory No user process can touch kernel memory

Page protection in process page tables prevent this Page protection in process page tables prevent this

OS pages only accessible from “kernel mode”

OS pages only accessible from “kernel mode”

x86: Ring 0, Itanium: Privilege Level 0 x86: Ring 0, Itanium: Privilege Level 0

Threads change from user to kernel mode and back (via a secure Threads change from user to kernel mode and back (via a secure

interface) to execute kernel code interface) to execute kernel code

Does not affect scheduling (not a context switch) Does not affect scheduling (not a context switch)

(20)

2 GB 2 GB User User process process

space space 2 GB 2 GB

User User process process

space space

2 GB 2 GB System System Space Space 2 GB 2 GB System System Space Space

32-bit x86 Address Space 32-bit x86 Address Space

3 GB 3 GB User User process process

space space 3 GB 3 GB User User process process

space space

1 GB 1 GB 1 GB 1 GB

Default 3 GB user space 32-bits = 4 GB

32-bits = 4 GB

(21)

Kernel-Mode vs User-Mode Kernel-Mode vs User-Mode

QuickSlice (qslice.exe) QuickSlice (qslice.exe)

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

(22)

Task Manager: Processes vs Applications Task Manager: Processes vs Applications Tabs Tabs

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

(23)

System Service Dispatcher

Task Manager Explorer SvcHost.Exe

WinMgt.Exe SpoolSv.Exe Service

Control Mgr.

LSASS

ObjectMgr.

Windows USER,

GDI

File System Cache

I/O Mgr

Environment Subsystems

User Application

Subsystem DLLs

System Processes Services Applications

System Threads UserMode

Kernel Mode

NTDLL.DLL

Device &

File Sys.

Drivers

WinLogon

Session Manager Services.Exe POSIX

Windows DLLs

Plug andPlay Mgr. PowerMgr. SecurityReferenceMonitor VirtualMemory Processes&Threads LocalProcedureCall Graphics

Drivers

Kernel (kernel mode callable interfaces)

Windows Architecture Windows Architecture

Configura-tion Mgr(registry)

OS/2

Windows

(24)

Microkernel OS?

Microkernel OS?

Is Windows a microkernel-based OS?

Is Windows a microkernel-based OS?

No – not using the academic definition (OS components and No – not using the academic definition (OS components and

drivers run in their own private address spaces, layered on a primitive microkernel) drivers run in their own private address spaces, layered on a primitive microkernel) All kernel components live in a common shared address space

All kernel components live in a common shared address space

Therefore no protection between OS and drivers Therefore no protection between OS and drivers

Why not pure microkernel?

Why not pure microkernel?

Performance – separate address spaces would mean context switching to call Performance – separate address spaces would mean context switching to call basic OS services

basic OS services

Most other commercial OSs (Unix, Linux, VMS etc.) have the Most other commercial OSs (Unix, Linux, VMS etc.) have the same design

same design

But it does have some attributes of a microkernel OS But it does have some attributes of a microkernel OS

OS personalities running in user space as separate processes OS personalities running in user space as separate processes Kernel-mode components don't reach into one another’s

Kernel-mode components don't reach into one another’s data structures

data structures

Use formal interfaces to pass parameters and access and/or modify data structures Use formal interfaces to pass parameters and access and/or modify data structures

(25)

Symmetric Multiprocessing (SMP) Symmetric Multiprocessing (SMP)

No master processor No master processor

All the processors share just one memory space All the processors share just one memory space Interrupts can be serviced on any processor Interrupts can be serviced on any processor Any processor can cause another processor to Any processor can cause another processor to reschedule what it’s running

reschedule what it’s running

Maximum # of CPUs stored in registry Maximum # of CPUs stored in registry

HKLM\System\CurrentControlSet HKLM\System\CurrentControlSet \Control\Session Manager

\Control\Session Manager \LicensedProcessors

\LicensedProcessors

Current implementation limit is # of bits in a native Current implementation limit is # of bits in a native word word

32 processors for 32-bit systems 32 processors for 32-bit systems 64 processors for 64-bit systems 64 processors for 64-bit systems

Not an architectural limit—just implementation Not an architectural limit—just implementation

Memory

Memory I/OI/O CPUsCPUs

L2L2 Cache Cache

SMPSMP

(26)

Hyperthreading Hyperthreading

New technology in newer Xeon & Pentium 4 New technology in newer Xeon & Pentium 4

processors processors

Makes a single processor appear as a dual processor to the Makes a single processor appear as a dual processor to the OS OS

Also called simultaneous multithreading technology (SMT) Also called simultaneous multithreading technology (SMT)

Chip maintains two separate CPU states (“logical Chip maintains two separate CPU states (“logical

processors”) processors”)

Execution engine & onboard cache is shared Execution engine & onboard cache is shared

Works with Windows 2000, but only XP & Server Works with Windows 2000, but only XP & Server

2003 are “hyperthreading aware”

2003 are “hyperthreading aware”

Logical processors don’t count against physical processor Logical processors don’t count against physical processor limits

limits

Scheduling algorithms take into account logical vs physical Scheduling algorithms take into account logical vs physical processors

processors

Applications can also optimize for it (new Windows Applications can also optimize for it (new Windows

function in Server 2003)

function in Server 2003)

(27)

NUMA NUMA

NUMA (non uniform memory architecture) systems NUMA (non uniform memory architecture) systems

Groups of physical processors (called “nodes”) that have local Groups of physical processors (called “nodes”) that have local

memory memory

Connected to the larger system through a cache-coherent Connected to the larger system through a cache-coherent interconnect bus

interconnect bus

Still an SMP system (e.g. any processor can access all of Still an SMP system (e.g. any processor can access all of

memory) memory)

But node-local memory is faster But node-local memory is faster

Scheduling algorithms take this into account Scheduling algorithms take this into account

Tries to schedule threads on processors within the same node Tries to schedule threads on processors within the same node

Tries to allocate memory from local memory for processes with Tries to allocate memory from local memory for processes with

threads on the node threads on the node

New Windows APIs to allow applications to optimize

New Windows APIs to allow applications to optimize

(28)

SMP Scalability SMP Scalability

Scalability is a function of parallelization and resource contention Scalability is a function of parallelization and resource contention

Can’t make a general statement Can’t make a general statement

Depends on what you are doing and if the code involved scales well Depends on what you are doing and if the code involved scales well

Kernel is scalable Kernel is scalable

OS can run on any available processor and on multiple processors at the OS can run on any available processor and on multiple processors at the same time

same time

Fine-grained synchronization within the kernel as well as within device Fine-grained synchronization within the kernel as well as within device

drivers allows more components to run concurrently on multiple processors drivers allows more components to run concurrently on multiple processors Concurrency has improved with every release

Concurrency has improved with every release

Applications

Applications can be scalable can be scalable

Threads can be scheduled on any available CPU Threads can be scheduled on any available CPU

Processes can contain multiple threads that can execute simultaneously on Processes can contain multiple threads that can execute simultaneously on multiple processors

multiple processors

Programming mechanisms provided to facilitate scalable server Programming mechanisms provided to facilitate scalable server applications

applications

Most important is I/O completion ports Most important is I/O completion ports

(29)

1.1. Windows XP Home EditionWindows XP Home Edition

Licensed for 1 CPU die, 4GB RAM Licensed for 1 CPU die, 4GB RAM 2.2. Windows 2000 & XP ProfessionalWindows 2000 & XP Professional

Desktop version (but also is a fully functional server system) Desktop version (but also is a fully functional server system)

Licensed for 2 CPU dies, 4GB RAM (128GB for 64-bit edition on x64) Licensed for 2 CPU dies, 4GB RAM (128GB for 64-bit edition on x64) 3.3. Windows Server 2003, Web ServerWindows Server 2003, Web Server

Reduced functionality Standard Server (no domain controller) Reduced functionality Standard Server (no domain controller) Licensed for 2 CPU dies, 2GB RAM

Licensed for 2 CPU dies, 2GB RAM

4.4. Windows Server 2003, Standard Edition (formerly Windows 2000 Server)Windows Server 2003, Standard Edition (formerly Windows 2000 Server)

Adds server and networking features (active directory-based domains, host-based mirroring and RAID 5, Adds server and networking features (active directory-based domains, host-based mirroring and RAID 5, NetWare gateway, DHCP server, WINS, DNS, …)

NetWare gateway, DHCP server, WINS, DNS, …) Licensed for 4 CPU dies, 4GB RAM (32GB on x64) Licensed for 4 CPU dies, 4GB RAM (32GB on x64) 5.5. Windows Server 2003, Enterprise Edition Windows Server 2003, Enterprise Edition

(formerly Windows 2000 Advanced Server ) (formerly Windows 2000 Advanced Server )

3GB per-process address space option, Clusters (8 nodes) 3GB per-process address space option, Clusters (8 nodes) Licensed for 8 CPU dies, 32GB RAM (64GB on 64-bit editions) Licensed for 8 CPU dies, 32GB RAM (64GB on 64-bit editions)

6.6. Windows 2000 Datacenter Server & Windows 2003 Server, Datacenter EditionWindows 2000 Datacenter Server & Windows 2003 Server, Datacenter Edition Process Control Manager

Process Control Manager

Licensed for 32 processors, 64GB RAM (64 processors & 1024GB RAM) Licensed for 32 processors, 64GB RAM (64 processors & 1024GB RAM) NOTE: this is not an exhaustive list

NOTE: this is not an exhaustive list

Multiple Product Packages…

Multiple Product Packages…

(30)

… … Built On the Same Core OS Built On the Same Core OS

Through Windows 2000, core operating system executables were identical Through Windows 2000, core operating system executables were identical

NTOSKRNL.EXE, HAL.DLL, xxxDRIVER.SYS, etc.

NTOSKRNL.EXE, HAL.DLL, xxxDRIVER.SYS, etc.

As stated earlier, XP & Server 2003 have different kernel versions As stated earlier, XP & Server 2003 have different kernel versions

Registry indicates system type (set at install time) Registry indicates system type (set at install time)

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control

\ProductOptions

\ProductOptions

ProductType: WinNT=Workstation, ServerNT=Server not a domain controller, LanManNT=Server that is a ProductType: WinNT=Workstation, ServerNT=Server not a domain controller, LanManNT=Server that is a Domain Controller

Domain Controller

ProductSuite: indicates type of Server (Advanced, Datacenter, or for NT4: Enterprise Edition, Terminal Server, ProductSuite: indicates type of Server (Advanced, Datacenter, or for NT4: Enterprise Edition, Terminal Server,

…)…)

Code in the operating system tests these values and behaves slightly Code in the operating system tests these values and behaves slightly differently in a few places

differently in a few places

Licensing limits (number of processors, number of network connections, etc.) Licensing limits (number of processors, number of network connections, etc.) Boot-time calculations (mostly in the memory manager)

Boot-time calculations (mostly in the memory manager) Default length of time slice

Default length of time slice

See DDK: MmIsThisAnNtasSystem See DDK: MmIsThisAnNtasSystem

(31)

NTOSKRNL.EXE NTOSKRNL.EXE

Core operating system image Core operating system image

contains Executive & Kernel contains Executive & Kernel

Also includes entry points for routines actually implemented in Hal.Dll Also includes entry points for routines actually implemented in Hal.Dll

Many functions are exposed to user mode via NtDll.Dll and the environment subsystems Many functions are exposed to user mode via NtDll.Dll and the environment subsystems (t.b.d.)

(t.b.d.)

Four retail variations:

Four retail variations:

NTOSKRNL.EXENTOSKRNL.EXE UniprocessorUniprocessorNTKRNLMP.EXENTKRNLMP.EXE MultiprocessorMultiprocessor

– Windows 2000 adds PAE (page address extension) versions – Windows 2000 adds PAE (page address extension) versions – must

must

boot /PAE (32-bit Windows only); also used for processors with hardware no execute boot /PAE (32-bit Windows only); also used for processors with hardware no execute support (explained in Memory Management unit)

support (explained in Memory Management unit)

NTKRNLPA.EXENTKRNLPA.EXE Uniprocessor w/extended addressing supportUniprocessor w/extended addressing supportNTKRPAMP.EXENTKRPAMP.EXE Multiprocessor w/extended addressing supportMultiprocessor w/extended addressing support

Two checked build (debug) variations: Two checked build (debug) variations:

NTOSKRNL.EXE,NTOSKRNL.EXE,

NTKRNLMP.EXENTKRNLMP.EXE Debug multiprocessorDebug multiprocessorNTKRNLPA.EXE,NTKRNLPA.EXE,

NTKRPAMP.EXENTKRPAMP.EXE Debug multiprocessor w/extended addressingDebug multiprocessor w/extended addressing

(32)

UP vs MP File Differences UP vs MP File Differences

These files are updated when moving from UP to MP:

These files are updated when moving from UP to MP:

Everything else is the same (drivers, EXEs, DLLs) Everything else is the same (drivers, EXEs, DLLs)

NT4: Win32k.sys, Ntdll.dll, and Kernel32.dll had uniprocessor NT4: Win32k.sys, Ntdll.dll, and Kernel32.dll had uniprocessor

versions versions

Name of file on system disk

Name of uniprocessor version on CD-ROM

Name of multiprocessor version on CD-ROM

NTOSKRNL.EXE \I386\NTOSKRNL.EXE \I386\NTKRNLMP.EXE

NTKRNLPA.EXE \I386\NTKRNLMP.EXE \I386\NTKRPAMP.EXE HAL.DLL Depends on system type Depends on system type

(33)

Debug Version (“Checked Build”) Debug Version (“Checked Build”)

Special debug version of system called “Checked Build”

Special debug version of system called “Checked Build”

Multiprocessor versions only (runs on UP systems) Multiprocessor versions only (runs on UP systems)

helps catch synchronization bugs that are more visible on MP systems helps catch synchronization bugs that are more visible on MP systems Primarily for driver testing, but can be useful for catching timing bugs in Primarily for driver testing, but can be useful for catching timing bugs in multithreaded applications

multithreaded applications

Built from same source files as “free build” (aka “retail build”) Built from same source files as “free build” (aka “retail build”)

But with “DBG” compile-time symbol defined But with “DBG” compile-time symbol defined This enables:

This enables:

error tests for “can’t happen” conditions in kernel mode (ASSERTs) error tests for “can’t happen” conditions in kernel mode (ASSERTs)

validity checks on arguments passed from one kernel mode routine to another validity checks on arguments passed from one kernel mode routine to another

Since no checked Windows 2000 Server provided, can copy checked Since no checked Windows 2000 Server provided, can copy checked NTOSKRNL, HAL, to a normal Server system

NTOSKRNL, HAL, to a normal Server system

Select debug kernel & HAL with Boot.ini /KERNEL=, /HAL= switches Select debug kernel & HAL with Boot.ini /KERNEL=, /HAL= switches

Windows Server 2003 has its own checked build Windows Server 2003 has its own checked build

#ifdef DBG

#ifdef DBG

if (something that should never happen has happened) if (something that should never happen has happened)

KeBugCheckEx(…) KeBugCheckEx(…)

#endif

#endif

(34)

Executive Executive

Upper layer of the operating system Upper layer of the operating system

Provides “generic operating system” functions (“services”) Provides “generic operating system” functions (“services”)

Process Manager Process Manager Object Manager Object Manager Cache Manager Cache Manager

LPC (local procedure call) Facility LPC (local procedure call) Facility Configuration Manager

Configuration Manager Memory Manager

Memory Manager

Security Reference Monitor Security Reference Monitor I/O Manager

I/O Manager Power Manager Power Manager

Plug-and-Play Manager Plug-and-Play Manager

Almost completely portable C code

Almost completely portable C code

(35)

Kernel Kernel

Lower layers of the operating system Lower layers of the operating system

Implements processor-dependent functions (x86 vs. Itanium etc.) Implements processor-dependent functions (x86 vs. Itanium etc.) Also implements many processor-independent functions that are Also implements many processor-independent functions that are closely associated with processor-dependent functions

closely associated with processor-dependent functions

Main services Main services

Thread waiting, scheduling & context switching Thread waiting, scheduling & context switching Exception and interrupt dispatching

Exception and interrupt dispatching

Operating system synchronization primitives (different for MP vs. UP) Operating system synchronization primitives (different for MP vs. UP) A few of these are exposed to user mode

A few of these are exposed to user mode

Not a classic “microkernel”

Not a classic “microkernel”

shares address space with rest of kernel-mode components

shares address space with rest of kernel-mode components

(36)

HAL - Hardware Abstraction Layer HAL - Hardware Abstraction Layer

Responsible for a small part of “hardware abstraction”

Responsible for a small part of “hardware abstraction”

Components on the motherboard not handled by drivers Components on the motherboard not handled by drivers

System timers, Cache coherency, and flushing System timers, Cache coherency, and flushing SMP support, Hardware interrupt priorities SMP support, Hardware interrupt priorities

Subroutine library for the kernel & device drivers Subroutine library for the kernel & device drivers

Isolates Kernel and Executive from platform-specific details Isolates Kernel and Executive from platform-specific details Presents uniform model of I/O hardware interface to drivers Presents uniform model of I/O hardware interface to drivers Reduced role as of Windows 2000

Reduced role as of Windows 2000 Bus support moved to bus drivers Bus support moved to bus drivers

Majority of HALs are vendor-independent Majority of HALs are vendor-independent HAL also implements some functions

HAL also implements some functions that appear to be in the Executive that appear to be in the Executive and Kernel

and Kernel

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 boot.ini Can select manually at boot time with /HAL= in boot.ini HAL kit

HAL kit

Special kit only for vendors that must write custom HALs (requires approval from Microsoft) Special kit only for vendors that must write custom HALs (requires approval from Microsoft)

HalGetInterruptVector HalGetAdapter

WRITE_PORT_UCHAR

Sample HAL routines:

(37)

Kernel-Mode Device Drivers Kernel-Mode 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 Versions… but 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 update & control:

To update & control:

(38)

System Threads System Threads

Functions in OS and some drivers that need to run as real threads Functions in OS and some drivers that need to run as real threads

E.g., need to run concurrently with other system activity, wait on timers, E.g., need to run concurrently with other system activity, wait on timers, perform background “housekeeping” work

perform background “housekeeping” work Always run in kernel mode

Always run in kernel mode

Not non-preemptible (unless they raise IRQL to 2 or above) Not non-preemptible (unless they raise IRQL to 2 or above)

For details, see DDK documentation on PsCreateSystemThread For details, see DDK documentation on PsCreateSystemThread

What process do they appear in?

What process do they appear in?

“System” process (NT4: PID 2, W2K: PID 8, XP: PID 4) “ System” process (NT4: PID 2, W2K: PID 8, XP: PID 4)

In Windows 2000 & later, windowing system threads (from Win32k.sys) In Windows 2000 & later, windowing system threads (from Win32k.sys) appear in “csrss.exe” (Windows subsystem process)

appear in “csrss.exe” (Windows subsystem process)

(39)

Memory Manager Memory Manager

Modified Page Writer for mapped files Modified Page Writer for mapped files Modified Page Writer for paging files Modified Page Writer for paging files Balance Set Manager

Balance Set Manager

Swapper (kernel stack, working sets) Swapper (kernel stack, working sets) Zero page thread (thread 0, priority 0) Zero page thread (thread 0, priority 0)

Security Reference Monitor Security Reference Monitor

Command Server Thread Command Server Thread

Network Network

Redirector and Server Worker Threads Redirector and Server Worker Threads

Threads created by drivers for their exclusive use Threads created by drivers for their exclusive use

Examples: Floppy driver, parallel port driver Examples: Floppy driver, parallel port driver

Pool of Executive Worker Threads Pool of Executive Worker Threads

Used by drivers, file systems, … Used by drivers, file systems, …

Examples of System Threads

Examples of System Threads

(40)

Identifying System Threads:

Identifying System Threads:

Process Explorer Process Explorer

With Process Explorer:

With Process Explorer:

Double click on System Double click on System

process process

Go to Threads tab – sort by Go to Threads tab – sort by

CPU time CPU time

As explained before, threads run As explained before, threads run between clock ticks (or at high between clock ticks (or at high IRQL) and thus don’t appear to IRQL) and thus don’t appear to run run

Sort by context switch delta Sort by context switch delta column

column

(41)

Process-Based Code Process-Based Code

OS components that run in separate executables (.exe’s), in their OS components that run in separate executables (.exe’s), in their own processes

own processes

Started by system Started by system

Not tied to a user logon Not tied to a user logon

Three types:

Three types:

Environment Subsystems (already described) Environment Subsystems (already described) System startup processes

System startup processes

note, “system startup processes” is not an official MS-defined name note, “system startup processes” is not an official MS-defined name

Windows Services Windows Services

Let’s examine the system process “tree”

Let’s examine the system process “tree”

Use Tlist /T or Process Explorer

Use Tlist /T or Process Explorer

(42)

Process-Based Windows Code:

Process-Based Windows Code:

System Startup Processes System Startup Processes

First two processes aren’t real processes First two processes aren’t real processes

not running a user mode .EXE not running a user mode .EXE no user-mode address space no user-mode address space

different utilities report them with different names different utilities report them with different names

data structures for these processes (and their initial threads) are “pre-created” in data structures for these processes (and their initial threads) are “pre-created” in NtosKrnl.Exe and loaded along with the code

NtosKrnl.Exe and loaded along with the code (Idle)

(Idle) Process id 0Process id 0

Part of the loaded system image Part of the loaded system image

Home for idle thread(s) (not a real process nor real threads) Home for idle thread(s) (not a real process nor real threads) Called “System Process” in many displays

Called “System Process” in many displays (System)

(System) Process id 2 (8 in Windows 2000; 4 in XP)Process id 2 (8 in Windows 2000; 4 in XP) Part of the loaded system image Part of the loaded system image

Home for kernel-defined threads (not a real process) Home for kernel-defined threads (not a real process)

Thread 0 (routine name Phase1Initialization) launches the first Thread 0 (routine name Phase1Initialization) launches the first

“real” process, running smss.exe...

“real” process, running smss.exe...

...and then becomes the zero page thread ...and then becomes the zero page thread

(43)

Process-Based Windows Code:

Process-Based Windows Code:

System Startup Processes (cont.) System Startup Processes (cont.)

smss.exe

smss.exe Session ManagerSession Manager

The first “created” process The first “created” process Takes parameters from Takes parameters from

\HKEY_LOCAL_MACHINE\System\CurrentControlSet

\HKEY_LOCAL_MACHINE\System\CurrentControlSet

\Control\Session Manager

\Control\Session Manager

Launches required subsystems (csrss) and then winlogon Launches required subsystems (csrss) and then winlogon csrss.exe

csrss.exe Windows subsystemWindows subsystem winlogon.exe

winlogon.exe Logon process: Launches services.exe & lsass.exe; presents first login Logon process: Launches services.exe & lsass.exe; presents first login prompt

prompt

When someone logs in, launches apps in \Software\Microsoft\Windows When someone logs in, launches apps in \Software\Microsoft\Windows NT\WinLogon\Userinit

NT\WinLogon\Userinit services.exe

services.exe Service Controller; also, home for many Windows-supplied servicesService Controller; also, home for many Windows-supplied services Starts processes for services not part of services.exe (driven by Starts processes for services not part of services.exe (driven by

\Registry\Machine\System\CurrentControlSet\Services )

\Registry\Machine\System\CurrentControlSet\Services ) lsass.exe

lsass.exe Local Security Authentication ServerLocal Security Authentication Server userinit.exe

userinit.exe Started after logon; starts Explorer.exe (see \Software\Microsoft\Windows Started after logon; starts Explorer.exe (see \Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Shell) and exits (hence Explorer appears to NT\CurrentVersion\WinLogon\Shell) and exits (hence Explorer appears to be an orphan)

be an orphan) explorer.exe

explorer.exe and its children are the creators of all interactive appsand its children are the creators of all interactive apps

(44)

Where are Services Defined?

Where are Services Defined?

Defined in the registry:

Defined in the registry:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

one key per installed service one key per installed service

Mandatory information kept on each service:

Mandatory information kept on each service:

Type of service (Windows, Driver, ...) Type of service (Windows, Driver, ...) Imagename of service .EXE

Imagename of service .EXE

Note: some .EXEs contain more than one service Note: some .EXEs contain more than one service Start type (automatic, manual, or disabled)

Start type (automatic, manual, or disabled)

Optional information:

Optional information:

Display Name Display Name

New in W2K: Description New in W2K: Description Dependencies

Dependencies

Account & password to run under Account & password to run under

Can store application-specific configuration parameters

Can store application-specific configuration parameters

(45)

Service Controller/

Manager (Services.Exe)

Life of a Service Life of a Service

Install time Install time

Setup application tells Service Setup application tells Service Controller about the service Controller about the service

System boot/initialization System boot/initialization

SCM reads registry, starts SCM reads registry, starts services as directed

services as directed

Management/maintenance Management/maintenance

Control panel can start and stop Control panel can start and stop services and change startup services and change startup parameters

parameters

Setup Application

CreateService

Registry

Service

Processes

Control

(46)

Process Explorer: Service Process Explorer: Service

Information Information

Process Explorer identifies Service Processes Process Explorer identifies Service Processes

Click on Options->Highlight Services

Click on Options->Highlight Services

(47)

Service Processes Service Processes

A process created & managed by the Service A process created & managed by the Service

Control Manager (Services.exe) Control Manager (Services.exe)

Similar in concept to Unix daemon processes Similar in concept to Unix daemon processes

Typically configured to start at boot time (if started Typically configured to start at boot time (if started while logged on, survive logoff)

while logged on, survive logoff)

Typically do not interact with the desktop Typically do not interact with the desktop

Note: Prior to Windows 2000 this was the only Note: Prior to Windows 2000 this was the only

way to start a process on a remote machine way to start a process on a remote machine

Now you can do it with WMI

Now you can do it with WMI

(48)

Mapping Services to Service Mapping Services to Service

Processes 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

(49)

Service Control Tools Service Control Tools

Net start/stop – local system only Net start/stop – local system only

Sc.exe (built in to XP/2003; also in Win2000 Resource Kit) Sc.exe (built in to XP/2003; also in Win2000 Resource Kit)

Command line interface to

Command line interface to all all service control/configuration functions service control/configuration functions Works on local or remote systems

Works on local or remote systems

Psservice (Sysinternals) – similar to SC Psservice (Sysinternals) – similar to SC Other tools in Resource Kit

Other tools in Resource Kit

Instsrv.exe – install/remove services (command line) Instsrv.exe – install/remove services (command line) Srvinstw.exe – install/remove services (GUI)

Srvinstw.exe – install/remove services (GUI)

Why are service creation tools included in Reskit?

Why are service creation tools included in Reskit?

Because Reskit comes with several services that are not installed as Because Reskit comes with several services that are not installed as services when you install the Reskit

services when you install the Reskit

(50)

Services Infrastructure Services Infrastructure

Windows 2000 introduced generic Svchost.exe Windows 2000 introduced generic Svchost.exe

Groups services into fewer processes Groups services into fewer processes

Improves system startup time Improves system startup time Conserves system virtual memory Conserves system virtual memory

Not user-configurable as to which services go in which processes Not user-configurable as to which services go in which processes 3rd parties cannot add services to Svchost.exe processes

3rd parties cannot add services to Svchost.exe processes

Windows XP/2003 have more Svchost processes due to two new less privileged Windows XP/2003 have more Svchost processes due to two new less privileged accounts for built-in services

accounts for built-in services

LOCAL SERVICE, NETWORK SERVICE LOCAL SERVICE, NETWORK SERVICE Less rights than SYSTEM account

Less rights than SYSTEM account

Reduces possibility of damage if system compromised Reduces possibility of damage if system compromised

On XP/2003, four Svchost processes (at least):

On XP/2003, four Svchost processes (at least):

SYSTEM SYSTEM

SYSTEM (2nd instance – for RPC) SYSTEM (2nd instance – for RPC) LOCAL SERVICE

LOCAL SERVICE

(51)

Further Reading Further Reading

Mark E. Russinovich and David A. Solomon, Mark E. Russinovich and David A. Solomon,

Microsoft Windows Internals, 4th Edition, Microsoft Windows Internals, 4th Edition,

Microsoft Press, 2004.

Microsoft Press, 2004.

Chapter 2 - System Architecture Chapter 2 - System Architecture

Operating System Model (from pp. 36) Operating System Model (from pp. 36)

Architecture Overview (from pp. 37) Architecture Overview (from pp. 37)

Key System Components (from pp. 51)

Key System Components (from pp. 51)

(52)

Source Code References Source Code References

Windows Research Kernel sources Windows Research Kernel sources

\Base\Ntos – core components of Ntoskrnl.exe

\Base\Ntos – core components of Ntoskrnl.exe

Note: WRK does not include source code for Note: WRK does not include source code for these components referred to in this module:

these components referred to in this module:

Windowing system driver (Csrss.exe, Win32k.sys) Windowing system driver (Csrss.exe, Win32k.sys) Windows API DLLs (Kernel32, User32, Gdi32, etc) Windows API DLLs (Kernel32, User32, Gdi32, etc)

Core system processes (Smss, Winlogon, Services, Core system processes (Smss, Winlogon, Services,

Lsass)

Lsass)

Références

Documents relatifs

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

Implements Windows User & GDI functions; calls routines in GDI drivers Implements Windows User & GDI functions; calls routines in GDI drivers Also used by Posix and

Kernel objects must be manipulated via Windows API must be manipulated via Windows API Objects – files, processes, threads, IPC pipes, memory Objects – files, processes, threads,

pviewer - processes and threads and security details (GUI) pviewer - processes and threads and security details (GUI) ptree – display process tree and kill remote processes (GUI)

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

Passport / Mike Meyers' MCSE Passport / Brown & McCain / 222569-6 / Chapter 1 Color profile: Generic CMYK printer profile.. Composite

Remote Assistance requests are enabled by default in Windows XP, so any users running Windows XP can request assistance from any experienced user running Windows Server 2003 or

(Application Center 2000, as you learn in Chapter 4, adds to the native NLB service that Windows 2000 Advanced Server provides.) You have multiple benefits for using Windows