Fundamentos Esenciales de Sistemas Operativos: Estructura, Procesos e Hilos

T1: Funcionalidades y Componentes Básicos del Sistema Operativo

Funcionalidades Principales del Sistema Operativo (SO)

  • Coordinar actividades del sistema.
  • Gestionar el uso de recursos.
  • Controlar el uso de recursos.

Mecanismos Fundamentales

Interrupción

Mecanismo que advierte al sistema sobre la ocurrencia de eventos.

Vector de Interrupciones

Forma de determinar la rutina de tratamiento a ejecutar ante una interrupción.

SPOOL (Simultaneous Peripheral Operations On-Line)

Busca aumentar la eficiencia. Consiste en un disco que almacena datos de entrada/salida (E/S). Es más rápido que los periféricos tradicionales usados para E/S, ofreciendo acceso aleatorio.

Modo Dual (Hardware)

Característica del hardware que permite distinguir entre varios modos de funcionamiento del sistema:

  • Modo Usuario: Conjunto de instrucciones para usuarios normales.
  • Modo Núcleo: Instrucciones privilegiadas (protección de E/S, de memoria y de CPU). Solo pueden ser usadas por el S.O.

T2: Estructura del Sistema Operativo

Modelos Estructurales

Estructura Simple

Adecuada para necesidades poco exigentes, resueltas con poco código.

Enfoque por Capas

En cada capa se implementa funcionalidad (sin especificar cómo). Estas funcionalidades se basan en otras de capas inferiores. Esta modularidad simplifica la depuración y separa el mecanismo de la funcionalidad. Problemas:

  • Decidir la función de cada capa es difícil.
  • El paso de argumentos entre capas ralentiza la operación.

Microkernel

Funciones principales:

  • Tratamiento de interrupciones.
  • Gestión de E/S.
  • Planificación de CPU.
  • Gestión de memoria.
  • Servicios de comunicación y sincronización.

Máquinas Virtuales (VM)

Crean la ilusión de existencia de varias computadoras (cada una con su hardware), aunque se esté utilizando solo una. Es ideal para el desarrollo de S.O.

T3: Gestión de Procesos

Definición y Estructura del Proceso

Proceso: Programa en ejecución. Es una entidad dinámica que evoluciona en el tiempo.

Imagen del Proceso en Memoria (Formada por):

  • Texto (código).
  • Datos.
  • Montículo (Heap).
  • Pila (Stack).
  • Registros y contadores.

Fases de un Proceso

Las fases principales son:

  1. Nuevo: Espera en cola de tareas.
  2. Listo: Proceso admitido, esperando ser ejecutado.
  3. En Ejecución: CPU ejecutando instrucciones.
  4. En Espera: Esperando a que suceda un evento (ej. E/S).
  5. Terminado.

Transiciones entre Estados del Proceso

Las transiciones incluyen: admitir, despachar, salir, bloquear, interrumpir y despertar.

Información en el Bloque de Control de Proceso (PCB)

El PCB contiene:

  • ID del proceso.
  • Lista de hijos.
  • Estado.
  • Contador de programa y registros de CPU.
  • Apuntadores.
  • Información de planificación.
  • Información de estado de E/S y gestión de memoria.
  • Recursos asignados.
  • Información contable, etc.

Colas de Planificación

Herramienta para describir gráficamente el sistema de clientes y servicios:

  • Clientes: Procesos.
  • Colas: Donde esperan los procesos.
  • Servicios: Recursos que quieren usar los procesos.

Colas de Procesos Específicas

  • Colas de trabajos: Todo lo que hay en el sistema.
  • Cola de listos: Los procesos listos para usar la CPU.
  • Colas de dispositivos: Procesos que esperan usar un dispositivo de E/S.

Planificador y Tipos de Planificación

Planificador: Programa que escoge, de entre todos los procesos en cola, cuál recibirá o se le asignará el recurso.

Tipos de Planificadores

  • Largo Plazo (Admisión): Decide qué proceso es admitido; se ejecuta a grandes intervalos de tiempo.
  • Corto Plazo (Despacho): Decide a qué proceso asignar el uso de la CPU para ejecutar instrucciones.

Efecto Convoy

Ocurre cuando llega un proceso limitado por la CPU (CPU-bound). Tarda mucho en abandonar la CPU, provocando que muchos procesos esperen en la cola de listos, mientras que otras colas (E/S) se vacían. Esto resulta en un sistema descompensado.

T4: Gestión de Hilos (Threads)

Hilo: Unidad básica de utilización de la CPU. Comprende:

  • Identificador único.
  • Contador de programa.
  • Conjunto de registros.
  • Pila.

Comparte con otros hilos pares el código, datos y otros recursos del S.O.

Tipos de Hilos

  • Hilo de Usuario: Creados sin intervención del S.O., el cual no sabe de su existencia.
  • Hilo de Núcleo: Creados y manejados por el núcleo. El SO conoce su existencia, los crea y planifica como entidades independientes.

Tipos de Modelos de Hilos

  • Modelo Muchos a Uno: Hilos gestionados por una biblioteca de funciones que se ejecuta en modo usuario. Es eficiente en creación y cambios de contexto entre hilos (no participa el núcleo), pero penaliza la concurrencia, ya que el núcleo admite solo un hilo a la vez.
  • Modelo 1 a 1: Más concurrente, requiere núcleo multihilo. Se debe crear un hilo de sistema por cada hilo de usuario, lo que puede generar lentitud.
  • Modelo Muchos a Muchos: Modelo de dos niveles que permite que un hilo de usuario sea asignado a un hilo de núcleo, ganando concurrencia.

Consideraciones Adicionales

  • PTHREADS: Define un estándar sobre el comportamiento, no sobre la implementación.
  • Aspectos a considerar al usar hilos: Tratamiento de fork() y exec(), y cancelación (asíncrona o retardada).

T5: Multiprogramación y Planificación

Multiprogramación

Busca maximizar el uso de la CPU asegurando que siempre haya un proceso en ejecución.

Tipos de Planificación (Según Interrupción)

  • Planificación Expropiativa (con expulsión): Trata problemas de uso de recursos compartidos modificables.
  • Planificación No Expropiativa (sin expulsión): Basada en el buen comportamiento de los procesos.

Despachador (Dispatcher)

Se encarga de:

  1. Cambiar contexto.
  2. Pasar a modo usuario.
  3. Continuar la ejecución del proceso recién planificado en el punto exacto donde se detuvo.

Planificación Según Duración del Proceso

  • Largo Plazo: Se obliga a hacer una estimación de la duración; si es errónea, el trabajo puede ser cancelado.
  • Corto Plazo: Se estima la duración de la siguiente ráfaga de CPU.

Planificación de Hilos

  • PCS (User Threads): Hilos de usuario creados por una biblioteca de funciones.
  • SCS (Kernel Threads): Hilos de sistema; el SO conoce su existencia y planifica eligiendo entre los hilos del sistema.

Tipos de Planificación en Tiempo Real

  • Tiempo Real Estricto (Hard Real-Time): Se garantiza la realización de la tarea dentro de un lapso de tiempo definido.
  • Tiempo Real Flexible (Soft Real-Time): Se da prioridad a los procesos de tiempo real, pero el incumplimiento del plazo no es catastrófico.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.