I like to know how exactly suspending proceeds in Ubuntu,
- Is any hardware completely cut from power or their process is just minimized?
- Other than the screen which parts are put on hold or their power is cut off?
- If there is any power consumption when suspended, how can I know how much it is and how long I can expect my laptop to be able to be revived before battery is drained?
- What happens exactly for hard disk and is it safe to carry around the laptop without damaging the hard disk when suspended?
When a machine goes into the suspend state the kernel freezes (stops) user space programs and kernel threads. Then the kernel will traverse all the devices and calls the suspend methods on each driver. Each driver has the know-how to put the hardware into a deep sleep state (or even power it off) (and the converse to bring it back to a sane running state when the resume occurs). At this point the hardware should be in a low power state (and hence the Hard Disk will be powered off).
The Kernel wakeup code address is written to an address as specified by an ACPI FADT table, then x86 Power Management Control registers are written to; this effectively powers off the processor but keeps memory in a self-refresh mode.
When resume occurs, the CPU is restarted and after a short time in the firmware (BIOS/UEFI) jumps to the wake up address provided by the kernel and the kernel jumps back into protected mode and restores its state. It then traverses the drivers and these resume all the devices. Then frozen processes are thawed and the kernel returns back to user space.
So to answer your questions:
1 and 2: Devices drivers try to put devices into the deepest sleep state, some devices can be powered down, some may be just in the deep sleep state consuming very little power. It depends on the hardware and the device driver.
Memory is being refreshed, it is never powered off. The CPU is effectively stopped, but it depends on the CPU model on how much of the package is actually fully powered off.
remove AC power supply, then run:
..wait 1800 seconds (30 minutes) and it should power back on and give an estimate.