Erik van der Kouwe wrote:
> The situation as described here is not specific to MINIX, but applies to
> most UNIX-like operating systems. Other operating systems, like Windows, do
> provide graphics as part of the operating system though I am not sure to
> which extent that is done in the kernel (Windows is able to restart
> graphics drivers so there is probably some form of isolation).
As I understand it, the basic design of Windows is
- hardware device(s)
- HAL which provides the hooks and bolts to interface with the rest of
the platform (PCI arbitration, for example)
- "video kernel-mode driver", provided usually by the hardware vendor
(which failures usually cause BSoD)
- win32k/dxg graphics manager which is a ring0 server provided by
Microsoft (design was much like Minix servers in NT3, but was moved into
kernel space for performances reasons)
--- privilege transition ---
- "video user-mode driver", provided usually by the hardware vendor
(which one is sometimes "restarted"), linked with a MS-provided library
which provides unoptimized implementation of most features
- several graphics APIs (GDI, OpenGL, GDI+, DirectX, WDDM) as well as
the text-mode console; later is very much analogous to Minix's tty.c.
The user-mode video driver can also been seen as an optimized
implementation of the features that the hardware my be able to perform,
which is linked with the generic graphics code (so simpler hardwares
have the most basic drivers, while powerful ones have the more complex
drivers... while are more prone to bugs.)
I am not sure the full design of X11 is very different: the "video
kernel-mode driver" is usually called the frame-buffer providing
interface, but the difference here is between a functional description
as opposed to an architectural one, I think.
Antoine