gpu access host memory

I am aware of the 3 ways of transfering data from host to gpu

cudamemcpy, cudahostalloc(default), cudahostalloc(pinned).

What happens with pinned memory at a lower level?
When zerocopy who initializes the transfer/mapping, cpu or gpu?

Is there any way to have a piece of HOST memory dedicated to gpu and gpu can read, write, etc this piece autonomously without any involment of cpu (except some initialization of course)?
Can anyone tell me more about Unified Virtual Address Space (Cuda C programming guide Version 4.0 page 37)

I don’t think there is any involvement of the CPU in mapped memory once the mapping is established. And my belief is that pinning memory just means marking it for not being paged out to disk, as there is no mechanism for page faults on the GPU (I haven’t checked this though. Should be possible by looking at the Linux driver source code and/or [font=“Courier New”]strace[/font]ing a program using pinned memory).
I don’t really have any more information than that from the Programming Guide though.