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
  • 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
  • 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

No Comments