All the threads of a particular process share the same address space. In contrast, one generally thinks of processes as not sharing any of their address space with other processes. Although threads share many objects with other threads of that process, threads have their own private local stack . One big difference between threads and processes is that global variables are shared among all threads. Because threads execute concurrently with other threads, they must worry about synchronization and mutual exclusion when accessing shared memory.
Nachos provides threads.
The Nachos scheduler maintains a data structure called a ready list , which keeps track of the threads that are ready to execute. Threads on the ready list are ready to execute and can be selected for executing by the scheduler at any time. Each thread has an associated state describing what the thread is currently doing. The thread is currently running. In Nachos, the global variable currentThread always points to the currently running thread.