Você não especificou a arquitetura do processador sobre a qual está perguntando. Eu suponho que você está falando sobre processadores x86 em PCs. A informação mais básica a ser conhecida é que os principais sistemas operacionais atuais usam apenas 2 níveis de privilégio (dos 4 fornecidos pela arquitetura do processador x86): kernel (nível 0) e usuário (nível 3). A partir disso, segue-se que, em cada driver, toda rotina de serviço de interrupção deve ser executada no privilégio de kernel (nível 0).
As interrupções de software são uma maneira de chamar uma função com um nível de privilégio mais alto a partir de um código menos privilegiado. Isso acontece nos sistemas operacionais atuais se e somente se o código do usuário (nível 3) quiser chamar uma função do kernel (nível 0).
If the user were to then install a 3rd party driver for the NIC, would the IDT be modified to point to the new driver?
O IDT geralmente aponta para uma função de kernel genérica, que procura o endereço da rotina de serviço de interrupção real em alguma estrutura de memória. Normalmente, essa estrutura é configurada quando o driver é carregado no kernel. A instalação geralmente envolve a cópia de arquivos no sistema de arquivos, enquanto essas estruturas existem na memória.
Examinar os recursos do Linux pode fornecer uma boa visão de como essas coisas são implementadas atualmente.