DISCLAIMER: This site is a mirror of original one that was once available at http://iki.fi/~tuomov/b/
The specific problem is that the kernel or other trustable component does not provide video mode and virtual console switching capability. Instead, applications that want to use graphics modes, direct keyboard input, and so on, are expected to take full control of the console, and reinvent virtual console switching functionality. This was the case with SVGAlib in the old days when XFree86 was too heavy to run on a poor 486 with 8 megabytes of memory, and was a constant source of irritation and reboots. It still remains a problem with XFree86/Xorg, even though some components (the direct rendering manager) have been moved to the kernel side. The X server is still expected to take control of the console, and to provide virtual console and video mode switching capability. Would you trust that to such bloatware as XFree86/Xorg? I wouldn't, and experience agrees that they can not be trusted with the task. Still the number one reason why Linux needs to be rebooted is X hanging. The loftiest tunes continue on playing, but the victims of poor software design lie unresponsive on the floor.
Pre-emptive multitasking should not be only about allotting CPU time slices to applications; it should also be about allotting console time as per the user's wishes. Linux seriously fails in delivering this by entrusting it to such bloatware as XFree86/Xorg.