In the old days (40's-70's) you bought a computer from a company which manufacturered or insourced its own hardware, wrote all its OS software, and most of its application software. The OS would only work on the sellers platform, using exactly the hardware they sold with the initial purchase. Applications were written in assembler, and would only work on that one platform, and had to be rewritten for every CPU, and often for every OS version. For every slight difference in hardware, a new version of the OS needed to be built and maintained. In short, the Hardware, the OS, and the Applications were all non-portable.
Portability became a big concern in the 60's as computing started to become commoditized. Unix and the C programming language have long been hailed as two of the key technologies that ushered in a new era of portability. The Unix kernel was written largely in C, with only the tinest bit of CPU specific assembly, so any platform with a C compiler could run a C application developed for another platform, the OS Kernel included. Since we now had OS's that could run on multiple hardware platforms, we needed a way to support all that hardware without having it in the core of the OS. that’s where drivers come in. Unix could run on a thousand platforms, but didn't need to know how to access every kind of hardware that could occur on those platforms. all it needed was a driver designed to work with the hardware, and to plug into the unix kernel.
So in summation, drivers are not a problem needing an answer, they are an answer to a problem so big that it took an entire industry 5 decades to get right.