Faster Boot Times in Windows 8: Building Windows 8
A new entry in the “Building Windows 8″ blog has been published, titled “Delivering Fast Boot Times in Windows 8″. He recognizes that boot time is one of the features most discussed about, and says the Windows division wants your boot to be as fast as possible. It comes as a welcome addition to the information that we’ve been given about Windows 8 – Windows 7 and its predecessors seem like lightyears behind Apple products in terms of booting up. I’m sure that everyone reading this post has encountered long periods of frustration as your computer restarts in what seems like an eternity.
He displays this new need for a faster startup time with two graphs:
This means that on average on nearly every Windows 7 device (I’m assuming no tablet inclusion) 51% of all power transitions are shutting down, which really outlines the importance of improving this feature.Their solution?A new hybrid combination of the tradition cold bootup and resuming from hibernate.An explanation of shutting down and boot, worded excellently by Mr. Sinofsky, is in order:
The user initiates a shutdown by selecting “shut down” from the Start menu, or by pressing the power button; or an application initiates shutdown by calling an API such as ExitWindowsEx() or InitiateShutdown().
Windows broadcasts messages to running applications, giving them a chance to save data and settings. Applications can also request a little extra time to finish what they’re doing.
Windows closes the user sessions for each logged on user.
Windows sends messages to services notifying them that a shutdown has begun, and subsequently shuts them down. It shuts down ordered services that have a dependency serially, and the rest in parallel. If a service doesn’t respond, it is shut down forcefully.
Windows broadcasts messages to devices, signaling them to shut down.
Windows closes the system session (also known as “session 0”).
Windows flushes any pending data to the system drive to ensure it is saved completely.
Windows sends a signal via the ACPI interface to the system to power down the PC.
After pressing the power button, the PC’s firmware initiates a Power-On Self Test (POST) and loads firmware settings. This pre-boot process ends when a valid system disk is detected.
irmware reads the master boot record (MBR), and then starts Bootmgr.exe. Bootmgr.exe finds and starts the Windows loader (Winload.exe) on the Windows boot partition.
Essential drivers required to start the Windows kernel are loaded and the kernel starts to run, loading into memory the system registry hive and additional drivers that are marked as BOOT_START.
The kernel passes control to the session manager process (Smss.exe) which initializes the system session, and loads and starts the devices and drivers that are not marked BOOT_START.
Winlogon.exe starts, the user logon screen appears, the service control manager starts services, and any Group Policy scripts are run. When the user logs in, Windows creates a session for that user.
Explorer.exe starts, the system creates the desktop window manager (DWM) process, which initializes the desktop and displays it.
The thing to remember is that in a traditional shutdown, the user sessions are closed and in the kernel session services and devices are closed to prepare for shutdown. In Windows 8, they close the user session but instead of closing the kernel session, it is hibernated. Hibernation basically means saving the system state and memory on disk (hiberfil.sys), and then reading that back on resume. Pairing it with boot gives a boost for boot times, since reading the hiberfile and reinitializing drivers is faster on most systems they’ve tested. Here are some helpful graphs for those of you skimming past the words: