29 May

Introducción a los Sistemas Operativos

Un sistema operativo es el programa fundamental que gestiona los recursos de hardware y software de una computadora. Se encarga de interactuar con el hardware y de administrar todos los recursos, como el procesador, la memoria y los dispositivos de entrada y salida (por ejemplo, teclado o impresora). Además, proporciona una interfaz de máquina virtual más amigable para el usuario.


Funciones Clave de un Sistema Operativo

El sistema operativo se encarga de ejecutar programas, controlar el acceso a los archivos, gestionar los dispositivos de E/S y manejar errores. También recopila estadísticas para optimizar el rendimiento del sistema. Protege la memoria del sistema y previene que un proceso monopolice los recursos.


El Núcleo (Kernel) del Sistema Operativo

El núcleo es el componente central del sistema operativo. Reside permanentemente en memoria y se encarga de las tareas básicas como la gestión de procesos, la administración de memoria, la comunicación entre procesos y la planificación del CPU.


Evolución Histórica de los Sistemas Operativos

Inicialmente, no existían; todas las operaciones se realizaban manualmente desde una consola. Posteriormente, surgieron los sistemas por lotes, que agrupaban trabajos para su ejecución. Más tarde, evolucionaron hacia la monoprogramación (un proceso a la vez), la multiprogramación (múltiples procesos concurrentes) y el tiempo compartido, que permite a numerosos usuarios interactuar simultáneamente con el sistema.


Estructuras Comunes de los Sistemas Operativos

Algunos SO son monolíticos, donde todos los componentes residen en un único bloque, lo que puede dificultar su mantenimiento. Otros se organizan en capas (estructura por niveles), donde cada capa cumple una función específica y bien definida. Los sistemas más modernos emplean un micronúcleo, que mantiene solo las funcionalidades esenciales en el núcleo y delega el resto a procesos de usuario.


Gestión de Procesos: Conceptos Fundamentales

¿Qué es un Proceso?

Un proceso es una instancia de un programa en ejecución. Tiene su código, sus datos y un conjunto de información de control que el sistema necesita para administrarlo, como su estado actual o su prioridad. Gracias al SO, cada proceso se ejecuta de forma independiente, como si dispusiera de su propio CPU virtual.


El Bloque de Control de Proceso (PCB)

Es la estructura de datos que el sistema operativo utiliza para almacenar toda la información relevante sobre un proceso. Contiene su identificador (PID), su estado actual, el uso de memoria, los recursos asignados, entre otros datos. Es fundamental para guardar el contexto del proceso durante los cambios de contexto (cambio de un proceso a otro).


Estados de un Proceso

Un proceso puede transitar por los siguientes estados:

  • Nuevo: El proceso acaba de ser creado.
  • Listo: El proceso está esperando para ser asignado al CPU.
  • En Ejecución: El proceso está utilizando el CPU.
  • Esperando: El proceso está aguardando la finalización de un evento (ej., una operación de E/S).
  • Terminado: El proceso ha completado su ejecución.

Planificación de Procesos (Scheduling)

Es el mecanismo mediante el cual el sistema operativo decide qué proceso utilizará el procesador en un momento dado. Existen planificadores de largo plazo (admisión de procesos a memoria), de corto plazo (asignación del CPU) y de medio plazo (intercambio de procesos entre memoria principal y secundaria). Los objetivos principales son la eficiencia, la equidad y una respuesta rápida del sistema.


Algoritmos Comunes de Planificación de CPU

  • FIFO (First-In, First-Out): Ejecuta los procesos en el orden de llegada.
  • SJF (Shortest Job First): Selecciona el proceso con el tiempo de ejecución más corto.
  • SRTF (Shortest Remaining Time First): Versión preemptiva de SJF, interrumpe el proceso actual si llega uno con menor tiempo restante.
  • Round Robin (RR): Asigna a cada proceso un pequeño intervalo de tiempo de CPU (quantum).
  • Prioridades: Los procesos se ejecutan según su nivel de importancia.
  • Multinivel: Utiliza múltiples colas de procesos, cada una con su propio algoritmo de planificación.

Nota: Un quantum más pequeño incrementa los cambios de contexto, lo que puede reducir la productividad general del sistema.


Métricas de Evaluación de la Planificación

Evalúa el tiempo de retorno (desde la llegada hasta la finalización), el tiempo de espera, el rendimiento (número de procesos completados por unidad de tiempo) y el tiempo de respuesta del sistema.


Gestión de Memoria en Sistemas Operativos

¿Qué es la Memoria en una Computadora?

Es el componente donde se almacenan temporalmente los datos y programas en uso. Hay distintos tipos:

  • Memoria Caché: Muy rápida y de tamaño reducido, almacena datos de uso frecuente.
  • Memoria Principal (RAM): Rápida y de mayor tamaño, almacena programas y datos activos.
  • Memoria Secundaria (Almacenamiento en Disco): Lenta pero de gran capacidad, para almacenamiento persistente.

Esta jerarquía se organiza de la memoria más rápida y costosa a la más lenta y económica.


Paginación de Memoria

La paginación es una técnica de gestión de memoria que divide la memoria física en bloques de tamaño fijo llamados marcos de página y la memoria lógica de los procesos en bloques del mismo tamaño llamados páginas. Cada acceso a una dirección de memoria implica una traducción de una dirección lógica (generada por el programa) a una dirección física (real en la memoria principal).


Memoria Virtual

Es una técnica que permite a los sistemas operativos simular una memoria principal mucho mayor de la que realmente está disponible físicamente (RAM). Solo las partes del programa que están siendo activamente utilizadas se cargan en la RAM, mientras el resto permanece en el almacenamiento secundario.


Fallo de Página (Page Fault)

Se produce un fallo de página: el sistema operativo debe buscar la página requerida en el almacenamiento secundario (disco), cargarla en un marco de página disponible en la RAM y, posteriormente, reiniciar la instrucción que causó el fallo. Este proceso introduce una latencia significativa y afecta directamente el rendimiento del sistema.


Algoritmos de Reemplazo de Páginas

Hay tres algoritmos principales:

  • FIFO (First-In, First-Out): Reemplaza la página que lleva más tiempo en memoria.
  • LRU (Least Recently Used): Reemplaza la página que no ha sido utilizada durante el período más largo.
  • OPT (Optimal): Reemplaza la página que no se utilizará durante el período más largo en el futuro (algoritmo teórico, no implementable en la práctica).

Tiempo Efectivo de Acceso a Memoria (TEAM)

Es el tiempo promedio que tarda el sistema en acceder a una dirección de memoria, teniendo en cuenta la probabilidad de ocurrencia de fallos de página. Una menor probabilidad de fallo de página resulta en un TEAM más bajo y, por ende, en un sistema más rápido.


Seguridad y Protección en Sistemas Operativos

Protección de la Información

Mediante mecanismos de seguridad y protección, el SO garantiza la disponibilidad del sistema, la confidencialidad (evitar acceso no autorizado) y la integridad (evitar modificación no autorizada) de los datos, así como la autenticidad de los usuarios (verificar su identidad).


Arquitectura de Computadoras: Conceptos Clave

La Arquitectura Von Neumann

Es el modelo de arquitectura de computadoras más extendido, caracterizado por almacenar tanto las instrucciones del programa como los datos en una única memoria compartida. Emplea una Unidad Central de Procesamiento (CPU) que incluye una Unidad Aritmético-Lógica (ALU), encargada de las operaciones matemáticas y lógicas, y una Unidad de Control (UC), que coordina todas las operaciones del sistema. Los distintos componentes se interconectan a través de buses de datos, direcciones y control.


Interrupciones y Acceso Directo a Memoria (DMA)

Una interrupción es una señal asíncrona que detiene temporalmente la ejecución del CPU para que pueda atender un evento urgente, como la pulsación de una tecla o la finalización de una operación de E/S. El DMA (Acceso Directo a Memoria) es una característica que permite a ciertos dispositivos de hardware acceder directamente a la memoria del sistema para leer o escribir datos, sin la intervención constante del CPU, lo que optimiza significativamente el rendimiento.


Concurrencia en Sistemas Operativos

Se refiere a la capacidad de un sistema para ejecutar múltiples procesos o hilos de ejecución de forma simultánea o entrelazada. Si bien mejora la utilización del procesador, requiere mecanismos de control para prevenir errores, conflictos de acceso a recursos y situaciones de interbloqueo (deadlocks). Se emplean modelos como Cobegin/Coend o Fork/Join para gestionar la ejecución paralela de tareas.


Multiprocesamiento

Consiste en la utilización de múltiples procesadores (CPUs) dentro de un mismo sistema para ejecutar tareas de forma simultánea. Facilita la ejecución paralela de procesos, incrementa el rendimiento general y mejora la fiabilidad del sistema. Puede ser simétrico (SMP – Symmetric Multiprocessing), donde todos los CPUs son iguales y comparten recursos, o asimétrico (AMP – Asymmetric Multiprocessing), donde un CPU principal coordina las tareas de los demás (maestro/satélite).

Deja un comentario