This note will be loosely structured – it’s just to help me organize my thoughts around the OS Process abstraction (mostly Unix processes) and prepare for the first exam in CS6200.
In SunOS (see notes on Multithreading in SunOS) there is a pool of light-weight processes, or LWPs, that are backed one-to-one by a kernel thread.
User-level threading libraries use these LWPs to back the user-level threads. Since the scheduling now happens at user level, the user-level thread library can context switch between threads without having to enter the kernel.
Each LWP has its own private set of registers and signal mask.
- Ready for the Scheduler to run the process, but not currently running
- Process is currently being executed by the OS. Processes will move between RUNNING and READY as other processes get a chance to run
- Process is blocked on something (e.g. I/O) and not ready to be scheduled