Several goals were established at the outset of this research. The scheduling facility needed to:
Support fibers, a feature new in Windows NT 4.0, and abstract working with them so that the core engine would not need separate code lines for thread mode and fiber mode
Avoid causing a thread to switch into kernel mode whenever possible
Avoid context switches as much as possible
Support asynchronous I/O and abstract working with it so that the core engine would not need a separate code line for versions of Windows that do not support asynchronous file I/O (e.g., Windows 9x and Windows ME)
Ultimately, it was decided that SQL Server 7.0 should handle its own scheduling. From that decision, the User Mode Scheduler (UMS) component was ...