It is used as a repository of the state information associated with each process. It is necessary to facilitate the context switching in a multiprogramming environment. Less efficient, since each layer adds overheads. Difficulty to come up with appropriate definitions of various layers. It is desirable for flexibility.
Policies are likely to change from place to place or time to time.
In the worst case, each change in policy would require a change in the underlying mechanism, which is bad. A change in policy can be easily instituted if the mechanism were properly separated and policy independent. Context switching by software alone with no hardware support is not feasible. The procedure doing the context switching itself would require to use the registers to save the information, while the contents of those registers need to be saved as well.