Software Updates in devices I want to know what is actually happening when we upgrade a device's software. For example we upgrade a device from Android ICS to Jellybean. We do download JellyBean from the server. Then we will install it. My question is: during installation does it replaces the ICS in memory or it resides in separate memory?

I know the Kernel is same for both ICS and JB. Can we downgrade to ICS from JB?
The new version replaces the old version, just like upgrading to a new Windows version or a new version of Ubuntu on your PC.

Also, it's not the case that the kernel is the same for ICS and JB. ICS uses a Linux kernel based on the 3.0.1 release, whereas JB's kernel is based on 3.0.31. Android-specific patches to the kernel were also added between the two versions, to support new driver features. But you can downgrade a device to an older version if you have a ROM image to downgrade to, whatever kernel versions they use. The only difference the kernel version makes is that if a device wasn't designed to support a particular kernel version, the manufacturer would have to supply device drivers for the target kernel in order to make a suitable ROM.