constraints related to the amount of memory devoted to the process state for
each process. At most N processes can be in the Running state, one for each
processor.
b. Zero is the minimum number of processes in each state. It is possible for all
processes to be in either the Running state (up to N processes) or the Ready
state, with no process blocked. It is possible for all processes to be blocked
waiting for I/O operations, with zero processes in the Ready and Running
states.
3.3 a. New → Ready or Ready/Suspend: covered in text
Ready → Running or Ready/Suspend: covered in text
Ready/Suspend → Ready: covered in text
Blocked → Ready or Blocked/Suspend: covered in text
Blocked/Suspend → Ready /Suspend or Blocked: covered in text
Running → Ready, Ready/Suspend, or Blocked: covered in text
Any State → Exit: covered in text
b. New → Blocked, Blocked/Suspend, or Running: A newly created process
remains in the new state until the processor is ready to take on an additional
process, at which time it goes to one of the Ready states.
Ready → Blocked or Blocked/Suspend: Typically, a process that is ready
cannot subsequently be blocked until it has run. Some systems may allow the
OS to block a process that is currently ready, perhaps to free up resources
committed to the ready process.
Ready/Suspend → Blocked or Blocked/Suspend: Same reasoning as
preceding entry.
Ready/Suspend → Running: The OS first brings the process into memory,
which puts it into the Ready state.
Blocked → Ready /Suspend: this transition would be done in 2 stages. A
blocked process cannot at the same time be made ready and suspended,
because these transitions are triggered by two different causes.
Blocked → Running: When a process is unblocked, it is put into the Ready
state. The dispatcher will only choose a process from the Ready state to run
Blocked/Suspend → Ready: same reasoning as Blocked → Ready /Suspend
Blocked/Suspend → Running: same reasoning as Blocked → Running
Running → Blocked/Suspend: this transition would be done in 2 stages
Exit → Any State: Can't turn back the clock
3.4 The following example is used in [PINK89] to clarify their definition of block and
suspend:
Suppose a process has been executing for a while and needs an additional
magnetic tape drive so that it can write out a temporary file. Before it can
initiate a write to tape, it must be given permission to use one of the drives.
When it makes its request, a tape drive may not be available, and if that is the
case, the process will be placed in the blocked state. At some point, we assume
the system will allocate the tape drive to the process; at that time the process
will be moved back to the active state. When the process is placed into the
execute state again it will request a write operation to its newly acquired tape
drive. At this point, the process will be move to the suspend state, where it
waits for the completion of the current write on the tape drive that it now
owns.