Sono completamente all'oscuro del funzionamento interno di un sistema operativo, ma posso più o meno indovinare il comportamento approssimativo di molte funzioni. Una cosa che non sono in grado di capire, tuttavia, è il multitasking.
In teoria, il sistema operativo gestisce il tempo, secondo la CPU per piccoli intervalli ai vari programmi in esecuzione. Ma non è chiaro come funzioni davvero .
Supponiamo che il sistema operativo voglia avviare il mio programma. Il codice macchina viene caricato da qualche parte nella RAM, a partire da un determinato indirizzo. Immagino quindi che dovrebbe essere eseguito un salto a quell'indirizzo, consentendo l'esecuzione del mio codice. Ma in questo modo, il sistema operativo non può riprendere il controllo fino a quando non torno indietro.
Fondamentalmente, posso immaginare solo due modi per farlo funzionare, ma nessuno dei due sembra davvero adatto:
Il sistema operativo potrebbe leggere le istruzioni della macchina che voglio eseguire ed emularle invece di eseguirle direttamente. Sono intenzionalmente vago, dal momento che non so come funzionerebbe, ma sembra che rallenterebbe notevolmente il programma.
In alternativa, il sistema operativo potrebbe attendere fino a quando eseguo una chiamata di sistema. In quel momento riprende il controllo e può controllare da quanto tempo sono in esecuzione e fare le sue cose in multiproprietà. Questo potrebbe funzionare, ma sembra inaffidabile, poiché potrei fare un lungo calcolo che non comporta chiamate di sistema e bloccare tutto per un po '.
Quindi, sembra che nessuno dei due meccanismi funzionerebbe molto bene. Come viene effettivamente eseguito il multitasking?
interrupt
INT
un'istruzione. Qualcosa è ancora misterioso per me