In qualsiasi architettura, durante l'esecuzione di un processo, abbiamo un registro che punta alla successiva istruzione da elaborare. Potendo alterare questo registro, ad esempio durante una chiamata a funzione o procedura che deve saltare completamente ad un altro indirizzo, come l'OS capisce che stiamo saltando all'interno di un frammento eseguibile e non ad esempio all'interno di un altro processo o in qualche parte del kernel che non sia una syscall?
Lo so che la domanda implica lo studio di una vasta argomentazione sugli OS sia Unix che Windows.