Hello everyone, this is Liang Xu.
No matter what operating system we use, whether it is Windows, macOS or Linux, many software, drivers and firmware are installed in it. But is there a difference between these three concepts?
I did a small survey in the circle of friends, and found that many people do not know their relationship, so I wrote this article to make a simple science popularization for everyone.
The text description is too abstract, let's just look at the comics.
Okay, after reading the comics, let's look at the formal explanation.
Simply put, the fundamental difference between firmware, drivers, and software lies in their design goals.
- Firmware is a program that gives life to the hardware of the device
- Drivers are the middleman between the operating system and hardware components
- Software can operate hardware indirectly
1. Firmware
Firmware is the program written into ROM (Read Only Memory). The firmware is the most basic and lowest level work of a system and directly controls the hardware. For example, the BIOS is the first program to start after the computer is powered on. It can interact with the hardware. And check it for any errors.
The BIOS calls another program called the boot loader, which performs the job of waking up the sleeping operating system in the hard drive and placing it in random access memory (RAM).
We can see firmware on many devices, including computers, mobile phones, remote controls, game consoles, smart watches, USB drives, and various embedded systems. Even the TV remote control has a pre-installed firmware, which allows the TV to switch channels when you press the button.
2. Drive
Drive: A driver is a small piece of code added to the operating system that contains information about the hardware device. When a computer program requests to interact with a hardware device, the device driver acts as a converter of instructions between the hardware device and the program that uses it.
The operating system does not support all the hardware on the machine, so in general, hardware manufacturers have to write drivers for their own hardware.
Each driver is designed to work for a specific or group of devices. On the computer, the driver uses various bus interfaces to contact the device. In addition, drivers generally do not directly interact with users, so many users are completely unaware of their existence.
Driver development needs to be very careful, because it directly deals with the hardware, but also with the operating system. If there is a problem with the device driver, it may cause the system to crash, which is why a professional or team is needed to write a driver for the device.
But why not make the Firmware perfect, without driver support? Because there are different operating systems, and these operating systems have completely different ways of operating hardware. Therefore, the drivers of different operating systems are not compatible. The reason is that the drivers serve the operating system.
3. Software
Unlike hardware, software runs on a computer, so you can't see it or touch it.
The operating system is also a piece of software and provides a working space for other software installed on the operating system. The device driver mentioned earlier is actually a kind of software, but it has a more subdivided type called system software.
If the user writes a piece of software and wants to operate the hardware (such as CD-ROM, U disk, etc.), he must implement it through the interface provided by the operating system, and cannot directly interact with the hardware.
It is worth noting that software is a broad term. The "software" we refer to in daily use generally refers to application software, such as WeChat, QQ, browsers, and so on.
Anything else you don’t understand, welcome to communicate in the comment area~
Originality is not easy, welcome to like and forward the circle of friends, thanks!
Finally, recently, many friends asked me for Linux learning roadmap , so based on my experience, I spent a month staying up late in my spare time and compiled an e-book. Whether you are in an interview or self-improvement, I believe it will be helpful to you!
Give it to everyone for free, just ask you to give me a thumbs up!
eBook | Linux Development and Learning Roadmap
I also hope that some friends can join me to make this e-book more perfect!
Gain? I hope that the old guys will have a three-shot combo, so that more people can see this article
Recommended reading:
- dry goods | essential resources for programmers, advanced architects, free
- book list | programmer must-read classic book list (HD PDF version)
Welcome to follow my blog: Liang Xu Linux Tutorial Network , full of dry goods!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。