Sistemas Operativos: Funciones, Estructura y Evolución

Sistemas Operativos

Definición

Un sistema operativo es un programa que actúa como interfaz entre el usuario y el hardware de un computador.

Objetivos Principales

  • Control: Gestiona y asigna los recursos de hardware (procesador, memoria, discos y otros periféricos) que los programas necesitan.
  • Comodidad: Facilita el uso del computador, proporcionando un entorno cómodo para desarrollar y ejecutar programas, y acceder a los recursos.
  • Eficiencia: Administra los recursos de hardware y software de la manera más conveniente, asegurando que los programas en ejecución compartan los recursos disponibles (CPU, memoria, dispositivos de E/S, etc.).

El sistema operativo establece la política que determina quién, cuándo, cuánto tiempo y la cantidad de recurso que se asigna.

Estructura del Sistema Operativo

  • Núcleo (Kernel): Se carga al arrancar el computador y se encarga de sincronizar la activación de los procesos y definir prioridades.
  • Llamadas al sistema: Interfaz que ofrece un conjunto de servicios que el sistema operativo proporciona a los procesos de usuario.
  • Programas del sistema: Aplicaciones de utilidad que se suministran con el sistema operativo, pero no forman parte de él. Realizan tareas como la manipulación de archivos, información del estado del sistema, soporte a lenguajes de programación y comunicaciones.

Funciones Principales del Sistema Operativo

Las funciones más importantes son:

  • Gestión de procesos.
  • Gestión de memoria.
  • Gestión del sistema de ficheros.
  • Gestión de dispositivos de E/S.
  • Gestión de la red.
  • Protección y seguridad.

Gestión de Procesos

Un proceso es un programa en ejecución que necesita recursos para realizar una tarea.

El sistema operativo es responsable de:

  • Crear y eliminar procesos.
  • Detener y reanudar procesos.
  • Comunicar y sincronizar procesos.

Problemática:

  • Ejecución concurrente: Simula la ejecución paralela de varios programas en un único procesador, repartiendo el tiempo del procesador entre los procesos.
  • Planificación de procesos: Determina qué proceso recibe el procesador en cada momento.

Otra definición: Ordenar y dirigir los procesos para asegurar que ninguno monopolice el uso de la CPU.

Gestión de Memoria

Funciones asociadas a la gestión de procesos: Para ejecutar un proceso, se le asigna memoria y se carga en ella. Al finalizar, la memoria debe ser liberada.

El sistema operativo es responsable de:

  • Saber qué partes de la memoria están en uso y por quién.
  • Decidir qué procesos cargar en memoria cuando hay espacio disponible.
  • Asignar y reclamar espacio de memoria según sea necesario.

Problemática:

  • Aislamiento del proceso: Cada proceso debe tener una zona de memoria independiente, protegida de otros procesos.
  • Asignación de memoria: Controlar las zonas de memoria libres y ocupadas, y la zona asignada a cada proceso.

Gestión de Ficheros

La información en la memoria secundaria (disco) se organiza en ficheros.

El sistema operativo es responsable de:

  • Crear y eliminar ficheros y directorios.
  • Manipular ficheros y directorios (lectura, escritura, copia, etc.).

Problemática:

  • Organizar el sistema de ficheros mediante directorios.
  • Asignar espacio en disco a la información (no necesariamente contigua).
  • Gestionar el espacio libre y ocupado en disco.
  • Proteger los ficheros.

Gestión de Dispositivos de E/S

La gestión de E/S proporciona una interfaz de alto nivel para los dispositivos.

El sistema operativo es responsable de:

  • Gestionar el uso de los dispositivos de E/S.
  • Gestionar el almacenamiento temporal de la información de E/S.
  • Atender las interrupciones de los dispositivos de E/S.

Problemática:

  • Manejadores de dispositivos (drivers) específicos para cada dispositivo.

Gestión de la Red

El sistema operativo gestiona las comunicaciones con el exterior a varios niveles:

  • Manejadores (drivers) de tarjetas de red (dispositivo de E/S).
  • Protocolos de comunicación (TCP/IP, NetBIOS, etc.): Permiten el acceso a la red.
  • Aplicaciones para el uso de la red (WWW, FTP, etc.): Facilitan el acceso a recursos remotos (ficheros, páginas web, etc.).

Protección y Seguridad

Mecanismos para permitir o denegar el acceso de un proceso a un recurso (fichero, dispositivo, etc.).

El sistema operativo es responsable de:

  • Definir «propietarios» de recursos o niveles de protección.
  • Garantizar la seguridad: Mecanismos para proteger la privacidad de la información contra ataques intencionados.
  • Registrar los accesos.

Llamadas al Sistema

Concepto: Conjunto de servicios básicos que proporciona el sistema operativo.

Definen la interfaz entre un proceso y el sistema operativo.

Implementación:

  • Se implementan como interrupciones de software.
  • Normalmente, se proporciona una interfaz en forma de biblioteca de funciones que ocultan la interrupción y simulan llamadas a procedimientos o funciones predefinidas.

Otra definición: En informática, una llamada al sistema (system call) es el mecanismo que usa una aplicación para solicitar un servicio al sistema operativo.

Las llamadas al sistema suelen usar una instrucción especial de la CPU que transfiere el control a un código privilegiado, previamente especificado. Esto permite al código privilegiado determinar dónde conectarse y el estado del procesador.

Programas de Sistema

Concepto: Utilidades del sistema operativo que se ejecutan como procesos de usuario y proporcionan un entorno más cómodo.

Son programas escritos en un lenguaje de programación que realizan llamadas al sistema.

Intérprete de Órdenes:

  • Es la interfaz primaria entre el usuario y el sistema operativo.
  • Es un programa que lee una orden introducida por el usuario desde la entrada estándar, la analiza y la ejecuta.
  • En la mayoría de los sistemas, el intérprete de órdenes es un programa que se ejecuta como un proceso de usuario. Ejemplos: Shell de Unix, CMD de MS-DOS.

00txS773va9VgJmY0YADasAYFQe8aWbKRgNGA0YD

Evolución de los Sistemas Operativos

Primera Generación de Computadores

  • Máquinas voluminosas operadas desde una consola.
  • Coste muy elevado.
  • Sin sistema operativo. Solo disponían de cargadores, compiladores/ensambladores y bibliotecas con «manejadores de dispositivos».
  • El usuario/operador/programador interactuaba directamente con el hardware.

Problemática:

  • Mala utilización de recursos caros (CPU, E/S) debido al tiempo de desarrollo y preparación en la consola.
  • Interfaz de usuario muy rudimentaria.

Sistemas por Lotes (Batch) Sencillos

  • Operador profesional.
  • Ausencia de interacción directa usuario-máquina.
  • Primer sistema operativo simple: los trabajos se cargaban en memoria desde una cinta o tarjetas perforadas y luego se ejecutaban.
  • Agrupación de trabajos por lotes.
  • Aparición de técnicas para solapar la ejecución y salida de datos de un programa con la carga del siguiente.

Problemática:

  • Baja utilización de la CPU debido a los tiempos de E/S.

Sistemas por Lotes Multiprogramados

  • Multiprogramación: Los tiempos de espera de la CPU (tareas de E/S) se aprovechan para ejecutar tareas de CPU de otros trabajos.
  • La memoria principal contiene más de un programa.
  • El sistema operativo crece en funciones y tamaño, mejorando la gestión de procesos y memoria (reparto y protección).

Problemática: La ausencia de interacción usuario-máquina dificulta la elaboración y depuración de programas.

Sistemas de Tiempo Compartido

  • Mainframes con muchas terminales que distribuyen potencia de cálculo como una «central eléctrica».
  • Sistemas multiusuario que combinan multiprogramación e interacción usuario-máquina a través de terminales.
  • El sistema operativo limita los tiempos dedicados a cada programa. Al agotarse el tiempo, detiene el programa y ejecuta otra aplicación.
  • Mejora de la interfaz usuario-máquina.
  • Multitarea: Un usuario puede ejecutar varios procesos concurrentemente.

Problemática: Sistemas operativos muy complejos.

Los Primeros Sistemas Unix

  • Minicomputadores: Máquinas de arquitectura más sencilla que los mainframes (multitarea y multiusuario), pero con mayor potencia de cálculo y menos usuarios.
  • Adaptación de los objetivos de los sistemas de tiempo compartido a arquitecturas de minicomputador.
  • Uso de lenguajes de alto nivel para el diseño del sistema operativo.
  • Introducción de un potente intérprete de órdenes.
  • Entorno de programación muy completo.
  • Base para el desarrollo de la primera red de computadores y TCP/IP.

Sistemas Operativos para PCs

  • Máquinas basadas en microprocesadores. Inicialmente de arquitectura sencilla y limitada, pero con una continua evolución en potencia.
  • Interfaces usuario-máquina sofisticadas: ratones, pantallas gráficas, etc.
  • Pensadas para un solo usuario.
  • Sencillez y comodidad del usuario: contrasta con los primeros sistemas, donde los altos precios imponían la optimización en el uso de recursos.

Rápida evolución:

  • Primeros sistemas (MS-DOS, CP/M, …): poco más que un sistema de ficheros y un cargador.
  • Sistemas actuales (Windows, Linux, macOS, OS/2, …):
    • Interfaz basada en ventanas y ratón (introducida por Macintosh).
    • Acceso a red.
    • Capacidad multitarea.
    • Introducción progresiva de mecanismos de protección (al estilo UNIX).

Tendencias Actuales

  • Sistemas operativos en red: Permiten el acceso a recursos remotos y proporcionan protocolos de comunicación y aplicaciones para el acceso a la red.
  • Sistemas distribuidos: Permiten el acceso transparente a recursos remotos (ocultando la distribución). Proporcionan entornos de programación distribuida y acceso transparente a bases de datos remotas.
  • Sistemas multimedia: Incorporan interfaces audiovisuales. Desarrollo de nuevas interfaces usuario-máquina y protocolos de transmisión en tiempo real.

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.