The correct answer is D. Pre-emptive multitasking.

Pre-emptive multitasking is a task swapping method in which the operating system can interrupt a running task and switch to another task at any time. This is in contrast to cooperative multitasking, in which a task must explicitly yield control to the operating system in order to allow another task to run.

Pre-emptive multitasking is a better choice for embedded systems design because it is more efficient. In a cooperative multitasking system, a task that is not responding to interrupts can monopolize the CPU, preventing other tasks from running. This can lead to system instability or even crashes. Pre-emptive multitasking avoids this problem by allowing the operating system to take control of the CPU and switch to another task if a task is not responding to interrupts.

Pre-emptive multitasking is also more flexible than cooperative multitasking. In a cooperative multitasking system, the order in which tasks are executed is determined by the tasks themselves. This can make it difficult to ensure that critical tasks are always given priority. In a pre-emptive multitasking system, the operating system can control the order in which tasks are executed, ensuring that critical tasks are always given priority.

Finally, pre-emptive multitasking is more scalable than cooperative multitasking. In a cooperative multitasking system, the number of tasks that can be run simultaneously is limited by the amount of memory available. In a pre-emptive multitasking system, the number of tasks that can be run simultaneously is limited only by the processing power of the system.

For these reasons, pre-emptive multitasking is the preferred task swapping method for embedded systems design.