A method of operating a computing device comprising a plurality of hardware components, the method comprising: receiving a command to shutdown the computing device; and in response to the received shutdown command: the computing device determining whether the computing device is in an operating state where a full shutdown is required or whether a hibernation file is to be created, the determining including determining that configuration settings of an installed component were changed and will not be applied until the component again is loaded as part of a full startup sequence, in case such a condition is detected, completing a shutdown sequence until the computing device is fully powered down, otherwise partially completing the shutdown sequence until the computing device is in a target state in which the operating system state is maintained and all user sessions have been broken down; when the computing device is in the target state, creating the hibernation file and transferring system state information defining the state of the computing device to the hibernation file in the non-volatile storage including flushing dirty data to the non-volatile storage, wherein dirty data is data in the volatile memory that does not match corresponding data in the non-volatile memory; and powering down at least a portion of the plurality of hardware components, wherein partially completing the shutdown sequence comprises breaking down all user sessions so that user state information is no longer available in volatile memory. receiving a command to shutdown the computing device; and in response to the received shutdown command: the computing device determining whether the computing device is in an operating state where a full shutdown is required or whether a hibernation file is to be created, the determining including determining that configuration settings of an installed component were changed and will not be applied until the component again is loaded as part of a full startup sequence, in case such a condition is detected, completing a shutdown sequence until the computing device is fully powered down, otherwise partially completing the shutdown sequence until the computing device is in a target state in which the operating system state is maintained and all user sessions have been broken down; when the computing device is in the target state, creating the hibernation file and transferring system state information defining the state of the computing device to the hibernation file in the non-volatile storage including flushing dirty data to the non-volatile storage, wherein dirty data is data in the volatile memory that does not match corresponding data in the non-volatile memory; and powering down at least a portion of the plurality of hardware components, wherein partially completing the shutdown sequence comprises breaking down all user sessions so that user state information is no longer available in volatile memory. the computing device determining whether the computing device is in an operating state where a full shutdown is required or whether a hibernation file is to be created, the determining including determining that configuration settings of an installed component were changed and will not be applied until the component again is loaded as part of a full startup sequence, in case such a condition is detected, completing a shutdown sequence until the computing device is fully powered down, otherwise partially completing the shutdown sequence until the computing device is in a target state in which the operating system state is maintained and all user sessions have been broken down; when the computing device is in the target state, creating the hibernation file and transferring system state information defining the state of the computing device to the hibernation file in the non-volatile storage including flushing dirty data to the non-volatile storage, wherein dirty data is data in the volatile memory that does not match corresponding data in the non-volatile memory; and powering down at least a portion of the plurality of hardware components, wherein partially completing the shutdown sequence comprises breaking down all user sessions so that user state information is no longer available in volatile memory.