PDC09 – Pre-conference – Windows 7 Bootcamp Part 2/6 – Core Kernel Changes
More Core Platform Support
-
Supporting Mode than 64Lps
-
Introduction of the Processor Groups
-
Windows Server 2008 R2 introduces processor Groups
- Each processor groups can contain up to 64 LPs
- System support up to 4 groups in this release
- Maintains compatibility with legacy systems
-
Windows Server 2008 R2 introduces processor Groups
-
Introduction of the Processor Groups
-
Processes and Threads
- Processes can contain threads executing in multiple groups
- Processes are assigned groups in round robin fashion
-
Threads are assigned to a group based on:
- Inheritance from creating thread
- Using new group affinity API
-
Task Based Scheduling
- Runtime support task based concurrency want to control when and where tasks execute
-
Why not use kernel threads to represent tasks
- Context switches between threads involve the kernel scheduler
- Runtime loses control when blocking event occurs
-
UMS – User Mode Scheduling
- Enables switching between threads in user mode
- Returns control to the runtime when a thread blocks in the kernel
-
Architecture
-
Divides threads into a user and kernel portion
- Together these comprise a UMS Worker Thread
- Creates to views of what is being made
-
When a Worker thread enters the kernel
- porting of the Scheduler thread enters wait state
-
Worker thread wakes and executes kernel
service
- Ensures correct kernel state for the Worker Thread
-
Divides threads into a user and kernel portion
-
The Dispatcher Lock
- Dispatcher database lock originally protected the integrity of all scheduler related data structures
-
Over time additional locks introduced to reduce
contention
- Thread locks, timer table locks, PRCB locks
- Still synchronizes
-
Replaced in Windows 7 by Coarse-Grained lock
- Well defined locking hierarchy
- Per-object locking used for object paths
- Many Operations are lock-free
- Uses transactional semantics for waits