From my understanding, the Kernel provides the link between software and hardware, and therefore the Kernel must direct system calls being made by OS applications, correct? So would different I/O address maps mean that the Kernel must be programmed differently? Read below as I dont believe I worded that question very accurately.
Let me elaborate, and please correct me if I am wrong as this is how I understood what several articles stated. I will be using the x86 family as the basis for my examples. x86 processors use the INT command as well as an index called the Interrupt Vector Table to map an INT id to the correct location of the desired routine (routine and IVT located in BIOS, correct?). The routines themselves are written such that they can command the hardware specific to a computer system to perform a task based on the protocol of the hardware being used. This allows for the OS to make system calls and communicate with hardware without having any knowledge of the hardware or I/O mapping specific to the system. All that is needed for the OS to communicate with the hardware is the id of the specific ISR desired. Because the kernel is the link between hardware and software, I am guessing that the applications being ran by the OS are not required to even know the ISR id#, they simply tell the kernel they want to for example write data X to the HDD, the kernel relays data X to the correct ISR which then writes the data to the HDD. So two systems, completely identical except they use different ISR id#s for different tasks, would require slightly different kernels?
And would that also mean that boot sector which loads the kernel will also depend on ISR id mapping, as system calls to read from the HDD would need to be made in order to load the kernel?
I apologize if this is in the wrong location, but I read this is the correct location for hardware related questions. Thanks!