Una volta ho fatto un corso universitario di un semestre, 3 ore di credito, sui principi dei sistemi operativi dei computer. È stato terribile, ma sono riuscito a superare il corso, principalmente grazie alla mia precedente esperienza nel campo dei computer.
Nei sistemi operativi moderni, il software è fatto su misura per uno specifico sistema operativo, e i programmi "informeranno" il sistema operativo di cosa hanno bisogno in termini di risorse del computer, specialmente la memoria. Inoltre, i programmi di grandi dimensioni sono scritti in modo da poter "impaginare", scambiando tra la memoria principale (RAM) e la memoria virtuale sul disco rigido in "pagine" di una dimensione specifica.
Per essere chiari, un processo è un programma o parte di un programma che è in esecuzione sul computer. I grandi pacchetti software generalmente caricano ed eseguono solo una parte del pacchetto software alla volta.
Il sistema operativo blocca una specifica quantità di memoria per il programma, ma chiuderà un processo che cerca di indirizzare la memoria che è utilizzata da un altro processo. Questo accade raramente, ma coloro che sono stati in giro per un po' ricordano la schermata blu della morte - Fatal Error.
Alloca anche il tempo della CPU a tutti i processi che sono in esecuzione. Il termine per questo è multiprogrammazione e multiprocessing (se avete più CPU). Il sistema operativo agisce come uno scheduler, e se l'algoritmo funziona correttamente, manterrà tutti i vari processi dall'essere affamati.
Inoltre, il programma informerà il sistema operativo quando entra in una fase critica e ha bisogno di tempo extra oltre il normale intervallo di tempo.