Is it possible to prevent SQL Agent Job from running if related job or previous instance has not finished?
Simplest thing is to have all the steps in a single job. It's built-in that a two instances of a job can't run at the same time.