I am now reading materials about preemptive multitasking – and one thing escapes me.
All of the materials imply, that operating system somehow interrupts the running processes on the CPU from the “outside”, therefore causing context switching and the like.
However, I can’t imagine how would that work, when operating system’s kernel is just another process on the CPU. When another process is already occuping the CPU, how can the OS cause the switch from the “outside”?
The OS is not just another process. The OS controls the behavior of the system when an interrupt occurs.
Before the scheduler starts a process, it arranges for a timer interrupt to be sent when the timeslice ends. Assuming nothing else happens before then, the timer will fire, and the kernel will take over control. If it elects to schedule a different process, it will switch things out to allow the other process to run and then return from the interrupt.