A. With Hyper-V R2 SP1's dynamic memory feature, memory is assigned to needy virtual machines (VMs) as they announce that they need it. As you can imagine, constructing an architecture to accomplish this task isn't a situation where individual VMs should have much say in the results.
Think about this situation from the perspective of the team who developed Microsoft's dynamic memory feature. You wouldn't want VMs themselves to make decisions about how much RAM they're assigned. Any one VM could simply request all the available memory, hogging it for itself. And there would be a security threat—a would-be attacker could craft an exploit to hog all the RAM, essentially shutting down memory access to every other VM.
It's a much better idea to create a process thread on the host. That process thread can use Hyper-V's built-in VSC/VSP interface to monitor memory needs across every VM. From its position outside of every VM, it can make informed decisions about where to assign memory.
The process thread that accomplishes this in Hyper-V is called the memory balancer. You can learn more about what the memory balancer is seeing by checking out its PerfMon counters under the counter group label of Hyper-V Dynamic Memory Balancer.