Os usuários não podem executar seu próprio código no modo kernel. O modo kernel fornece ao programa controle sobre todos os aspectos da máquina (da máquina virtual, se esta for uma). Executar código no modo kernel iria ignorar todas as medidas de segurança.
Você pode executar o código no modo kernel carregando um módulo. Somente o root pode carregar um módulo, é claro (e isso pode ser desabilitado para certas configurações estáticas e de alta segurança).
Eu não sei o que você quer dizer com “um programa de usuário pode mudar o modo de modo do modo de usuário para o modo kernel no vetor de interrupção”. Os programas do usuário não têm controle sobre o vetor de interrupção, o kernel reserva isso para si mesmo.