Una vez hice un curso universitario de un semestre, de 3 horas de crédito, sobre los principios de los sistemas operativos de los ordenadores. Fue horrible, pero me las arreglé para aprobar el curso, principalmente debido a mi experiencia previa en el campo de la informática.
En los sistemas operativos modernos, el software está adaptado a un sistema operativo específico, y los programas "informarán" al sistema operativo de lo que necesitan en cuanto a recursos informáticos, especialmente la memoria. Además, los programas grandes se escriben para que puedan "paginar", intercambiando entre la memoria principal (RAM) y la memoria virtual en el disco duro en "páginas" de un tamaño específico.
Para ser claros, un proceso es un programa o parte de un programa que se está ejecutando en su ordenador. Los grandes paquetes de software generalmente sólo cargan y ejecutan una parte del paquete de software a la vez.
El sistema operativo bloquea una cantidad específica de memoria para el programa, pero cerrará un proceso que intente dirigirse a la memoria que está siendo utilizada por otro proceso. Eso ya no ocurre casi nunca, pero los que llevan tiempo en esto recuerdan la pantalla azul de la muerte-Fatal Error.
También asigna tiempo de CPU a todos los procesos que se están ejecutando. El término para esto es multiprogramación y multiprocesamiento (si tienes varias CPU). El sistema operativo actúa como un planificador, y si el algoritmo se ejecuta correctamente, evitará que todos los diversos procesos se mueran de hambre.
Además, el programa informará al SO cuando entre en una fase crítica y necesite tiempo extra más allá de la porción de tiempo normal.