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.
Light-weight Processes
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.
Process States
- READY
- Ready for the Scheduler to run the process, but not currently running
- RUNNING
- Process is currently being executed by the OS. Processes will move between RUNNING and READY as other processes get a chance to run
- BLOCKED
- Process is blocked on something (e.g. I/O) and not ready to be scheduled