Introdução aos objetos Thread

Um objeto thread no modo de usuário representa um caminho de execução dentro do processo atual. Cada objeto thread do modo de usuário é implementado por meio do uso de um objeto thread no modo kernel inserido.

Um objeto thread no modo kernel é uma instância de um tipo de objeto dispatcher definido pelo kernel. O thread que ele representa é a entidade agendada básica no sistema operacional.

Um objeto thread:

  • É expedido para execução pelo kernel.

  • Tem as seguintes propriedades a qualquer momento:

    • estado de expedição

    • priority

    • contexto

    • Modo de execução (kernel ou usuário)

    • Afinidade

  • É "propriedade" de um objeto de processo, mas pode se anexar ao espaço de endereço de outro processo.

Normalmente, a maioria dos drivers é executada no contexto do thread em execução no momento, ou seja, em um contexto de thread arbitrário. Embora um driver de sistema de arquivos possa criar um processo independente para seus próprios threads dedicados ao dispositivo, os sistemas de arquivos geralmente evitam configurar um processo e threads criados pelo driver para conservar a memória do sistema e evitar a sobrecarga de comutadores de contexto.

FSs (e outros drivers) podem configurar threads dedicados ao dispositivo (processo do sistema) e/ou FSs podem usar threads de trabalho do sistema se precisarem de um contexto de thread específico do driver no qual executar. Os drivers usam as rotinas PsXxx do modo kernel para criar processos e/ou threads dedicados ao dispositivo. Os FSs chamam rotinas ExXxx para usar threads de trabalho do sistema.