- Aug 12, 2014
- 522
- 3
- 81
Hi guys,
So, recently, I finished reading Intel's big manual; I learned a ton.
Anyway, I was very disappointed to see that there wasn't any attention paid specifically to two big low level sub-systems for modern computer systems: device drivers and the graphics system.
Despite the fact that the word 'driver' appears 44 times in the PDF (I control-Fed it) there isn't a chapter dedicated to drivers nor any real explanation as to how drivers and interrupt handlers are supposed to interact.
I assume that the interrupt handler at some point calls out to the driver to query the hardware I/O device by reading status registers on that I/O device to ascertain the nature of the interrupt and obtain other status information.
But, where is the device driver stored?
Is it subject to paging, or is it part of the kernel?
I assume that the driver has to occupy the same place in memory every boot, otherwise the interrupt handler wont' be able to find it boot to boot.
What happens if no driver exists for the I/O device?
At initialization, before boot, the UEFI / BIOS should assign the I/O device an interrupt number (by writing to a memory location on the I/O device I think) to call into the IDT.
I don't think that the presence or absence of a driver effects that process; I don't think that the initialization code has any knowledge of drivers at all (wait, what about low level I/O devices like mice that run before the OS is booted? Maybe, I'm not entirely correct here).
If no driver has been loaded for some I/O device and that device fires an interrupt on the line assigned to it by the BIOS, what happens?
Thanks.
So, recently, I finished reading Intel's big manual; I learned a ton.
Anyway, I was very disappointed to see that there wasn't any attention paid specifically to two big low level sub-systems for modern computer systems: device drivers and the graphics system.
Despite the fact that the word 'driver' appears 44 times in the PDF (I control-Fed it) there isn't a chapter dedicated to drivers nor any real explanation as to how drivers and interrupt handlers are supposed to interact.
I assume that the interrupt handler at some point calls out to the driver to query the hardware I/O device by reading status registers on that I/O device to ascertain the nature of the interrupt and obtain other status information.
But, where is the device driver stored?
Is it subject to paging, or is it part of the kernel?
I assume that the driver has to occupy the same place in memory every boot, otherwise the interrupt handler wont' be able to find it boot to boot.
What happens if no driver exists for the I/O device?
At initialization, before boot, the UEFI / BIOS should assign the I/O device an interrupt number (by writing to a memory location on the I/O device I think) to call into the IDT.
I don't think that the presence or absence of a driver effects that process; I don't think that the initialization code has any knowledge of drivers at all (wait, what about low level I/O devices like mice that run before the OS is booted? Maybe, I'm not entirely correct here).
If no driver has been loaded for some I/O device and that device fires an interrupt on the line assigned to it by the BIOS, what happens?
Thanks.