Sistemas operativos – Modo usuario y modo núcleo

Es necesario distinguir entre los modos de ejecución del procesador, normalmente asociados con el sistema operativo (modo núcleo) y con los programas de usuario (modo usuario).

Imaginemos que un usuario pudiera hacer cambios en tiempo real de las instrucciones que rigen el funcionamiento del sistema operativo y que interactúan con el hardware, que pudiera cambiar el manejador de interrupciones de reloj, la forma en la que se produce la comunicación entre un dispositivo E/S, es decir, que pudiera cambiar la codificación del sistema operativo o acceder a ella para controlarla a su manera. Si esto sucediera, se podría hacer un uso indebido del sistema operativo y del hardware, produciendo comportamientos inesperados y pudiendo corromper su funcionamiento. Por eso, es necesario que determinadas instrucciones del sistema operativo sólo puedan ser ejecutadas en modos privilegiados. Éstas serían lectura y modificación de los registros de control, instrucciones primitivas de E/S, instrucciones relacionadas con la memoria, instrucciones sobre señales, planificación, interrupciones, controladores de dispositivos, etc.

El modo más privilegiado de ejecución se conoce como modo núcleo o modo kernel. El núcleo de un sistema operativo es la parte que engloba las funciones y servicios más importantes del mismo. Es una parte relativamente pequeña del sistema, pero es la más utilizada, por ello suele residir en memoria de forma continua. Lista de funciones básicas del kernel:

  • Gestión de procesos
    • Creación y terminación de procesos
    • Planificación y activación de procesos
    • Intercambio de procesos
    • Sincronización de procesos y soporte para la comunicación entre procesos
    • Gestión de los bloques de control de proceso
  • Gestión de memoria
    • Reserva de espacio de direcciones para los procesos
    • Swapping
    • Gestión y páginas de segmentos
  • Gestión E/S
    • Gestión de buffers
    • Reserva de canales de E/S y de dispositivos de los procesos
  • Funciones de soporte
    • Gestión de interrupciones
    • Auditoría
    • Monitorización

El motivo de que existan distintos modos de ejecución no es otro que proteger al sistema operativo y tablas clave del sistema de la interferencia de programas de usuario. En modo núcleo, el software tiene control completo del procesador y de sus instrucciones, registros y memoria.

Llegados a este punto, nos surgen dos cuestiones:

  1. ¿Cómo conoce el procesador en qué modo se está ejecutando?
  2. ¿Cómo puede modificarse este modo?

La respuesta a la primera pregunta: Existe un bit en la palabra de estado de programa (PSW) que indica el modo de ejecución. Este bit altera su valor como respuesta a determinados eventos.

La respuesta a la segunda pregunta: Cuando un usuario realiza una llamada a un servicio del sistema operativo o cuando una interrupción dispara la ejecución de una rutina del sistema operativo, este modo de ejecución se cambia a modo núcleo (alternando el bit anteriormente mencionado) y cuando finaliza la ejecución del servicio, el modo se fija de nuevo a modo usuario.

Anuncios
Publicado en Sistemas operativos, Varios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Sobre mi…

Soy Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Administración de Sistemas Informáticos en Red. Actualmente estudiando el Grado de Ingeniería Informática en la Universidad de Córdoba (España).

Enamorado de la ciencia en general y de la computación en particular.

Música: Heavy, Rock, Celta, New Age, Electrónica, etc...
Libros:Isaac Asimov, Richard Dawkins, Stephen Hawking, Carl Sagan...

Estoy interesado en la programación de videojuegos. Políticamente de izquierdas, escéptico y ateo. En definitiva, mala gente.

Sígueme en Twitter

Introduce tu dirección de correo electrónico para seguir este Blog y recibir las notificaciones de las nuevas publicaciones en tu buzón de correo electrónico.

Únete a otros 24 seguidores

Usa Linux Mint
The Bit Developer Box
A %d blogueros les gusta esto: