다음을 통해 공유


드라이버 스레드 컨텍스트

계층화된 드라이버의 처리 IRP 그림에 표시된 것처럼 파일 시스템은 두 부분으로 구성된 드라이버입니다.

  1. I/O 시스템 서비스를 호출하는 사용자 모드 스레드의 컨텍스트에서 실행되는 FSD(파일 시스템 드라이버)

    I/O 관리자는 해당 IRP를 FSD로 보냅니다. FSD가 IRP에 대한 완료 루틴을 설정하는 경우 해당 완료 루틴이 원래 사용자 모드 스레드의 컨텍스트에서 반드시 호출되지는 않습니다.

  2. 파일 시스템 스레드 집합 및 FSP(파일 시스템 프로세스)

    FSD는 드라이버 전용 시스템 스레드 집합을 만들 수 있지만 대부분의 FSD는 I/O 요청을 수행하는 사용자 모드 스레드를 연결하지 않고 작업을 수행하기 위해 시스템 작업자 스레드를 사용합니다. 모든 FSD는 드라이버 전용 스레드가 실행되는 자체 프로세스 주소 공간을 설정할 수 있지만 시스템 제공 FSD는 시스템 메모리를 절약하기 위해 이 방법을 사용하지 않습니다.

파일 시스템은 일반적으로 시스템 작업자 스레드를 사용하여 여러 디바이스에 대해 하나 이상의 하위 수준 드라이버에 보내는 IRP의 내부 작업 큐를 설정하고 관리합니다.

계층화된 드라이버의 처리 IRP 그림에 표시된 가장 낮은 수준의 드라이버는 개별 드라이버 제공 루틴 집합을 통해 각 IRP를 단계적으로 처리하지만 파일 시스템처럼 시스템 스레드를 사용하지 않습니다. I/O에 대한 디바이스를 설정하는 것이 시스템 성능에 눈에 띄는 영향을 주는 장기 프로세스인 경우가 아니면 최하위 수준의 드라이버는 자체 스레드 컨텍스트가 필요하지 않습니다. 최소 수준 또는 중간 드라이버는 자체 드라이버 전용 또는 디바이스 전용 시스템 스레드를 설정해야 하며 컨텍스트가 스레드로 전환되어 성능 저하를 지불하는 드라이버는 거의 없습니다.

계층화된 드라이버의 처리 IRP 그림에 있는 물리적 디바이스 드라이버와 같은 대부분의 커널 모드 드라이버는 임의 스레드 컨텍스트에서 실행됩니다. 즉, IRP를 처리하기 위해 호출될 때 발생하는 모든 스레드의 컨텍스트입니다. 따라서 드라이버는 일반적으로 디바이스 확장이라고 하는 디바이스 개체의 드라이버 정의 부분에서 서비스하는 I/O 작업 및 디바이스에 대한 상태를 유지 관리합니다.