Linux is doing preemtive multitasking but X is doing cooperative.
X is responsible for sending key strokes to the processess and
updating the display. It is possible for a single process to
"grab" X and not give it up until it feels like it.
Though I generally love X, it doesn't really seem to be designed
with the same ideas of robustness and efficiency that where
used when writting the kernel. X really should be multi-threaded
and do a better job of isolated processes from each other.
Ty