21/3/25
Kernel
El núcleo (kernel) es el componente central del sistema operativo y se encarga
de la administración de los recursos delo sistema, recursos del hardware,
comunicación entre el software y los dispositivos físicos de una pc. Actúa como una
capa intermedia que controla procesos, memoria, almacenamiento, periféricos y
seguridad del sistema.
Dada su importancia existen diferentes tipos de kernel cada uno con una
arquitectura diseñada para utilizar el rendimiento del sistema.
Tipos de kernels:
Kernel Monolítico: en este modelo todas las funciones del sistema operativo
están integradas en un solo modulo que opera en el espacio del kernel. Es eficiente
en termino de velocidad y comunicación interna, pero difícil de modificar sin
reiniciar el sistema.
Ejemplo de sistema operativo con kernel monolítico:
Linux, UNIX, MS DOS,
Micro Kernel: se basa en la separación de los servicios esenciales en módulos
independientes que se comunican a través de mensajes. Mejora la estabilidad y la
seguridad ya que cada modulo corre en un espacio separado. Es más modular, pero
sufre de mayor sobre carga en la comunicación entre procesos.
Ejemplos de sistemas operativos con micro kernel:
Minix, Mc OS, QNX (un sistema embebido en un coche autónomo)
Kernel hibrido: combina características de los kernels monolítico y micro
kernel. Mantiene la velocidad del kernel monolítico, pero con mayor modularidad.
Ejemplo de sistema operativo con kernel hibrido:
Windows 10, 11, Android, Mc OS.
FUNCIONES PRINCIPALES DEL KERNEL
El kernel realiza diversas tareas esenciales para el correcto funcionamiento del
S.O.
Gestión de procesos:
Asigna tiempos de CPU a cada proceso de ejecución.
Usa algoritmos de planificación para priorizar tareas, por ejemplo: Round Robin;
Fifo; Shortest Job Next.
Maneja hilos de ejecución y la sincronización de procesos.
Ejemplo aplicado: un usuario ejecuta Photoshop en su PC mientras reproduce
música es Spotify. El Kernel administra los recursos para que ambas apps funcionen
sin interferencias.
Administración de Memoria:
Controla la asignación y liberación de RAM.
Implementa técnicas como paginación y memoria virtual.
Protege los procesos para que no interfieran en la memoria de otros.
Ejemplo: cuando se abre Google Chrome con varias pestañas el Kernel asigna
memoria a cada pestaña y libera la memoria de las pestañas cerradas para
optimizar el rendimiento.
Control de dispositivos:
Permite la comunicación con dispositivos del hardware como teclados,
impresoras y HDD.
Utiliza drivers para interactuar con cada tipo de hardware.
Un usuario conecta un teclado bluetooth a su laptop y el Kernel carga el driver
para permitir su uso sin necesidad de instalar un software adicional.
Administración del sistema de archivos:
Gestiona la lectura y escritura de datos en el disco.
Controla los permisos de accesos de archivos a carpetas.
Soporta diferentes sistemas de archivos. (FAT 32, NTFS, etc.)
Ejemplo: un usuario cifra la carpeta en su PC con permisos restringidos. El Kernel
evita que usuarios no autorizados accedan a esos discos.
LINUX WIN LITE
Apps
Kernel
+
+ Optimizaci
ón
Apps
de hilos
y procesos
LENGUAJES UTILIZADOS
Lenguaje c
Es el lenguaje principal utilizado para programar la mayoría del kernel permite
una gestión eficiente de la memoria y el control directo del hardware.
Es portable
El mismo código puede adaptarse a diferentes arquitecturas de procesadores
Su sintaxis simple permite mantener el código legible y mantenible
Ej: el kernel de Linux este escrito casi en su totalidad en C más del 90%
Lenguaje ensamblador
Se utiliza para las partes más críticas del sistema como la iniciación del
hardware, interrupciones o acceso directo a registros del procesador.
Es especifico de cada arquitectura (X 86, ARM, RISC-V)
No es portable, pero permite aprovechar al máximo las capacidades del
hardware.
Ej: el arranque del sistema (Boot Loader) y la gestión de interrupciones suelen
estar escritas en ensamblador.
ESTRUCTURA TÍPICA DEL CÓDIGO DE UN KERNEL
un kernel está compuesto por diferentes módulos funcionales que se organizan
de forma jerárquica:
Boot Loader (cargador de arranque)
Es el primer programa que se ejecuta cuando se enciende el equipo. Carga el
Kernel desde el disco a la memoria y le cede el control.
Iniciación del kernel:
Establece estructuras básicas del sistema como: Tabla de procesos. Gestión
inicial de memoria. dirección de dispositivos conectados. Carga de
controladores básicos (Drivers)
Núcleo central:
Maneja los procesos, planificadores, memoria virtual, y administración de
archivos y dispositivos
Proporciona funciones internas como:
Shelude: planificación de procesos.
Fork: creación de procesos
Malloc: asignación de memoria
Read y Write: entrada y salida
Llamada al sistema (syscall):
Son puntos de entradas que permiten a los programas de usuarios solicitar
servicios a los S.O. Cada llamada se traduce en una interrupción que invoca a una
función del kernel.
Módulos de kernel:
En sistemas como Linux muchos componentes del kernel se pueden cargar y
descargar dinámicamente (por ejemplo, un driver de red).
Estos módulos son archivos independientes que se insertan en tiempo real.
NIVELES DE EJECUCIÓN
El kernel opera en modo privilegiado también llamado modo núcleo (RING 0)
mientras que las apps de usuario se ejecutan en modo usuario (RING 3) esta
separación evita que una app interfiera directamente con el hardware o dañe el
sistema.
PORTABILIDAD
Aunque cada kernel se diseña parra una arquitectura especifica los kernels
modernos son portables gracias al uso de macros funciones abstractas y archivos
de configuración.
ALGORITMOS DE PLANIFICACIÓN EN EL KERNEL
Los algoritmos de planificación también llamados Scheduling son un conjunto de
reglas y procedimientos que utiliza el kernel para decidir que procesos ejecuta en
cada momento y en qué orden, cuando existen múltiples procesos que requieren el
uso del CPU.
Su objetivo principal es optimizar el objetivo de la CPU y garantizar que todos los
procesos se ejecuten, el kernel debe decidir:
Cuales procesos ejecuta ahora.
Cuanto tiempo tendrá acceso a la CPU.
Qué proceso será pausado y puesto en espera.
TIPOS DE ALGORITMOS DE PLANIFICACIÓN:
Planificación FIFO (first in, first out):
Los procesos en el orden en que llegan.
No permiten interrupciones: un proceso debe terminar antes que pueda
ejecutarse.
Ventajas: fácil de implementar.
Desventaja: puede generar largos tiempo de espera (procesos de
convoy).
Ej: un servidor de impresión donde los documentos se imprimen en el
orden en que fueron enviados.
Planificación por prioridad:
Cada proceso tiene una prioridad asignada.
El kernel ejecuta primero los procesos con mayor prioridad.
Puede ser estática (prioridad fija) o dinámica (la prioridad cambia según el
comportamiento).
Ej: en un sistema de seguridad un proceso de alarma tiene prioridad alta
sobre los procesos de usuario.
Round Robin (rr):
Cada proceso recibe un quantum (pequeño intervalo de tiempo para
ejecutarse).
Cuando se termina, el proceso es interrumpido y otro proceso toma la CPU.
Evita que un proceso monopolice la CPU.
Ej: sistemas interactivos, como un escritorio Linux donde varias apps se
ejecutan al mismo tiempo.
Shortest job next (sjn):
Se ejecuta primero el proceso que tiene el tiempo de ejecución más corto.
Es eficiente, pero requiere conocer de antemano la duración de cada
proceso.
Ej: sistemas como Linux y Windows utilizan variantes de este método.
Multinivel de retroalimentación:
Combina varios algoritmos.
Clasifica los procesos en diferentes colas según su comportamiento.
Los procesos pueden cambiar de cola si sus características cambian.