There is no user involved in RESETing the systems we have deployed. They have no keyboard, so nobody can do a user requested reset. What end-users eventually do as a last resort is to turn-off power.Brendan wrote:When a reset is requested by the user (e.g. they close all their applications and ask the OS to reset the computer so they can boot a different OS); the system shouldn't be unstable. When a reset is requested by software (e.g. maybe some sort of kernel upgrade thing?) then the system still shouldn't be unstable.
The only case where the OS wouldn't be stable is if the OS was unstable before the reset was requested. For example, if your kernel crashes and the "kernel panic" requests a reboot. Hopefully this never happens in official releases because you're potentially screwed regardless of what you do.
The resets that happens are of the following types:
1. Remote-resets from our management system. If that fails, you need to call service-personell to the site (expensive).
2. Automatic resets because of program bugs in application or kernel. These are triggered by faults (typically page fault or protection fault). When these faults happen in the application, the system state generally stable. When they happen in kernel, the system might be unstable. Currently, most of these faults are in the application, but some are in device-drivers.
3. Kernel panics. These happens in the scheduler, so the system is generally unstable. We don't know how many there are of these as they leave no traces other than reinstalls. Probably quite uncommon.
4. Upgrades. When the application or kernel is upgraded, the system must be restarted.
5. Hard-resets that turn off the power for the complete system when some external component has hung-up. This is done by dedicated hardware from an OS-driver.