KERNEL
RECURSOS Y SU ADMINISTRACIÓN
Hardware: Procesador, Memoria,
Dispositivos I/O, disco
¿Cómo un programador puede pedir
espacio memoria?
¿Cómo conviven varios programas en la
misma memoria?
¿En que parte del disco guardo un archivo?
¿Cómo hago para ejecutar una aplicación
si el procesador ya está ocupado con una?
Niveles de un sistema
de computación
ENCENDIDO DE UN COMPUTADOR
BIOS – Basic Input Output System.
Autodiagnóstico (Power On Self Test – POST)
EL Computador identifica su memoria, discos, teclado, vídeo y cualquier otro dispositivo.
El primer sector del dispositivo de arranque se lee y se coloca en la memoria, para luego ejecutarse.
Este sector contiene un programa que por lo general examina la tabla de particiones al final del sector de arranque, para determinar qué partición está activa.
Después se lee un cargador de arranque secundario de esa partición. Este cargador lee el sistema operativo de la partición activa y lo inicia.
Una vez cargado el S.O. en memoria, se puede empezar a utilizar el computador.
Los SO más comunes tienen dos grandes niveles diferenciables:
A. Nivel bajo o núcleo del SO Relacionado directamente con el hardware
B. Nivel alto, de utilidades y herramientas
Permite administrar distintos aspectos del SO pero a nivel de
usuario.
B) HERRAMIENTAS Y UTILIDADES
Gestión de los periféricos
Manipulación de los sistemas de almacenamiento en
disco
Editor
Gestión de usuarios
Herramientas de modificación de sistema
Compiladores e Interpretes de lenguaje de programación
A) KERNEL: NÚCLEO DEL SISTEMA OPERATIVO
Parte fundamental del sistema operativo
Se define como la parte que se ejecuta en modo privilegiado
(modo núcleo/ modo kernel)
Principal responsable del acceso seguro al hardware
Encargado de gestionar recursos, a través de servicios de llamada
al sistema (system calls). Cuando una aplicación necesita un
recuso, esta debe comunicarse con el kernel con una llamada al
sistema, y el kernel gestionará el recurso solicitado.
Decide qué programa podrá hacer uso del dispositivo de hardware
y durante cuánto tiempo (lo que se conoce como Multiplexado)
KERNEL: funciones
Gestión del procesador y reparto de su tiempo de
proceso
Gestión de memoria
Control de los recursos de almacenamiento y de
entrada/salida
Control de errores y sistemas de protección
Gestión del interfaz con el usuario
KERNEL
No necesariamente se necesita un kernel para usar una computadora.
Los programas pueden cargarse y ejecutarse directamente si están
desarrollados sin uso de abstracción de hardware ni ayuda del SO
(Ejemplo Arduino).
Forma habitual las primeras computadoras: para usar distintos
programas se tenía que reiniciar y reconfigurar la computadora cada
vez.
Se empezó a dejar en memoria pequeños programas auxiliares
(cargador, depurador). Su desarrollo sentó los fundamentos de lo que serían los primeros kernels.
KERNEL: Estructura en un sistema
SHELL
Establece la comunicación entre el núcleo (kernel) y el usuario del Sistema Linux.
Es una interface con el Sistema Operativo.
Mediante el Shell podremos dar las ordenes necesarias para que el sistema informático realice las tareas que necesitamos.
El intérprete de comandos también es un potente lenguaje de programación, el cual permite escribir guiones, que permiten juntar varias ordenes en un archivo. El uso de los guiones (scripts) del intérprete de comandos es una herramienta muy potente que le permitirá automatizar e incrementar el uso de Linux.
Tipos de Kernel
Kernel Monolítico
MicroKernel
Kernel hibrido
Exokernel
Kernel Monolítico
Todo el sistema operativo se ejecuta como un solo
programa en modo kernel.
El sistema operativo se escribe como una colección de
procedimientos, enlazados entre sí en un solo programa
binario ejecutable extenso.
Se encarga del manejo de memoria y de procesos,
junto con protocolos de red, file systems, etc.
Los driver pueden ser añadidos al kernel como
módulos. Otros ya vienen incluidos en el mismo
Kernel Monolítico
(Quien realiza una llamada al sistema)
(llevan a
cabo las
llamadas
al sistema)
Para que una aplicación interactúe con el hardware, debe hacerlo comunicándose al kernek mediante system calls (llamadas al sistema)
Para cada llamada al sistema hay un procedimiento de servicio que se encarga de la llamada y la ejecuta.
Todos los procedimientos pueden llamarse entre sí.
Cada procedimiento en el sistema tiene la libertad de llamar a cualquier otro, si éste proporciona cierto cómputo útil que el primero necesita
Kernel Monolítico
Un error en una rutina puede propagarse a todo el núcleo y requerir el reinicio del sistema.
Al principio eran sistemas pequeños y sencillos, pero con el tiempo se fue agregando más funcionalidades y esto ha hecho que hoy día sean más complejos.
El kernel monolítico permite actualizarse.
Para agregar más funcionalidades es necesario actualizar el kernel.
Ejemplos de SO que utilizan kernel monolítico:
UNIX
LINUX
MS-DOS (En desuso)
MicroKernel
Respuesta a la complejidad de los kerneles monolíticos.
Kernel que provee los mecanismos básicos: Manejo de memoria.
Manejo de procesos e hilos.
InterProcess Comunication (IPC)
Único software que corre en modo privilegiado de CPU.
Los servicios del S.O. (device drivers, protocolos de red, file systems) se ejecutan en espacio de usuario (Se comunican con el kernelmediante llamadas al sistema).
Eventuales fallas en un servicio no afectan al kernel.
Existen llamadas al kernel pero son mínimas
MicroKernel
Principio de minimalismo de Liedtke
Un elemento es aceptable dentro del kernel
solamente si al moverlo fuera del kernel pierde
funcionalidad.
IPC
Mecanismo para que los procesos se comuniquen
entre ellos, generalmente por medio de mensajes.
Permite trabajar en modalidad cliente/servidor.
Comunicación sincrónica (se envía el mensaje y se espera la respuesta).
MicroKernel
EjemplosMinix
L4
QNX
Mach
En la práctica, son menos eficientes que los kernelsmonolíticos, pero la programación del kernel en sí es mas sencilla (menos líneas de código)
Kernel monolítica vs Microkernel
Kernel Hibrido
Tiene arquitectura de Microkernel pues los elementos no
imprescindibles del Kernel (file system, protocolos de red) se
ejecutan como servidores.
Tienen la capacidad de elegir lo que desea ejecutar en modo
de usuario y en modo núcleo, esto dará lo mejor de ambos.
La mayoría de sistemas operativos modernos pertenecen a
esta categoría.
Kernel Hibrido
Los dispositivos de driver y la aplicación de comunicación entre proceso no pertenecen el microkernel pero sí se ejecutan en modo kernel
El resto de las utilidades se ejecuta en modo usuario como servicios.
Ejemplo:
Windows NT/2000/XP/Vista.
Estructura de núcleo monolítico, micronúcleo y
núcleo híbrido.
ExoKernel
Desarrollado en Instituto de Tecnología de Massachusetts (MIT)
Su propósito es crear una especie de capa de software para otros sistemas virtuales.
Busca proporcionar administración de recursos de hardware a nivel de aplicación.
Diseñado para separar la protección de recursos de la administración para facilitar la personalización específica de la aplicación.
Muy pequeños debido a su operatividad limitada
Reduce considerablemente la abstracción del hardware para las aplicaciones. Una aplicación es libre de interactuar directamente con el hardware o no.
ExoKernel
La arquitectura exokernel está construida de tal manera que un kernelpequeño mueve todas las abstracciones de hardware a bibliotecas no confiables conocidas como sistemas operativos de biblioteca.
Esta bibliotecas son no confiables porque una mala programación de la aplicación puede bloquear el sistema.
Consta de 3 capas:
La capa del exonúcleo
La capa LibOS (núcleos de varios sistemas operativos corriendo sobre exonúcleo)
La capa de aplicaciones, corriendo sobre LibOS.
ExoKernel
Cada librería es el núcleo
de un SO distinto.
Es usado principalmente
para la investigación.
Ej.: Nemesis
Información extra
http://scielo.sld.cu/scielo.php?script=sci_arttext&pid=S2227-18992016000600001
Sistemas Operativos Modernos – Tanembaum Pág. 62
https://es.wikipedia.org/wiki/Exon%C3%BAcleo
http://www.alegsa.com.ar/Dic/exokernel.php
https://prezi.com/sfowzge4xz2s/exokernel/
https://chsosunal20171911005.wordpress.com/2017/04/21/sistemas-operativos-exokernel/