1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los...

34
1 El núcleo o kernel

Transcript of 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los...

Page 1: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

1

El núcleo o kernel

Page 2: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

2

¿Qué es el kernel?

• Es el software responsable de facilitar a los

distintos programas acceso seguro al

hardware de la computadora.

• También se encarga de decidir qué

programa podrá hacer uso de un dispositivo

de hardware y durante cuánto tiempo, lo que

se conoce como multiplexado.

Page 3: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

3

• Acceder al hardware directamente es complejo, por lo que los núcleos implementan una serie de abstracciones del hardware.

• Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para el programador.

Page 4: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

4

Funciones más importantes

• Administración de la memoria para todos los programas y procesos en ejecución.

• Administración del tiempo de procesador que los programas y procesos en ejecución utilizan.

• Es el encargado de que podamos acceder a los periféricos de nuestro ordenador de una manera cómoda.

Page 5: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

5

Arquitecturas del kernel

• Monolítico

• Microkernel

• Híbrido

• Exokernel

Page 6: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

6

KERNEL MONOLÍTICO

Page 7: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

7

• El sistema operativo se escribe como una colección de procedimientos, enlazados entre sí en un solo programa binario ejecutable extenso.

• Cada procedimiento en el sistema tiene la libertad de llamar a cualquier otro. Al tener miles de procedimiento que se pueden llamar entre sí sin restricción, se produce un sistema poco manejable y difícil de comprender.

Page 8: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

• Para solicitar los servicios (llamadas al sistema) que proporciona el sistema operativo, los parámetros se colocan en un lugar bien definido (por ejemplo, una pila) y luego se ejecuta una instrucción trap.

• Esta instrucción cambia la máquina del modo usuario a modo kernel y transfiere el control al sistema operativo.

• Después el sistema operativo obtiene los parámetros y determina cuál es la llamada al sistema que se va a llevar a cabo

8

Page 9: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

• Luego la indiza en una tabla que contiene en la rutina k un apuntador al procedimiento que lleva a cabo la llamada al sistema k.

• Esta organización sugiere una estructura básica para el sistema operativo:

1)Un programa principal invoca el procedimiento de servicio solicitado.

2)Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.

3)Un conjunto de procedimientos utilitarios que ayudan a los procedimientos de servicio.

9

Page 10: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

• En este modelo para cada llamada al sistema hay un procedimiento de servicio que se encarga de la llamada y la ejecuta. Los procedimientos utilitarios hacen cosas que necesitan varios procedimientos de servicio, como obtener datos de los programas de usuario.

10

Page 11: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

11

Page 12: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

12

• Un S. O. con núcleo monolítico concentra todas las funcionalidades posibles (planificación, sistema de archivos, redes, controladores de dispositivos, gestión de memoria, etc) dentro de un gran programa.

• El mismo puede tener un tamaño considerable, y deberá ser recompilado por completo al añadir una nueva funcionalidad.

• Todos los componentes funcionales del núcleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas.

• Un error en una rutina puede propagarse a todo el núcleo.

• Rendimiento mayor que un micronúcleo.

Page 13: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

13

Sistemas con núcleos monolíticos Tipo UNIX

Linux Unix

BSD FreeBSD OpenBSD

Solaris

Tipo DOSMS DOSWINDOWS 9X (95, 98, 98SE, Me)

Tipo Mac OS hasta OS 8.6OpenVMSXTS-400

Page 14: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

14

MICROKERNEL

Page 15: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

15

• Tipo de núcleo de S. O. que provee un conjunto de llamadas al sistema mínimas, para implementar servicios básicos como espacios de direcciones, comunicación entre procesos y planificación básica.

• Todos los otros servicios (gestión de memoria, sistema de archivos, operaciones de E/S, etc), que en general son provistos por el núcleo, se ejecutan como procesos servidores en espacio de usuario.

Page 16: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

16

• Principio de minimalismo de Liedkte:

– Un elemento es aceptable dentro del kernel solamente si al moverlo afuera del kernel se 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).

Page 17: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

17

Ventajas

• Reducción de la complejidad. • Descentralización de fallos (un fallo en

una parte del sistema no lo colapsaría por completo).

• Facilidad para crear y depurar controladores de dispositivos.

• Mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware.

Page 18: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

18

Desventajas• Complejidad en la sincronización de todos los

módulos que componen el micronúcleo y su acceso a la memoria.

• Complejidad para la integración con otras aplicaciones.

• Los procesadores y arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden mapear toda la memoria.

• Mayor complejidad en el código, menor rendimiento, o limitaciones en diversas funciones.

Page 19: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

• La idea básica detrás del diseño de microkernel es lograr una alta confiabilidad al dividir el sistema operativo en módulos pequeños y bien definidos, sólo uno de los cuales (el microkernel) se ejecuta en modo kernel y el resto se ejecuta como procesos de usuario ordinarios, sin poder relativamente.

• En especial al ejecutar cada driver de dispositivo y sistema de archivos como un proceso de usario separado, un error en alguno de estos procesos puede hacer que falle ese componente, pero no puede hacer que falle todo el sistema. 19

Page 20: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

• Así, un error en el driver del dispositivo de audio hará que el sonido sea confuso o se detenga, pero la computadora no fallará.

• En contraste, en un sistema monolítico con todos los drivers en el kernel, un driver de audio con errores puede fácilmente hacer referencia a una dirección de memoria inválida y llevar a todo el sistema a un alto rotundo en un instante.

20

Page 21: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

21

Sistemas con microkernels• Minix

– L4– QNX– Mach

• En la práctica son menos eficientes que los kernels monolíticos

• Suelen usarse en robótica embebida o computadoras médicas, ya que la mayoría de los componentes del sistema operativo residen en su propio espacio de memoria privado y protegido; o en situaciones en que no se puede permitir que haya fallos de software, lo que incluye desde brazos robóticos en naves espaciales, hasta máquinas que pulen cristal donde un pequeño error podría costar mucho dinero.

Page 22: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

Caso de ejemplo MINIX 3• El microkernel de MINIX 3 tiene solo 3200

líneas de C y 800 líneas de ensambador, para las funciones de muy bajo nivel, como las que se usan para atrapar interrupciones y conmutar procesos.

• El código de C se encarga de la comunicación entre procesos y ofrece un conjunto de 35 llamadas al kernel para permitir que el resto del S.O. realice su trabajo. 22

Page 23: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

• Las llamadas al kernel realizan funciones tales como asociar los drivers a las interrupciones, desplazar datos entre espacios de direcciones e instalar nuevos mapas de memoria para los procesos recién creados.

• Los manejadores de las llamadas al kernel se etiquetan como Sys. El manejador de dispositivo para el reloj también está en el kernel, ya que el planificador interactúa con él. Todos los demás controladores se ejecutan como procesos de usuario separados.

23

Page 24: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

• Fuera del kernel, el sistema se estructura como tres capas de procesos, todos se ejecutan en modo usuario. La capa inferior contiene los Drivers de dispositivos.

• Encima hay otra capa que contiene los servidores, que realizan la mayor parte del trabajo del sistema operativo.

• El servidor de reencarnación comprueba si otros servidores y drivers están funcionando bien. En caso que se detecte uno defectuoso se reemplaza automáticamente sin intervención del usuario. Así el sistema es autocorregible y muy confiable. 24

Page 25: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

Estructura del sistema MINIX 3

25

Page 26: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

26

KERNEL HÍBRIDO

Page 27: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

27

• Son micronúcleos que tienen algo de código “no esencial”, en espacio de núcleo para que éste se ejecute más rápido de lo que lo haría si estuviera en espacio de usuario.

• La mayoría de los S. O. modernos entran en esta categoría siendo el más popular MS Windows NT.

Page 28: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

28

• El núcleo híbrido usa conceptos de arquitectura tanto del diseño monolítico como del micronúcleo, específicamente el paso de mensajes y la migración de código no esencial hacia el espacio de usuario, pero manteniendo cierto código no esencial en el propio núcleo por razones de rendimiento.

Page 29: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

29

Sistemas con núcleos híbridos

• Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT

• XNU (usado en Mac OS X)

• DragonFly BSD

• ReactOS

Page 30: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

30

Exokernels

Page 31: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

31

• También conocidos como S.O. verticalmente estructurados, representan una aproximación radicalmente nueva al diseño de sistemas operativos.

• La idea subyacente es permitir que el desarrollador tome todas las decisiones relativas al rendimiento del hardware.

• Los exonúcleos son extremadamente pequeños, ya que limitan expresamente su funcionalidad a la protección y el multiplexado de los recursos.

• Se llaman así porque toda la funcionalidad deja de estar residente en memoria y pasa a estar fuera, en librerías dinámicas.

Page 32: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

32

• Los diseños de núcleos clásicos (tanto el monolítico como el micronúcleo) abstraen el hardware, escondiendo los recursos bajo una capa de abstracción del hardware, o detrás de los controladores de dispositivo. En los sistemas clásicos, si se asigna memoria física, nadie puede estar seguro de cuál es su localización real.

• La finalidad de un exonúcleo es permitir a una aplicación que solicite una región específica de la memoria, un bloque de disco concreto, etc., y simplemente asegurarse que los recursos pedidos están disponibles, y que el programa tiene derecho a acceder a ellos.

Page 33: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

33

• Debido a que el exonúcleo sólo proporciona una interfaz al hardware de muy bajo nivel, careciendo de todas las funcionalidades de alto nivel de otros sistemas operativos, éste es complementado por una «biblioteca de sistema operativo». Esta biblioteca se comunica con el exonúcleo subyacente, y facilita a los programadores de aplicaciones las funcionalidades que son comunes en otros sistemas operativos.

Page 34: 1 El núcleo o kernel. 2 ¿Qué es el kernel? Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora.

34

• Actualmente, los diseños exonúcleo están fundamentalmente en fase de estudio y no se usan en ningún sistema popular.

• Un concepto de sistema operativo es Nemesis, creado por universidades y organizaciones europeas.