
Sistemas
Notas sobre sistemas operativos y temas relacionados. Datos sacados, entre otras fuentes, de:
Un sistema operativo también es un programa. Lo que diferencia a este programa del resto es que su núcleo, el kernel, se ejecuta en modo kernel (😮), un modo privilegiado de la CPU que permite ejecutar instrucciones de la arquitectura que están restringidas al resto de programas, y acceder a partes de memoria a la que los procesos normales no pueden acceder (entre otros).
El kernel de Linux, por ejemplo, está formado principalmente por una secuencia de inicialización cuyo punto de entrada (de forma simplificada) es start_kernel(), función análoga a main(). En esta función se inicializan drivers, interrupciones y otros componentes fundamentales. Una vez completado el arranque, el kernel se encarga de iniciar el primer proceso de espacio de usuario, con PID 1 (históricamente init, normalmente systemd) y diversos hilos internos del propio kernel.
A diferencia de un programa normal cuya ejecución suele seguir un flujo lineal desde main(), el kernel luego pasa rápidamente a un modelo dirigido por eventos. A partir de ese momento, su ejecución se reparte entre atender interrupciones, llamadas al sistema, excepciones, temporizadores, etc. y gestionar hilos del kernel (kthreads), además de planificar la ejecución los procesos de usuario. En general, en este punto pasa de ser un programa normal a tratarse de una serie de funciones a las que llamar cuando suceden determinadas cosas.