Page 1 of 1
Vista's Approach to Drivers
Posted: Wed Mar 01, 2006 11:54 am
by elaverick
Having been flitting about the net, I can't help but stumble on the almost spam like posting of reports of Windows Vista. One thing did particularly catch my eye and that was that Vista's drivers are all run in user mode, the benefit for this (they claim) is that when a driver malfunctions it can be restarted without the need to restart the Kernel, they also note that this actually improves performance for things like the audio stack as there is no tedious switching for apps and games between user and kernel mode. What really gets me about this "revolutionary" idea is that its pretty much exactly what we used to do back in the days of DOS.
So my question is this... Is the past really the future for OS's? Should we be looking to go totally microkernel and remove everything but the very very most basic interface between the hardware and the Kernel? Any views?
(Incidentally I notice MS now have a prototype for using a dance mat to control your e-mails... I don't think I'll be looking to steal all their ideas.
http://seattlepi.com/audio/bishop/checkemail_s.wmv)
Re:Vista's Approach to Drivers
Posted: Wed Mar 01, 2006 12:19 pm
by Solar
elaverick wrote:
...the benefit for this (they claim) is that when a driver malfunctions it can be restarted without the need to restart the Kernel...
Microkernel. That benefit is only true if the malfunctioning driver was not related to file access. Or user interface, unless you implemented an automatic restart. Microkernel
enables this kind of driver-restart, but only if you put additional effort in it.
...they also note that this actually improves performance for things like the audio stack as there is no tedious switching for apps and games between user and kernel mode.
So-so. At some point, you either
have to switch to kernel mode to do the magic, or you expose the hardware to user space. The first eats performance, the second kills security.
What really gets me about this "revolutionary" idea is that its pretty much exactly what we used to do back in the days of DOS.
Ahem. DOS didn't have user mode IIRC. (Dunno really, I was a happy Amiga camper at that time.
)
So my question is this... Is the past really the future for OS's? Should we be looking to go totally microkernel and remove everything but the very very most basic interface between the hardware and the Kernel? Any views?
Lots, and lengthy, all to be found here in the forum. Search for "microkernel".
Re:Vista's Approach to Drivers
Posted: Wed Mar 01, 2006 12:23 pm
by Dex4u
I have been cracking on about this for a long time, big software company, will tell you that this is the best way to do something and 99% of people will follow.
When most of the time, its just that it's in there interest, to do things that way.
Big example of this, is multi-tasking, what a joke, this was a get round, for when CPU were very expensive, this is no longer the case, give it 10 years and you will see 1000 multi cores CPU.
Then these same software co, will tell you that multitasking is slow and giving each program a CPU or 2 or 4 etc, is the way to go.
That why when designing my OS, i looked back to the past, to see the future.
Re:Vista's Approach to Drivers
Posted: Wed Mar 01, 2006 1:48 pm
by Trashey
elaverick wrote:
What really gets me about this "revolutionary" idea is that its pretty much exactly what we used to do back in the days of DOS.
DOS didn't have user mode, everything ran in Ring 0.
I actually think this idea is very good, the minor performance penalty (ping-pong between the user mode driver and the kernel Redirector) is definitely worth not crashing the system when something gets seriously messed up.
Re:Vista's Approach to Drivers
Posted: Wed Mar 01, 2006 2:12 pm
by JoeKayzA
elaverick wrote:
One thing did particularly catch my eye and that was that Vista's drivers are all run in user mode, the benefit for this (they claim) is that when a driver malfunctions it can be restarted without the need to restart the Kernel,
...
I haven't got this yet: Which drivers (or classes of drivers) are they going to push into userspace exactly? I've always read that 'drivers are going to be executed it user space', but I doubt that they are suddenly heading for a _pure_ microkernel.
elaverick wrote:
...
they also note that this actually improves performance for things like the audio stack as there is no tedious switching for apps and games between user and kernel mode.
Well, running drivers in user mode doesn't really prevent this - you have to go to kernel mode anyway to do IPC to the driver's server process, unless you are using a really smart, asynchronous communication way over shared memory OR are executing the driver's logic in-process directly (like directX), but that mostly sacrifices security (as Solar stated before)... all in all I think it's always a compromise.
elaverick wrote:
What really gets me about this "revolutionary" idea is that its pretty much exactly what we used to do back in the days of DOS.
Well, DOS decided not to use memory protection, so there were no costly ring transitions or address space switches anyway, but also no secure sandboxing of applications. As I said before - it's a compromise.
cheers Joe
Re:Vista's Approach to Drivers
Posted: Wed Mar 01, 2006 2:14 pm
by distantvoices
@Dex4U: 50% ACK, else NACK
Dex4u wrote:
I have been cracking on about this for a long time, big software company, will tell you that this is the best way to do something and 99% of people will follow.
When most of the time, its just that it's in there interest, to do things that way.
Yeah, up to this I ACK.
Dex4u wrote:
Big example of this, is multi-tasking, what a joke, this was a get round, for when CPU were very expensive, this is no longer the case, give it 10 years and you will see 1000 multi cores CPU.
Then these same software co, will tell you that multitasking is slow and giving each program a CPU or 2 or 4 etc, is the way to go.
That why when designing my OS, i looked back to the past, to see the future.
Here, my opinion diverges from yours, and my hankering to ack converges absolutely to zero. Multitasking isn't crap and cpu's be as many as there might be, they will always have stuff to do. What do you think is inside those big Cray machines, eh? Loads of cpu's doing the peeble-shifting stuff - there, multitasking is taken the way it is meant: schedule tasks to many cpu's in a fair manner, so that two jobs can be executed at the same time in parallel...
well, I could rant on, but ... yeah, I hope I've made myself clear. And btw, my workstation has four cpu's for the kernel to deal tasks to. Kinda busy thing, eh?
Stay safe
ps: ere someone asks: peeble-shifting stuff == calculating. Stems from latin meaning of calculus: to shift small stones (==peebles) around
Re:Vista's Approach to Drivers
Posted: Wed Mar 01, 2006 3:42 pm
by dh
not another flame war
.
I have a copy of Beta 1, but I can't install it on an emulator >:(. That's the only way Vista will ever see the light of day on MY system. I've flipped through the files, and it seems that even the demo has quite a good support base. "Danger Will Robertson, Microscoft is gaining strength!" comes to the minds of Linux and BSD right now I bet.
If Microscoft goes Micro (no pun intended) and tries to patent the concept of Microkernels or something dumb like that; I CALL FOR A BOYCOTT!!! Death to the low-life stealing, money-making d00dz! Other than that, I think it's a big step forward that windoze may be actually stable. As for the security thing, nothing a little "Secure computing" can't fix. It's just another paradox in life
.
Cheers, DH.
Re:Vista's Approach to Drivers
Posted: Wed Mar 01, 2006 4:30 pm
by Rob
I have "beta 2" [officially called february ctp] running here
Anyways, I'm pretty sure the info above is only partially right. I know it is definitely wrong for the audio part. As far as I know they've splitted things up. They have a kernel and user mode drivers, where before it was all kernel (basically). They might even have a kernel and user mode half for the "same" driver.
If I remember correctly what I think they've done is move as much as possible into user mode and left only the bare raw driver stuff in kernel land (as indicated before security would otherwise be compromised).
Anyway, for anyone who is interested there are some excellent movies up on msdn's channel 9:
There is a special series called
going deep that talks about low level stuff. Has two very interesting movies on Singularity as well.
This FAQ also seems to verify there are kernel and user mode drivers. From a quick glance on a presentation it seems they are moving everything that does not need to actually directly communicate with hardware (ie, drivers for devices on busses like USB, fireware, over the network etc.) into user mode. Only stuff that needs direct access to hardware *inside* the pc remains kernel mode (and if that might get split up, like the audio [new] or network stack [was always the case])
Searching on Windows Driver Foundation yields all kinds of documents and papers on that for anyone who is interested.
Now go loose a couple of hours