Fundamentos de Sistemas Operativos: Modo Dual, Estados del Proceso y Planificación CPU
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 6,03 KB
Modo Dual y Protección del Sistema Operativo
Para garantizar la integridad y el correcto funcionamiento de un Sistema Operativo (SO), es fundamental poder distinguir entre la ejecución del código del SO y el código del usuario. El método más utilizado para lograr esta distinción es la implementación de varios modos de ejecución. Como mínimo, deben existir dos modos esenciales:
- Modo Usuario (User Mode): Ejecución de programas de aplicación con un conjunto reducido de instrucciones.
- Modo Núcleo (Kernel Mode) o Modo Supervisor: Ejecución del código del SO, permitiendo el acceso a instrucciones privilegiadas y recursos críticos del hardware.
Cuando un programa se ejecuta, lo hace en Modo Usuario. Si dicho programa solicita un servicio al SO (siempre mediante una interrupción o trampa), entonces se produce la transición al Modo Núcleo, lo que permite que el SO responda a la petición. Antes de devolver el control, el SO regresa al Modo Usuario.
El Bit de Modo
La distinción entre modos se consigue mediante un “bit de modo”, un registro de hardware que indica el estado actual de la CPU:
- Bit 0: Modo Núcleo.
- Bit 1: Modo Usuario.
El sistema siempre arranca en Modo Núcleo hasta que carga el SO. Después, inicia sus programas en Modo Usuario.
Protección mediante Modo Dual
El Modo Dual protege el sistema de daños causados por la ejecución de instrucciones privilegiadas. Ejemplos de estas instrucciones incluyen:
- Gestión de Entrada/Salida (E/S).
- Gestión de Memoria.
- Protección de la CPU (configuración de temporizadores).
Si se detecta el intento de ejecución de una instrucción no permitida, el hardware lo detecta como un error y genera una trampa (trap), transfiriendo inmediatamente el control al SO (Modo Núcleo).
Transición de Control y Llamadas al Sistema
El control inicialmente lo tiene el SO (Modo Núcleo). Cuando se cede el control a una aplicación de usuario, se pasa a Modo Usuario. Finalmente, el control vuelve al SO a través de una interrupción, una excepción o una llamada al sistema.
Manejo de Llamadas al Sistema
Las llamadas al sistema proporcionan los medios para que un programa de usuario pida al SO que realice tareas reservadas en nombre del programa. Cuando se ejecuta una llamada al sistema, se trata como una interrupción de software. El proceso de manejo es el siguiente:
- El control pasa por el vector de interrupción a una rutina del SO.
- El bit de modo se establece en Modo Núcleo.
- El núcleo examina la instrucción que interrumpe para determinar qué llamada al sistema se ha producido.
- Un parámetro indica qué tipo de servicio está requiriendo el programa del usuario.
- El núcleo verifica que los parámetros sean correctos y legales.
- El núcleo ejecuta la solicitud.
- Se devuelve el control a la instrucción siguiente a la de la llamada de servicio, regresando al Modo Usuario.
Estado del Proceso en Sistemas Operativos
Como el proceso es un ente dinámico, va cambiando de estado. El estado se define según la actividad actual del proceso. Aunque podría usarse una visión simplista (un proceso se ejecuta o no), utilizaremos cinco etapas fundamentales:
| Estado | Definición | Transición (Evento) |
|---|---|---|
| Nuevo | Proceso esperando a entrar al sistema. | Admitir: Asignar memoria, espacio en disco, E/S, cargar instrucciones y datos. |
| Listo | Proceso esperando a que se le asigne la CPU. | Despachar: Asignar CPU. |
| En Ejecución | Proceso ejecutándose actualmente en la CPU. | Interrumpir: Se le quita la CPU; Bloquear: Espera a una operación E/S; Salida: Última instrucción ejecutada. |
| Bloqueado | Proceso esperando datos o la finalización de una operación de E/S. | Despertar: Operación E/S terminada. |
| Terminado | Recopilando información contable y preparando la liberación de recursos. | N/A (Estado final). |
Planificación de CPU: Colas Multinivel con Realimentación
En esta planificación, los procesos no se asignan de forma fija a las colas, sino que se permite moverlos entre unas y otras (realimentación). Se separan los procesos según la duración de sus ráfagas de CPU, y también se implementa la promoción por envejecimiento para evitar la inanición.
Para implementar este algoritmo, se deben definir los siguientes parámetros:
- Número de colas de prioridad.
- Algoritmo de planificación específico para cada cola.
- Método para pasar un proceso a una cola de prioridad más alta (promoción).
- Método para pasar un proceso a una cola de prioridad más baja (degradación).
- Método inicial para determinar la cola de un proceso.