Sistemas Operativos: Funciones, Tipos y Estructura

Conceptos Básicos de los Sistemas Operativos

Se puede definir a un sistema operativo como un conjunto de programas que controlan directamente los recursos hardware o físicos de un ordenador (CPU, memoria principal y periféricos), proporcionando una máquina virtual más fácil de utilizar que el hardware subyacente. El sistema operativo es la capa de software más baja de un ordenador, como se refleja en la figura 6.1.

programa de aplicación

traductor/editor/intérpretes de órdenes

sistema operativo

hardware

En general, se puede decir que los sistemas operativos realizan dos funciones:

Constitución de una máquina virtual o extendida. Mediante esta función, el sistema operativo ofrece a sus capas superiores una serie de servicios (que constituyen la interfaz del sistema operativo) que permiten utilizar de una forma más sencilla el hardware del ordenador.

Gestión de los recursos físicos del ordenador. Los recursos físicos de un ordenador vienen constituidos por la CPU, la memoria principal y los periféricos. El sistema operativo es responsable de que estos recursos se utilicen eficiente y coherentemente.

La Interfaz del Sistema Operativo

El conjunto de todos los servicios ofrecidos por el sistema operativo constituyen la interfaz del sistema operativo, es decir, la forma de comunicarse con él. A estos servicios se les llama también llamadas al sistema.

Al principio todos los sistemas operativos eran monoprogramados. Este tipo de gestión implica que todos los recursos del ordenador (CPU, memoria y periféricos) están a disposición del único programa en ejecución. La memoria principal sólo alberga al sistema operativo y a dicho programa. La CPU ejecuta el programa desde su inicio hasta su fin ininterrumpidamente. Cuando este programa finaliza se pasa a ejecutar un nuevo programa, que pasa a disfrutar de todos los recursos del ordenador.

En un sistema operativo multiprogramado la memoria principal alberga el código de más de un programa. La ejecución de uno de los programas almacenados en la memoria principal puede ser interrumpida por el sistema operativo para ejecutar otro de los programas situados en la memoria. La ejecución del programa interrumpido será reanudada posteriormente por el sistema operativo por el lugar en el que se interrumpió. El programa no es consciente de que se ejecuta discontinuamente en el tiempo. Los programas ejecutados de esta forma comparten los recursos del ordenador (CPU, memoria y periféricos), siendo el sistema operativo responsable de que no se produzcan problemas porque más de un programa quieran utilizar un mismo recurso de forma incoherente a su naturaleza.

Funciones Principales de un Sistema Operativo

Gestión de la CPU

La gestión que realice el sistema operativo de la CPU va a depender de si se quiere proporcionar monoprogramación o multiprogramación. Si el sistema es monoprogramado la gestión es muy simple, por lo que aquí se comentará la gestión de un sistema operativo multiprogramado o de uno de tiempo compartido.

Una de las tareas que tiene que realizar un sistema operativo para proporcionar multiprogramación es mantener una estructura de datos para guardar información sobre cada uno de los procesos que se ejecutan concurrentemente en el sistema. Esta información es necesaria para que la multiprogramación se realice correctamente.

Otra de las tareas a realizar por el sistema operativo es decidir cuándo se interrumpe a un proceso, y determinar a qué proceso se le asigna la CPU en su lugar. Con la ayuda del hardware, el sistema operativo tiene garantizado que cada muy poco tiempo (existe un límite para dicho tiempo) se ejecuta uno de sus programas.

A continuación, se describen dos de los servicios relacionados con la gestión de la CPU que proporciona todo sistema operativo.

  1. Creación de un proceso. Este servicio sirve para ejecutar un programa, siendo utilizado, entre otros programas, por los intérpretes de órdenes. El servicio requiere de un parámetro de entrada en el que se especifica el fichero que contiene el código ejecutable del programa. También precisa de un parámetro de salida donde el sistema operativo informa de si se pudo crear o no el proceso. Un motivo para negar su creación es que ya existen demasiados procesos ejecutándose concurrentemente en el sistema, la inclusión indiscriminada de procesos en el sistema puede llevar a su colapso, pues los recursos no pueden ser compartidos eficientemente entre un número elevado de procesos.
  2. Terminación de un proceso. La solicitud de este servicio en el código de un programa implica que el sistema operativo finalizará su ejecución.

El Sistema de Ficheros

  1. Abrir un fichero.
  2. Escribir en un fichero.
  3. Leer de un fichero.
  4. Borrar un fichero.
  5. Cerrar un fichero.

Gestión de la Entrada/Salida (E/S)

  1. Apertura de un periférico.
  2. Operaciones de lectura o escritura.
  3. Cierre de un periférico.

Definiciones Previas

Un sistema operativo (SO) es un conjunto de programas o software destinado a permitir la comunicación del usuario con un ordenador y gestionar sus recursos de manera cómoda y eficiente. Comienza a trabajar cuando se enciende el ordenador, y gestiona el hardware de la máquina desde los niveles más básicos.

Un ordenador es un conjunto de tarjetas y circuitos que realizan un trabajo con un fin común: el procesamiento de la información.

Como ya hemos visto en el tema anterior, el procesador o CPU es el corazón del ordenador, y es quien ejecuta las instrucciones.

La memoria es un dispositivo hardware que almacena memoria. Hay principal o física y secundaria.

Recurso es un componente hardware necesario para llevar a cabo un trabajo: Procesador, memoria principal, unidades de almacenamiento secundario y unidades de E/S.

Objetivos y Funciones Básicas de un Sistema Operativo

Las funciones de un sistema operativo han ido evolucionando con ellos y con las máquinas. Así, por ejemplo, un sistema operativo realiza:

  • Una secuencia automática de trabajos
  • Una mejora del rendimiento
  • Multiprogramación
    • Las tareas básicas del SO en un sistema multiprogramado serán:
      • Ocultar los detalles hardware, sin que el usuario sea consciente del lío para acceder al procesador.
      • Gestionar y administrar los recursos que necesiten los usuarios.
      • Proporcionar facilidades de sincronización y comunicación entre procesos.
      • Reforzar la política de protección sobre recursos y datos.
    • Los mecanismos hardware necesarios para implementar la multiprogramación son:
      • Mecanismos de interrupción
      • Mecanismos de temporización, para controlar tiempos de ejecución
      • Mecanismos de protección de almacenamiento, basados en registros frontera que indican los límites de las zonas de acceso.
      • Reasignación dinámica de direcciones, para independizar los programas y los datos de la zona de memoria donde se carguen.
  • Gestión de sistemas multiprocesador
  • Integración de sistemas de interfaz gráfico

Los objetivos básicos de todo sistema operativo son la eficiencia y facilidad de uso de las máquinas, lo que generalmente es incompatible, teniendo que perder eficiencia a favor de la facilidad de uso.

Las funciones principales de un sistema operativo son:

  • Relativo a la FACILIDAD DE USO
    • Ofrecer el interfaz de usuario, es decir, interpretación de comandos: interpreta los comandos que permiten al usuario comunicarse con el ordenador
    • Compartir hardware entre usuarios: un usuario se puede conectar a otra máquina sin tener que estar cerca de ella.
    • Realizar la planificación de los recursos: establecer el costo que se le cobra a un usuario por utilizar determinados recursos.
    • Facilitar la E/S
  • Relativo a la SEGURIDAD
    • Llevar a cabo la gestión de errores, ya sean hardware o software. Así, por ejemplo, evita que las acciones de un usuario afecten el trabajo que está realizando otro usuario.
  • Otras FUNCIONES son:
    • Procesar las interrupciones
    • Gestionar los programas
    • Dar el soporte adecuado a las operaciones de E/S
    • Dar el soporte adecuado a la gestión de memoria
    • Dar el soporte adecuado a la gestión de la información

Componentes de un Sistema Operativo

Generalmente diferenciamos dos partes en un sistema operativo:

  • El núcleo (o también llamado kernel)
  • Unos programas que facilitan el acceso al núcleo

El núcleo, que no tiene porqué ser un único programa, englobaría las funciones de:

  • Gestión de procesos: Deciden la gestión del procesador. Quién entra y sale del procesador y en qué momento lo hace (véase tema 16: gestión del procesador).
  • Gestión de operaciones de E/S: Proporcionan la independencia de dispositivos, facilitando el uso al usuario. Gestionan la interrupciones de ES y controlan los errores.
  • Gestión de memoria: Deciden como se administra la memoria, quien la ocupa, la ha de desocupar y donde se ubica cada cosa.
  • Gestión del sistema de ficheros: Controlan cómo se guarda la información, métodos de acceso, gestión de ficheros (como crear ficheros y controlar los existentes) y proporcionan integridad y privacidad de la información contenida.
  • Protección

Fuera del núcleo encontraríamos programas de diferentes tipos:

  • Manipulación de ficheros: Crean, borran, copian, renombran, imprimen, vuelcan, listan y facilitan la gestión de los ficheros y directorios.
  • Información de estado: Dan información de la memoria, del disco, fecha, uso, estadísticas, etc.
  • Editores: Editores de texto de programas
  • Soporte a los lenguajes de programación: Compiladores, ensambladores e intérpretes de los diferentes lenguajes.
  • Cargadores y editores de enlace: Sirven para construir programas ejecutables, cargadores y ensambladores.
  • Programas de utilidad: Bases de datos, comunicaciones, etc.
  • Intérprete de comandos: Es el más importante pues es el que crea el entorno de usuario. Recibe los comandos del usuario y da control a los distintos programas del sistema o a funciones del núcleo. El interfaz que se utilice con el usuario será importante y para poder obedecer deberá basarse en un lenguaje, ya sea textual o gráfico.

Estructura de los Sistemas Operativos

  • Estructura monolítica
  • Estructura jerárquica o en capas

    La estructura de niveles suele ser:

    1. Planificación del procesador
    2. Gestión de memoria
    3. Gestión de E/S
    4. Subsistema de ficheros
    5. Programas de usuario
  • Estructura de máquina virtual
  • Estructura cliente-servidor (Kernel approach)
  • Estructura orientada a objetos

Clasificación de los Sistemas Operativos

Según el Uso de los Recursos

  • Sistemas monoprogramados: Son sistemas que solo admiten la ejecución simultánea de un programa. En memoria tendremos parte para el sistema, parte para el programa de usuario y el resto sobrante.
  • Sistemas multiprogramados: Pueden admitir uno o varios programas simultáneamente. Son todos los medios y grandes ordenadores. Incluso los PC´s con según que sistema (Unix, OS/2, Windows 95). En parte de la memoria habrá el sistema (incluyendo al planificador y los drivers de E/S), y el resto estará repartido entre los procesos.
  • Sistemas multiprocesamiento: En los dos anteriores no hemos hablado de cuantos procesadores tenía la máquina. Si tiene más de uno da lugar a un sistema multiprocesador. Esto no quiere decir que sea multiusuario, pues un proceso podrá partirse en partes independientes para poder ejecutarlas de forma paralela.

Según la Interactividad

Es decir, dependiendo del tipo de trabajo a ejecutar

  • Procesamiento por lotes (batch): Para ejecutar trabajos poco conversacionales con el usuario. Son programas limitados por proceso. Los trabajos deben cumplir:
    • No intervención del usuario durante la ejecución
    • Trabajos largo
    • Que no existan restricciones de tiempo en la ejecución.
  • Tiempo compartido (Time sharing)
  • De Tiempo real (Real time)
    • Fuertes restricciones de tiempo de respuesta.
    • Información permanentemente actualizada.
    • Infrautilización, pues de lo contrario no podríamos obtener rapidez.
    • Requiere programas pequeños y eficientes.

Según el Número de Usuarios

  • Monousuario: En un momento dado sólo permiten la conexión de un usuario. No tienen que gestionar usuarios ni controlar su acceso. Pueden ser monoprogramados o multiprogramados, permitiendo al usuario la ejecución simultánea de varios procesos.
  • Multiusuario: Serán sistemas multiprogramados, permitiendo el acceso de varios usuarios a la vez. También acostumbran a permitir varios procesos para cada usuario. Suelen ser sistemas de tiempo compartido, aunque podrían también serlo de tiempo real.

Según el Tipo de Aplicaciones

  • De propósito general: Engloban a la mayoría de los sistemas comerciales, pudiendo ejecutar cualquier tipo de aplicación sin requerimientos especiales. Los sistemas con gran número de usuarios y diversidad de aplicaciones a ejecutar son forzosamente así, admitiendo tanto monousuario como multiusuario, procesos interactivos como batch
  • De propósito específico: Específicamente diseñados para un tipo de aplicación. No suelen ser comerciales ni de gran difusión.

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.