B.1  Stack Definition and Levels of Parallelism

The Windows NT kernel environment differs fundamentally from the traditional UNIX kernel. In Windows NT, a thread executing in the kernel can be preempted, whereas a thread executing within the UNIX kernel can be interrupted, but not preempted. In Windows NT, many threads may also execute concurrently in the kernel on several processors. For Windows NT, a STREAMS driver must be declared in the qi_mplevel member of its qinit structures to be either:

Fully parallel (default) The service procedure of a queue can execute concurrently with the service procedure of any other queue. The put procedure of a queue can execute concurrently with the service procedure of that queue and the service and put procedures of any other queue. Multiple instances of the put procedure of a queue may also execute concurrently.
Subsystem-parallel Only one service or put procedure from a subsystem can execute at any given instant. The procedures of other subsystems or of fully parallel stacks may execute concurrently. Execution of these other procedures is serialized with the subsystem if they enter it by way of a put call.