OS vs device drivers
Moderator: Thanas
OS vs device drivers
Something mentioned in the most recent Vista thread had me thinking about device drivers, and after a little research, there's still something I'm still not sure I understand -- why the heck are operating systems expected to handle so much of the device driver problem?
First of, let me say I'm not a total idiot when it comes to computers, but hardly a developer or computer engineer. I've managed with some effort to assemble a computer from parts a while back, I vaguely know my way around some basic scripting, I'm responsible at my firm for supporting and training staff on a particular subset of our software (AutoCAD/ADT, Revit, etc), and so forth. But being able do this stuff doesn't mean I really understand the deep inner guts of it all that well.
It seems to me that OS's like Windows or MacOS try to do all this crap that doesn't really belong in the OS (maybe Linux does too, but I wouldn't know). Device-detection is one of the big ones that sticks out to me. Couldn't device manufacturers create a basic standard for their hardware interface so that people don't run into the "my new OS doesn't see my mouse" problem? It doesn't have to be everyone, just everyone in a particular group of devices -- optical drives, hard drives, mouses, etc. It might sound absurd but it's done in other industries.
Even if the manufacturers end up giving you a disk (or download) with a better control panel and optimized driver for their device, having a basic standard starting point seems like it would solve a lot of grief. When a new OS is coming out, the OS manufacturer could make available the points of interface in the OS for the device manufacturers if they want to update their "full version" of the driver.
The only time this seems like it might be difficult is when we're talking about things like motherboards or graphics cards, but those are a compatibility problem with new OS's anyway, right?
What am I missing here?
First of, let me say I'm not a total idiot when it comes to computers, but hardly a developer or computer engineer. I've managed with some effort to assemble a computer from parts a while back, I vaguely know my way around some basic scripting, I'm responsible at my firm for supporting and training staff on a particular subset of our software (AutoCAD/ADT, Revit, etc), and so forth. But being able do this stuff doesn't mean I really understand the deep inner guts of it all that well.
It seems to me that OS's like Windows or MacOS try to do all this crap that doesn't really belong in the OS (maybe Linux does too, but I wouldn't know). Device-detection is one of the big ones that sticks out to me. Couldn't device manufacturers create a basic standard for their hardware interface so that people don't run into the "my new OS doesn't see my mouse" problem? It doesn't have to be everyone, just everyone in a particular group of devices -- optical drives, hard drives, mouses, etc. It might sound absurd but it's done in other industries.
Even if the manufacturers end up giving you a disk (or download) with a better control panel and optimized driver for their device, having a basic standard starting point seems like it would solve a lot of grief. When a new OS is coming out, the OS manufacturer could make available the points of interface in the OS for the device manufacturers if they want to update their "full version" of the driver.
The only time this seems like it might be difficult is when we're talking about things like motherboards or graphics cards, but those are a compatibility problem with new OS's anyway, right?
What am I missing here?
The interfaces themselves are standard, a video card will be recognized as a video card, and will display at least a 256 color image, a hard drive will be recognized as a hard drive and will work, even if it doesn't use any fancy functionality, a usb device as a usb device, and unless it's pretty exotic it will function without a problem, and so on. It's the little changes in hardware among the different manufacturers that make different pieces of hardware fail.
Windows being a OS for an open platform means it will have to deal with any given number of possible hardware combinations, rather than a small controlled amount of them, like other operating systems, so it's only to be expected that not every developer will have their own drivers ready as soon as possible.
Linux has this problem too, though it's pretty small now a days and gets smaller as it matures, about a decade ago driver finding could be a nightmare.
Reading people complaining about Vista not being ready to run every single thing they had running on XP gets a from me every time, first because it's more of a responsibility of the manufacturer and second because what do you expect getting a just released OS for an open platform? I'll eventually catch up, but in the mean time all you can do is wait for adecuate drivers or just let Vista mature and stick to XP for the time being.
Windows being a OS for an open platform means it will have to deal with any given number of possible hardware combinations, rather than a small controlled amount of them, like other operating systems, so it's only to be expected that not every developer will have their own drivers ready as soon as possible.
Linux has this problem too, though it's pretty small now a days and gets smaller as it matures, about a decade ago driver finding could be a nightmare.
Reading people complaining about Vista not being ready to run every single thing they had running on XP gets a from me every time, first because it's more of a responsibility of the manufacturer and second because what do you expect getting a just released OS for an open platform? I'll eventually catch up, but in the mean time all you can do is wait for adecuate drivers or just let Vista mature and stick to XP for the time being.
The "problem", if you want to call it that, isn't the device manufacturers, but the OS developers. MS has a different driver model than Apple (hell, MS has different models between 9x, 2k/XP and Vista). Linux and Unix have different different driver models than those OSes, and even between each other.
As Shogoki said, all the hardware all runs on defined, open interfaces (PCIe, PCI-X, USB, Firewire, SATA, etc), and expect data to be delivered in accordance with those specifications (such as IOCTL blocks for disk drives), but the drivers, which must be programmed differently for each OS, have to tell the OS how to package the data and which commands to send.
As Shogoki said, all the hardware all runs on defined, open interfaces (PCIe, PCI-X, USB, Firewire, SATA, etc), and expect data to be delivered in accordance with those specifications (such as IOCTL blocks for disk drives), but the drivers, which must be programmed differently for each OS, have to tell the OS how to package the data and which commands to send.
Just a quick note, do to standardization, pretty much all the examples in the first post (HD, optical, mouses, keyboards) will work without an 3rd party driver (manufacturer driver). Same goes for a lot of other stuff (flash based memory devices, bluetooth controllers, USB controllers, processors, etc.).
The big things that don't work with generic drivers are, as DXIII has already shown, graphics, motherboards, various non-standard devices (mobile phones, 3G internet through mobile networks cards, all the strange things that you can connect to the computer using USB, etc.).
The big things that don't work with generic drivers are, as DXIII has already shown, graphics, motherboards, various non-standard devices (mobile phones, 3G internet through mobile networks cards, all the strange things that you can connect to the computer using USB, etc.).
- Arthur_Tuxedo
- Sith Acolyte
- Posts: 5637
- Joined: 2002-07-23 03:28am
- Location: San Francisco, California
I'm completely talking out of my ass here, but isn't it possible to use virtualization to write drivers that will function independent of OS?
"I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark." - Muhammad Ali
"Dating is not supposed to be easy. It's supposed to be a heart-pounding, stomach-wrenching, gut-churning exercise in pitting your fear of rejection and public humiliation against your desire to find a mate. Enjoy." - Darth Wong
"Dating is not supposed to be easy. It's supposed to be a heart-pounding, stomach-wrenching, gut-churning exercise in pitting your fear of rejection and public humiliation against your desire to find a mate. Enjoy." - Darth Wong
In theory, you could have a hypervisor handle most of the work and have "simple" drivers for the hosted operating systems ... but you still have to deal with those "simple" drivers (for 3D acceleration and whatnot it might be quite complex, actually), and you still need to write the hypervisor's "complex" drivers.Arthur_Tuxedo wrote:I'm completely talking out of my ass here, but isn't it possible to use virtualization to write drivers that will function independent of OS?
Thanks for the responses on this from everyone.
It seems like it would be in everyone's interest to do so... MS wouldn't get users complaining about the new OS for something that's out of their power, and the manufacturers would be able to slap bright and shiny stickers on their packaging about how they're "Vista Ready!" Instead we have folks saying they don't intend on upgrading for a year or two so their drivers will be ready.
(emphasis mine) Even with the understanding that its largely the manufacturers, is it really too much to ask that a product be actually ready for use when it comes out, especially if you're going to be putting only this new version of the product and not the older version on a large majority of new computers sold? I know we all have been trained to expect otherwise, but it doesn't sound that unreasonable to me... see my next point.Shogoki wrote:Reading people complaining about Vista not being ready to run every single thing they had running on XP gets a Rolling Eyes from me every time, first because it's more of a responsibility of the manufacturer and second because what do you expect getting a just released OS for an open platform?
I get this. What I guess I'm not getting is why it seems like its such a problem for the device manufacturers to get their drivers working in time for release of the OS (like people's complaints about Vista and their graphics cards). Doesn't MS release this kind of information to manufacturers well in advance?Destructionator XIII wrote:Each OS provides a different interface to the kernel for its drivers, so the driver people often have to rework their drivers for a new OS. The different interfaces are sometimes a design efficiancy decision - one is better than another or offers more features, or maybe the kernels are sufficently different that what works for A doesn't fit in kernel B's design.
It seems like it would be in everyone's interest to do so... MS wouldn't get users complaining about the new OS for something that's out of their power, and the manufacturers would be able to slap bright and shiny stickers on their packaging about how they're "Vista Ready!" Instead we have folks saying they don't intend on upgrading for a year or two so their drivers will be ready.
Can you explain this a bit? It sounds like you're making almost a second OS to handle the drivers in this situation. Maybe that isn't such a bad idea, because it lets the OS just handle the GUI and the basic functions, but it sounds redundant.phongn wrote:In theory, you could have a hypervisor handle most of the work and have "simple" drivers for the hosted operating systems ... but you still have to deal with those "simple" drivers (for 3D acceleration and whatnot it might be quite complex, actually), and you still need to write the hypervisor's "complex" drivers.Arthur_Tuxedo wrote:I'm completely talking out of my ass here, but isn't it possible to use virtualization to write drivers that will function independent of OS?
MS has had the driver model finalized for at least a year now, and that information was available to third parties. ATI/AMD was mostly on the ball, and got their drivers good shape (not they don't have issues, but they had a much better Vista driver than Nvidia). Nvidia appears to have underestimated the resources required for developing Vista drivers, and they also develop a driver a completely new GPU architecture (the 8800) for both XP and Vista, so they've had a pretty rocky launch. And Creative hasn't done jack shit with their Vista drivers since December; granted, they work pretty well, but it would be nice to have WHQL release.Turin wrote:What I guess I'm not getting is why it seems like its such a problem for the device manufacturers to get their drivers working in time for release of the OS (like people's complaints about Vista and their graphics cards). Doesn't MS release this kind of information to manufacturers well in advance?
It seems like it would be in everyone's interest to do so... MS wouldn't get users complaining about the new OS for something that's out of their power, and the manufacturers would be able to slap bright and shiny stickers on their packaging about how they're "Vista Ready!" Instead we have folks saying they don't intend on upgrading for a year or two so their drivers will be ready.
On the flipside, MS ship Vista with drivers that work on every modern motherboard. Hell, they even work with Nvidia's 680i chipset (not all the functionality is exposed, but they do work).
- Ace Pace
- Hardware Lover
- Posts: 8456
- Joined: 2002-07-07 03:04am
- Location: Wasting time instead of money
- Contact:
Except Vista is a radically new platform for drivers.
I get this. What I guess I'm not getting is why it seems like its such a problem for the device manufacturers to get their drivers working in time for release of the OS (like people's complaints about Vista and their graphics cards). Doesn't MS release this kind of information to manufacturers well in advance?
nVidia and AMD, which make Graphics drivers, have commented at length on how complex it is to basically rewrite millions of lines of code.
Brotherhood of the Bear | HAB | Mess | SDnet archivist |
I'm really not being deliberately stupid here, I promise! But previously Arrow described a the relationship between standards and hardware as this:Ace Pace wrote:Except Vista is a radically new platform for drivers.
nVidia and AMD, which make Graphics drivers, have commented at length on how complex it is to basically rewrite millions of lines of code.
I guess what I'm asking is why is it that each OS presents such a radically different software interface between the driver and the kernel? Why don't software standards exist similar to the hardware standards? Is it just the result of the history of the market, or is there a legitimate engineering reason?Arrow wrote:As Shogoki said, all the hardware all runs on defined, open interfaces (PCIe, PCI-X, USB, Firewire, SATA, etc), and expect data to be delivered in accordance with those specifications (such as IOCTL blocks for disk drives)
That's interesting. I would have thought the manufacturers would put more priority on making sure their products work seamlessly with Vista, because of the market share. But this does seem to leave the drivers problem in the lap of the manufacturers.Arrow wrote:MS has had the driver model finalized for at least a year now, and that information was available to third parties. <snip specifics>
Because they're different OSes, designed with different philosophies and goals. I can't really think of a good way to describe it (and compare OSes to hardware standards), but you're basically looking at business decisions.Turin wrote: I guess what I'm asking is why is it that each OS presents such a radically different software interface between the driver and the kernel? Why don't software standards exist similar to the hardware standards? Is it just the result of the history of the market, or is there a legitimate engineering reason?
Yup.That's interesting. I would have thought the manufacturers would put more priority on making sure their products work seamlessly with Vista, because of the market share. But this does seem to leave the drivers problem in the lap of the manufacturers.