F

FDDI (fiber distributed data interface)

FCS (frame check sequence)

An FCS is a data validation method similar to a CRC but is used only for token ring networks.

FIFO (first in, first; out)

FSD (file system driver)

The FSD refers to the portion of a driver running in the context of the caller, to which an I/O request is dispatched when the request is originally made. The FSD has no process virtual address space and no particular thread context because it operates in the context of whoever happens to call it.

An FSD also executes in the context of the lower-level (intermediate or mass-storage device) driver’s DPC routine when the I/O operation is being completed if the FSD indicated that it should be called upon completion of the IRP.

The term FSD normally refers to the DD (device driver) part of a file system driver only when the driver also has an FSP associated with it; otherwise, it’s called simply a device driver.

FSP (file system process)

The FSP usually refers to a set of device-dedicated or system worker threads that aid a file system driver (FSD) in getting work done, but can also refer to a kernel-mode process set up by an FSD. FSP threads are generally used when a file system driver needs a thread context in which to work. An example is when the driver needs to be able to wait without tying up the calling thread. An FSP kernel-mode process is used only when an FSD must have a driver-specific process address space in which its device-dedicated threads execute. Most Windows NT file system drivers conserve system memory and improve performance by not creating their own kernel-mode processes.

Communication between the FSD and the FSP threads is performed through the use of a communication region. This region is generally allocated in a device object’s device extension and consists of an interlocked queue and a synchronization event. See also device object, device extension, and event object.

Any Windows NT driver (not just file systems) can create one or more device-dedicated threads or use system worker threads. In particular, an NT driver should create a thread for I/O operations that use synchronization mechanisms (such as events, timers, semaphores, mutexes, etc.) other than spin locks. Such a driver’s thread can wait for an indefinite, nonzero interval on a kernel-defined dispatcher object, but context switches to the thread slow down the driver’s I/O operations.

Functional Address

A 48-bit identifier (as transmitted over a token ring network) describing the type of machine that should receive a packet. Most of the functional address is a bitmask in which each bit indicates a type of receiver. A client or driver can combine bits to send a packet to several receivers.