Vista's Graphics To Be Moved Out of the Kernel
Tiberius_Fel writes "TechWorld is running an article saying that Vista's graphics will not be in the kernel. The goal is obviously to improve reliability, alongside the plan to make most drivers run in user mode." From the article: "The shift of the UI into user mode also helps to make the UI hardware independent - and has already allowed Microsoft to release beta code of the UI to provide developers with early experience. IT also helps make it less vulnerable to kernel mode malware that could take the system down or steal data. In broader terms, this makes Windows far more like Linux and Unix - and even the MacOS - where the graphics subsystem is a separate component, rather than being hard-wired into the OS kernel."
IT also helps make it less vulnerable to kernel mode malware that could take the system down or steal data.
And it also helps with all the stupid DRM that the MPAA/RIAA wants to force down our throats! Yay, when I wanna watch DVDs on my computer in the future I have to get a new OS, new monitor, new graphics card. Thank you for that innovation!
I enjoy large posteriors and I cannot prevaricate.
X11 was conceived 20 years ago and was an incredibly forward looking design; both Macintosh and Windows have now moved to an architecture very similar to it.
Unfortunately, technical and historical facts won't stop people from making bogus claims about their pet architecture. There are still lots of Mac zealots going around complaining about X11's supposedly inefficient "network transparent architecture" even though the Mac has pretty much the same architecture and is, if anything, less efficient. I imagine it will be the same with Microsoft zealots, although many of them will, in addition, claim that this architecture was invented by Microsoft.
No. This is not true and represents a misunderstandings about how the Win32 API is implemented in NT. For legacy reasons many windows programs would use the GUI APIs for internal IPC (why oh why wasn't LPC exposed to userspace though?). Anyhow, this mean that the Win32 subsystem server (CSRSS) ran both the GUI and the rest of Win32.
So a crash in the GUI (running inside the context of CSRSS) would result in all Win32 apps being shutdown. Perhaps the file services (part of SRV.SYS) would remain in the event of a GUI crash but any applications running under Win32 context would be lost. That was the reasoning that allowed M$ to temper DaveC's fears and move the GUI to WIN32K.SYS in NT 4.0.
I'm not defending the approach. I disagree with the GUI-in-kernelspace idea as well. I'm merely pointing out the way things went in terms of history. Ideally the GUI services and kernel services would be separate APIs in Win32 so that server and console applications could live without the GUI. But compatability was a major goal...
Personally, I would love to ditch the Windows GUI but keep the NT kernel. The NT kernel (despite the typical conditioned response of the average slashdotter) is quite good in many areas. The GUI API of Windows was inferior to OS/2's Presentation Manager (the big change being client area -> client window). Too bad OS/2 PM can't be run under the NT kernel. Oh well, it almost happened...
No, this is a classic example of an oxymoron (contradiction in terms).
Whereas I am an example of an ordinary moron.
I worked at a very large world-wide shop that saves a whole cycle of hardware upgrades by turning off the screen savers on their servers. Most of the admins were running the fanciest 3D CPU intensive screensavers they could find. When anyone would complain about performance they would go to the server, check task manager and come back with: "well it's only running at 20%". Finally someone thought to check the numbers remotely and discovered that the screensaver was by far the biggest hog. I don't think most Windows users, even the "pros" realize how much resource is involved in something as simple as moving the mouse, moving a window around or resizing it.
They made Windows so "easy" that even an idiot could administer it and...
Oh, never-mind.
It seems they have fixed almost everything that was wrong with windows. I mean:
And people complain that there is nothing new in Vista, phew... I mean if they manage to do all those things, and do them the right way like they seem to be decided to (for once...) it will be damn worth a new release...
And no, i'm not a microsoft fanboy, i've been using Linux since 97 and I really like it where it shines. But if you have even a little objectivity you can't say the stuff they're putting here is not interesting...
Because of the nature of video, it would be impractical for video drivers to live anywhere BUT in the kernel. (See also: "microkernel".) Neither Linux nor Mac OS X puts video drivers in user space. Doing so would not be a bright idea. (I would also note that Linux and Mac OS X seem to be quite stable with ATI driver bits in their kernels.... :-)
Drivers should be in the kernel if A. at least one of their primary clients exists in the kernel, e.g. disk controller drivers, B. they service a large number of clients directly (e.g. /dev/random), C. real-time performance is critical to the correct operation of the device (e.g. audio/video).
Historically, video cards typically only had one client at a time. These days, the windowing system (WindowServer in Mac OS X, X11 in Linux, the Windows GUI layer) is usually the primary client, with the OS kernel being a secondary client (command-line console, panic text, boot console, etc.) Further, the graphics hardware can also be directly driven by an application for things like full-screen games. In Mac OS X, the graphics hardware is also often used for other tasks, e.g. with CoreImage. Graphics cards also depend on direct access to hardware interrupts for performance to be adequate. Moving the drivers into user space would make adequate performance for these sorts of tasks nearly impossible.
Printers are the other extreme. They don't have their own hardware interrupts like with PCI devices, so if you're depending entirely on a faked software interrupt, the driver might as well be in user space. A printer will still print correct copy if the data arrives more slowly (up to a point, anyway). They only serve a single client (a local print spool of some sort) and cannot do more than one thing at the same time. Thus, printer drivers make no sense in the kernel.
Check out my sci-fi/humor trilogy at PatriotsBooks.