Como funcionam os níveis de interrupções e privilégios?

3

Estou tentando entender melhor como funcionam as interrupções (hardware e software) e os privilégios que as acompanham.

Se usarmos o NIC como exemplo. Quando o sistema operacional cria o IDT, a entrada para o descritor de NIC aponta para o driver incorporado que o manipula. Se o usuário instalasse um driver de terceiros para a NIC, o IDT seria modificado para apontar para o novo driver?

Uma interrupção de um ponto de controle USB para um driver USB?

Qual seria o nível de privilégio dessa entrada de IDT e qual propósito ela serviria? Eu li em algum lugar que as interrupções de hardware ignoram o nível de privilégio e podem ser executadas independentemente, mas não tenho certeza se isso é verdade.

Com interrupções de software, que tipo de interrupções eles fazem? Se está querendo acessar funções do kernel, todas elas são acessadas através da mesma interrupção que possui privilégios de nível 3?

Que tipo de interrupção de software estão lá e o que os programas em modo de usuário fazem com eles, ou que os programas em modo usuário apenas usam interrupções de software para acessar o kernel.

Estou tentando juntar tudo junto de fontes on-line, mas só estou me perguntando se alguém poderia deixar claro como todo o processo funciona.

Qualquer ajuda seria muito apreciada.

Obrigado.

    
por RJSmith92 18.10.2013 / 13:40

1 resposta

2

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.

    
por 23.10.2013 / 21:22