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