Да тут много рассказывать. Но вкратце, у каждого треда/процесса есть некий контекст, который либо выполняется, либо нет и к нему можно переключиться для выполнения. В момент переключения ядро задач не выполняет, а сбрасывает старый контекст и подгружает новый