I read that when an OS call is executed, the process only undergoes a mode switch as opposed to a context switch. From my understanding, this will elevate the privilege of the process and allow it to access the kernel code which is mapped into it's virtual address space. (This will require a security ring change using a Trap gate I believe). However, if this OS call is going to perform IO, it might need to use the page cache. How does this happen without a context switch? Or is the page cache also mapped to every process's virtual address space? 

I could be wrong in some of my descriptions above. Correct me if I am. I am trying to piece this together. Also, I am more interested in the Linux kernel.