So what makes you feel a "virtual address" is any less real than a "physical address"? Or that a virtual address's physical addresses won't change as the system runs?
Remember - even though the OS *manages* physical::logical address mapping, it's essentially a *hardware* operation.
This is a good link:
http://lwn.net/images/pdf/LDD3/ch15.pdf
PS:
No: "the kernel" does NOT "reside" in ZONE_DMA. The kernel manages ZONE_DMA (as discussed in the above link).
No: vmalloc() returns a VIRTUAL address. It may or may not be mapped to a physical address. And, in fact, it's entirely possible that the region allocated may NEVER actually be mapped to an actual physical address!
No: a logically contiguous area (consisting of N pages) may or may not map to physically contiguous area. Except possibly in the case of DMA buffers. Again: refer to the above link.
You might also find this article useful:
2.6 Kernel memory allocation: Robert Love
'Hope that helps!