Why did Microsoft put the GUI in Ring 0?
Because this gives quite an advantage in speed. Contrary to a GUI-server, which will run in its own process, there are no context changes necessary when performing GUI operations. This does make the architecture less clean of course, and when the GUI crashes, the whole system crashes. The same discussion took place in Redmond, when the GUI went into the kernel in Microsoft(R) Windows(R) NT 4.0. They came to the conclusion that the GUI has matured, so that nothing will go wrong unless a faulty driver is present, and that the consequences are similar to when something goes wrong in user mode.