• So far we have assumed that each job has its own run time stack
  • In systems where the number of jobs is large, it may be necessary for the jobs to share ta common run time stack, in order to reduce overall memory demand.
  • Space in the shared stack is allocated to jobs contiguously in the last in first out manner.
  • When a job J executes, its stack space is on the top of the stack
  • The space is freed when the job completes.
  • When J is preempted the preempting job has the stack space above J‟s.
  • J can resume execution only after all the jobs holding stack space above its space complete, free their stack spaces and leave J‟s stack space on the top of the stack again.
  • According to this scheduling rule, when a job begins to execute all the resource it will ever need during its execution are free.
  • No job is ever blocked once its execution begins.
  • When a job J is preempted, all the resources the preempting job will require are free, ensuring that the preempting job can always complete so J can resume.
  • Hence, deadlock can never occur.