Question

If operating systems use 'drivers' to communicate with external devices, does that then mean that OS's (like windows, linux, & osx) have to come prepackaged with drivers for every single external device, ever created?

I ask this because I have never, personally, had to go download a driver for an external device. When i install a new graphics card or plug in something through USB it seems that the operating system already has drivers for everything, but how is this feasible?

For example, what if some company out in the middle of nowhere, randomly, decide to start developing a new network card or graphics card.

How exactly does the various OS's get a hold of drivers for this new device? Does the company have to develop the drivers themselves? and then proceed to notify the various operating systems?

How does the operating system maintainers know if the drivers are safe? i mean if they have drivers for every single piece of hardware it must be impossible to audit everything.

and what about smaller, hobbyist, OS's? How do they get drivers for various devices?

and furthermore how are things like the BIOS chip able to communicate with various hardware devices? does it have drivers for every single piece of hardware ever created, too?

Was it helpful?

Solution

  • Yes, OSes come prepackaged with drivers. Normally they are loadable, and don't get loaded unless the device in question is installed. In many cases, the driver may be not on the original media but would be downloaded when the OS detects a new device.

  • No, not for every single device ever created. For many devices, drivers are available form the device's manufacturer, and are not included into OS distributions. A problem with many Android phones is that the drivers for particular hardware are proprietary binary blobs, never upstreamed or even made otherwise available, so running things like PostmarketOS depends on reverse-engineering, to a degree.

  • A number of devices need a class-compatible driver. A network card can live well with a generic / reference driver for the NIC chip it uses, provided by the chip manufacturer, or even a driver for a backwards-compatible chip. Most USB devices do not need specific drivers because they follow a class specification for a keyboard, a mouse, a network interface / modem, etc.

  • Hobbyist OSes are screwed. If they are run on real hardware, you end up with drivers for the hardware that enthusiastic contributors may have. They can run graphics in a VESA framebuffer mode, without any acceleration; still much better than nothing! USB support helps a lot: you can have keyboards, mice, networking, and maybe even external storage with relatively little effort. Many hobbyist OSes run on very particular hardware (an IBM PC, an Amiga), or just in QEMU, virtualbox, etc, so they need to support a small number of drivers to become usable.

  • BIOS is specific to the motherboard; it is loaded with knowledge about particular mass-storage controllers to allow booting from them. At best, it knows about USB devices, and maybe can draw a GUI using a USB mouse and a VESA framebuffer. RAID controllers used to come with own BIOS to allow booting from them, etc.

Licensed under: CC-BY-SA with attribution
scroll top