Núcleo o kernel del Sistema operativo

Núcleo o kernel del Sistema operativo

El núcleo también tiene que atender las peticiones de los dispositivos que envían la información y también dar el acceso al dispositivo si un programa lo requiere.

Existen varios tipos de núcleos entre ellos se tiene:

Sistemas Monolíticos 

Sistemas monoliticos
Linux es un ejemplo de ello, estos sistemas son realmente varios procesos enlazados entre si. Para construir uno es necesario compilar cada proceso por separado y luego vincularlos entre si con el fin de que sean visibles entre si.s

De capas

Un ejemplo es multics, este tipo es jerárquico y se basa en ir creando capas de procedimientos donde cada capa inferior tiene mayores privilegios que los siguientes.

MicroKernels

Minix es de este tipo, a diferencia del modelo de capas solo algunas capas están directamente en el kernel, esto evita que se pueda paralizar el sistema adicionalmente como algunos procesos se ejecutarán en modo usuario no tendrán grandes repercusiones para generar una falla.


Sistema cliente-Servidor

Tiene una relación con los microkernels donde no todos los procesos los maneja el kernel, para que un proceso pueda acceder a su espacio de memoria y se comunica con los demás procesos por medio de mensajes. Un ejemplo de ello es Windows.


Exokerlnel

Exokernel

Su función es asegurar la protección y la combinación de varios recursos en uno solo, que son mas simples que las implementaciones del paso de mensajes y abstracciones de hardware que utilizan los núcleos monolíticos. Un ejemplo de ellos es Aegis un sistema inventado por el MIt.



Procesos

Generalmente los procesos que debe manejar el kernel corresponden a
  • Manejo de Interrupciones.
  • Creación y destrucción de Procesos.
  • Cambio de estado de los Procesos.
  • Despacho.
  • Suspensión y reanudación de Procesos.
  • Sincronización de Procesos.
  • Comunicación entre Procesos.
  • Manipulación de los Bloques de Comunicación de Procesos.
  • Apoyo a E/S
  • Asignación de Memoria y Liberación de la misma.
  • Sistema de Archivos.
  • Mecanismo de Llamada y Retorno de un Proceso.
  • Contabilidad del Sistema.


Estructura de un núcleo basado en la familia i80x86

El núcleo o kernel es el nivel más bajo de un sistema operativo y a su vez el kernel de subdivide en rutinas.


Rutinas dependientes del hardware

Estas rutinas son las mas elementales están escritas en ensamblador y tratan direcciones especificas de entrada y salida o de memoria o manipulan directamente la pila del programa para proporcionar los cambio de contexto.

Las rutinas dependientes del hardware se llamaran únicamente desde el núcleo. Encapsulan las características de la arquitectura.


Rutinas de manejo de colas y auxiliares 

Fundamentalmente son rutinas de acceso a colas y rutinas auxiliares de apoyo a las programación. estás se utilizaran también en los niveles superiores. 

Rutinas de manejo de colas

Rutinas para la gestión de procesos

Este tipo de rutinas manejan colas y proporcionan cambios de estado en los procesos: bloquear(), scheduler(), dispatcher()
Rutinas de gestión de procesos



Primitivas

Son rutinas definidas en c y utilizan las rutinas dependientes del hardware y las rutinas auxiliares.
se marcarán con el sufijo _nac para diferenciarlas.

Control de dispositivos
  1. disco
    • void motor_on_nuc (int drive) 
    • void motor_off_nuc () 
    • int posicionar_pista_nuc (int n_pista, int drive)
    • int leer_sector_nuc (int n_cara, int n_sector, char *p_buff) 
    • int escribir_sector_nuc (int n_cara, int n_sector, char *p_buff)
    • int recalibrar_nuc (int drive) 
  2. terminal
    • char leer_teclado_nuc () 
    • int escribir_pantalla_nuc (int lin, int col, char car, char atributo) 
    • int scroll_nuc (int lin_sup, int lin_inf) 
  3. linea serie
    • int leer_l_s_nuc () 
    • void escribir_l_s_nuc (char car) 
    • void init_l_s_nuc () 
  4. impresora
    • int escribir_impresora_nuc (char car) 
Control de procesos
  1. int crear_pcb_nuc (void (*cod)(), int *pila, int prio, int quantum, int pid)
  2. int destruir_pcb_nuc (int id_proc)
  3. int quisoc_nuc ()
  4. int info_proc_nuc (int id_proceso, struct info_proc *p_info)
  5. int modif_proc_nuc (int id_proceso, struct info_proc *p_info)
y otras mas descritas en el documento.

REFERENCIAS

  • http://www.sc.ehu.es/acwlaroa/LSO/Apuntes/NucleoSO.pdf
  • http://profesorgavit0.blogspot.com.co/2014/03/tipos-de-kernel-de-los-sistemas.html
  • http://lossistemasoperativos3.blogspot.com.co/2012/11/kernel_21.html

0 Comentarios