On Fri, Oct 14, 2011 at 4:40 PM, Dave McGuire <mcguire at neurotica.com> wrote:
But different kernels for different hardware
configurations are handled by
pluggable modules. Save for some indirection through device tables and
such, ALL of that stuff is handled at boot time. Minimal time-of-use
impact.
The performance impact doesn't come from loading modules, it comes from the
overhead in passing/translating data and commands through the various
layers. There's also inherent "overhead' in that the HAL constrains the
device driver or API as to what optimizations it can implement. For
instance, the latest revision of the Windows audio HAL doesn't allow direct
hardware access in the middleware, which hamstrings hardware acceleration of
various mixing and decoding operations. This was a side effect of the
secure/encrypted data path requirement for HDMI.
Think about the code involved in writing a generic volume management system
that can connect any possible type of file system to any type of storage
device - FAT32 to an SD card, ext4 to a SAN, UFS to a DVD-ROM drive shared
over a CIFS network. There's a lot of configuration that needs to be
initialized and handled, even if the particular file system or device is
only going to take advantage of a fraction of the volume manager's
capabilities.