Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Como mostrado na figura Processando IRPs em drivers em camadas , um sistema de arquivos é um driver de duas partes:
Um driver de sistema de arquivos (FSD), que é executado no contexto de um thread em modo de utilizador que chama um serviço de sistema de E/S
O gestor de E/S envia o IRP correspondente para o FSD. Se o FSD configurar uma rotina de conclusão para um IRP, sua rotina de conclusão não será necessariamente chamada no contexto do thread do modo de usuário original.
Um conjunto de processos (threads) do sistema de arquivos e, possivelmente, um FSP (processo do sistema de arquivos)
Um FSD pode criar um conjunto de threads de sistema dedicadas ao driver, mas a maioria dos FSDs utiliza threads de trabalho do sistema para executar tarefas sem ocupar as threads em modo de utilizador que fazem solicitações de E/S. Qualquer FSD pode configurar o seu próprio espaço de endereço de processo no qual são executadas as suas threads dedicadas ao driver, mas os FSDs fornecidos pelo sistema evitam essa prática para conservar a memória do sistema.
Os sistemas de ficheiros geralmente usam threads de trabalho do sistema para configurar e gerir filas de trabalho internas de IRPs que enviam para um ou mais controladores de nível inferior, possivelmente para dispositivos diferentes.
Embora o driver de nível mais baixo mostrado na figura Processando IRPs em Drivers em Camadas processe cada IRP em estágios por meio de um conjunto de rotinas discretas fornecidas pelo driver, ele não usa threads do sistema como o sistema de arquivos. Um driver de nível mais baixo não precisa de seu próprio contexto de thread, a menos que a configuração de seu dispositivo para E/S seja um processo tão demorado que tenha um efeito percetível no desempenho do sistema. Poucos drivers de nível mais baixo ou intermediário precisam configurar os seus próprios threads de sistema dedicados ao driver ou ao dispositivo, sendo que aqueles que o fazem sofrem uma penalidade de desempenho causada por mudanças de contexto para os seus threads.
A maioria dos drivers de modo núcleo, como o driver de dispositivo físico na figura Processamento de IRPs em Drivers Estratificados, são executados em um contexto de thread arbitrário: o de qualquer thread que esteja em execução quando eles são chamados para processar um IRP. Consequentemente, os drivers geralmente mantêm o estado sobre as suas operações de Entrada/Saída e os dispositivos que servem numa parte dos seus objetos de dispositivo definida pelo driver, chamada extensão de dispositivo.