Think about this:
When a process is running and after time slot is over, who schedules new process?
But to run "scheduler" itself, we have to first schedule scheduler.
This is catch here, We need hardware support to schedule scheduler. That is hardware timer. When timer expires, then hardware generates interrupt and scheduler gets schedule.
Now after servicing that interrupt, schedular may schedule another process.
This was about Hardware interrupt.
Now think if user invokes a system call, System call in effect leads to interrupt, and after this interrupt CPU resumes execution of current running process,
Conclusion: Its about type of interrupt being serviced.
Options with "always" are false.
Hence option D.