Conduct a comprehensive comparison of preemptive and non-preemptive schemes that factors in differences in executions costs with and without preemption. Conclude by producing definitive statements regarding when each approach will work best. Consider investigating multiprocessor scheduling schemes as well, and also systems with non-independent tasks.