Kernel o núcleo del S.O. se encarga de la funcionalidad básica del sistema, el responsable de la gestión de los recursos del ordenador, se accede al núcleo a través de las llamadas al sistema, es la parte más pequeña del sistema en comparación con la interfaz. El resto del sistema operativo se le denomina como programas del sistema.
El kernel funciona normalmente a base de interrupciones, que no es sino una suspensión temporal de la ejecución de un proceso, para ejecutar una rutina (independiente del S.O.) que trate dicha interrupción. Mientras una rutina trata la interrupción, se deshabilitan la llegada de nuevas interrupciones.
Las llamadas al sistema son la interfaz que proporciona el kernel para que los programas de usuario puedan hacer uso de manera segura de determinadas partes del sistema.
El modo dual, es una características del hardware que permite al S.O. protegerse:
Las llamadas al sistema por parte de un programa de usuario generan una interrupción que se denomina trap.
Ejecución de llamadas al sistema
Programas que pueden generar interrupciones en el S.O.
Las llamadas al sistema suelen estar escritas en lenguajes de bajo nivel como C o C++. No obstante, los programadores no su
elen hacer llamadas al sistema directamente, sino que suelen utilizar las API’s que proporcionan los sistemas operativos como Win32, Win64, API POSIX para Unix, Linux o Mac OS.
Monitor de recursos de windows:
https://www.youtube.com/watch?v=F6heMDEiy-M
Proceso = programa en ejecución (código ejecutable + datos + pila del programa + contador de programa + puntero de pila + registros).
Código ejecutable del programa. Datos. Pila del programa. Contador de programa. Puntero a la pila y otros registros. Toda la información necesaria para ejecutar el programa. Tabla de procesos. Estructura en árbol de los procesos. Señales. uid. A. B. C. D. E. F.
TODOS los programas se ejecutan y organizan como un conjunto de procesos y es el sistema operativo el que decide los estados a los que pasan cada proceso. Cuando se suspende la ejecución de un proceso, luego deberá rearrancarse en el mismo estado en el que se encontraba antes de ser suspendido. Esto implica que debemos almacenar en algún sitio la infomración referente a ese proceso para poder luego restaurarla tal como estaba antes.
La BCP (Bloque de Control de Proceso) es donde se almacenará esa información: identificador, estado, contador de programa (PC), registros de la CPU, puntero de pila (SP), prioridad del proceso, gestión de memoria, ….
En Unix / Linux mediante el comando ps
(process status) podemos ver información de los procesos.
Si ejecutamos el programa sleep
podremos ver como quedan registrados dichos procesos durante los segundos que les hayamos indicado, en nuestro ejemplo 30 segundos cada uno a partir de cuando se lanazan.
Para saber el pid
de un proceso utilizamos la instrucción pidof
Si queremos saber todos los procesos del sistema y no solo los nuestros, mismo user id efectivo (EUID), utilizamos ps aux
Instrucción ps -AF
que muestra todos los procesos activos con todos los detalles