Recently I install a graphic device driver in Linux, I found that is only dozens of KB. But that is dozens of MB in windows. I wonder why?
The kernel drivers for Linux (the .ko files) will only handle hardware access as well as some basic functionality.
For graphics drivers, that would be
all of these can be implemented in a few kilobytes, especially when other components are reused.
Complex operations like OpenGL rendering, Shader compilation and submission, etc. are not handled in the kernel, as that would jeopardize system stability. Rather, these are handled in a separate process, usually either the X server or a program using 3D graphics, and then a list of commands is sent to the driver, which simply passes it on to the card. Again, this driver heavily reuses components.
Under Windows, the philosophy is to squeeze all of this into the kernel module (.sys) as there is no benefit from componentizing (the various vendors do not generally work together).
well that would be because most of the driver files required will actually be there in Linux so that's why not many files required for that graphic device. where as for Windows, those device drivers might not be included in the core so that's why more driver files are required. Hence, Bigger size.