NT splits the “virtual processor” into two parts:
1. A process is the unit of resource ownership.
Each process has:
• a security token,
• a virtual address space,
• a set of resources (object handles), and
• one or more threads. 2. A thread are the unit of dispatching.
Each thread has:
• a scheduling state (ready, running, etc.),
• other scheduling parameters (priority, etc),
• a context slot, and
• (generally) an associated process.
• co-operative: all threads in a process share address space & object handles.
• lightweight: require less work to create/delete than processes (mainly due to shared virtual address space).