Unless I'm mistaken, this is only kernel mode stack space, which is why it has to be contiguous, so it'd never be used for IO. A process will generally spend most of its time running in userland, where its stack isn't affected by these issues (as its pages can be scattered in real memory). Upon requesting some IO, the kernel mode stack space might just contain a pointer to the address where the IO is to be read to, and the address of where to jump back to in userland after it's finished the IO call etc. This is of course very highly simplified (eg, it'll more likely be pointers to memory structures which will contain list of pointers to read to etc), but I believe it explains the fundamentals.