Preemptive and Non-Preemptive Scheduling in Operating Systems are two ways by which processes are run when the CPU scheduler allows a task to CPU. Preemptive scheduling is a type that occurs when a process can be forcibly interrupted even when it is running. In other words, preemptive scheduling allows tasks to be scheduled i.e.; tasks can be preempted during preemptive scheduling.
On the other hand, non-preemptive scheduling does not allow a process that is running to be suspended. In other words, once tasks are allocated to the CPU, they cannot be suspended; it will continue to run till it ends or changes to the waiting state.
During preemptive scheduling, longer tasks can be suspended so that tasks with little CPU burst time can be run. On the other hand, smaller tasks will wait, no matter how long it takes longer tasks to be processed. While preemptive scheduling has overheads, non-preemptive scheduling does not have it.