Componentes y Operaciones de un Sistema Informático: Desde el Procesador hasta la Gestión de Memoria

Componentes Básicos de un Computador

Un computador se compone de cuatro elementos fundamentales:

  1. Procesador: Es el cerebro del computador, controla su funcionamiento y ejecuta las funciones de procesamiento de datos. Cuando hay un solo procesador, se le denomina Unidad Central de Proceso (Central Processing Unit, CPU).
  2. Memoria Principal: Almacena datos y programas. Esta memoria suele ser volátil, es decir, su contenido se pierde al apagar el computador. En contraste, el contenido de la memoria del disco se mantiene incluso cuando se apaga el computador. A la memoria principal se le denomina también memoria real o memoria primaria.
  3. Módulos de E/S (Entrada/Salida): Transfieren datos entre el computador y su entorno externo. El entorno externo está formado por diversos dispositivos, incluyendo dispositivos de memoria secundaria (por ejemplo, discos), equipos de comunicaciones y terminales.
  4. Bus del Sistema: Proporciona comunicación entre los procesadores, la memoria principal y los módulos de E/S.

Funciones del Procesador

El intercambio de datos con la memoria se realiza normalmente utilizando dos registros internos del procesador:

  • Registro de Dirección de Memoria (RDM): Especifica la dirección de memoria para la siguiente lectura o escritura.
  • Registro de Datos de Memoria (RDAM): Contiene los datos que se van a escribir en la memoria o recibe los datos leídos de la memoria.

De manera similar, un registro de dirección de E/S (RDE/S) especifica un determinado dispositivo de E/S, y un registro de datos de E/S (RDAE/S) permite el intercambio de datos entre un módulo de E/S y el procesador.

Un módulo de memoria consta de un conjunto de posiciones definidas mediante direcciones numeradas secuencialmente. Cada posición contiene un patrón de bits que se puede interpretar como una instrucción o como datos. Un módulo de E/S transfiere datos desde los dispositivos externos hacia el procesador y la memoria, y viceversa. Contiene buffers (es decir, zonas de almacenamiento internas) que mantienen temporalmente los datos hasta que se puedan enviar.

Registros del Procesador

Un procesador incluye un conjunto de registros que proporcionan un tipo de memoria más rápida y de menor capacidad que la memoria principal. Los registros del procesador cumplen dos funciones:

  1. Registros visibles para el usuario: Permiten al programador en lenguaje máquina o en ensamblador minimizar las referencias a memoria principal optimizando el uso de registros. Para lenguajes de alto nivel, un compilador que realice optimización intentará tomar decisiones inteligentes sobre qué variables asignar a registros y cuáles a posiciones de memoria principal. Algunos lenguajes de alto nivel, como C, permiten al programador sugerir al compilador qué variables deberían almacenarse en registros.
  2. Registros de control y estado: Son usados por el procesador para controlar su operación y por rutinas privilegiadas del sistema operativo para controlar la ejecución de programas.

Registros Visibles para el Usuario

Se puede acceder a estos registros por medio del lenguaje de máquina ejecutado por el procesador. Generalmente están disponibles para todos los programas, incluyendo tanto programas de aplicación como programas de sistema.

Los tipos de registros que están normalmente disponibles son registros de datos, de dirección y de códigos de condición. Los registros de datos se pueden utilizar para diversas funciones.

Registros de dirección: Contienen direcciones de memoria principal de datos e instrucciones, o una parte de la dirección que se utiliza en el cálculo de la dirección efectiva o completa. Ejemplos:

  • Registro índice: El direccionamiento indexado es un modo común de direccionamiento que implica sumar un índice a un valor base para obtener una dirección efectiva.

Consta de una referencia a un determinado segmento y un desplazamiento dentro del segmento; este modo de direccionamiento es importante en el estudio de la gestión de memoria que se realizará en el capítulo 7. En este modo de direccionamiento, se utiliza un registro para mantener la dirección base (posición de inicio) del segmento. Puede haber múltiples registros; por ejemplo, uno para el sistema operativo (es decir, cuando el código del sistema operativo está ejecutando en el procesador) y otro para la aplicación que se está ejecutando actualmente.

Campo de dirección, tales como los que permiten apilar (push) y extraer (pop).

Registros de Control y Estado

Se emplean varios registros del procesador para controlar el funcionamiento del mismo. En la mayoría de las máquinas, muchos de ellos no son visibles para el usuario. A algunos de ellos se puede acceder mediante instrucciones de máquina ejecutadas en lo que se denomina modo de control o de sistema operativo.

Ejecución de Instrucciones

El procesamiento de una instrucción consta de dos pasos: el procesador lee (busca) instrucciones de la memoria, una a la vez, y ejecuta cada una de ellas. La ejecución del programa consiste en repetir el proceso de búsqueda y ejecución de instrucciones. La ejecución de la instrucción puede involucrar varias operaciones dependiendo de la naturaleza de la misma.

Solo si se apaga la máquina, se produce algún tipo de error irrecuperable o se ejecuta una instrucción del programa que detiene al procesador, se interrumpe el ciclo.

Búsqueda y Ejecución de una Instrucción

Al principio de cada ciclo de instrucción, el procesador lee una instrucción de la memoria. En un procesador típico, el contador del programa (PC) almacena la dirección de la siguiente instrucción que se va a leer.

A menos que se le indique otra cosa, el procesador siempre incrementa el PC después de cada instrucción ejecutada, de manera que leerá la siguiente instrucción en orden secuencial (es decir, la instrucción situada en la siguiente dirección de memoria más alta).

Estas acciones se dividen en cuatro categorías:

  • Procesador-Memoria: Se pueden transferir datos desde el procesador a la memoria o viceversa.
  • Procesador-E/S: Se pueden enviar datos a un dispositivo periférico o recibirlos desde el mismo, transfiriéndolos entre el procesador y un módulo de E/S.
  • Procesamiento de Datos: El procesador puede realizar algunas operaciones aritméticas o lógicas sobre los datos.
  • Control: Una instrucción puede especificar que se va a alterar la secuencia de ejecución. Por ejemplo, el procesador puede leer una instrucción de la posición 149, que especifica que la siguiente instrucción estará en la posición 182. El procesador almacenará en el contador del programa el valor 182. Como consecuencia, en la siguiente fase de búsqueda, se leerá la instrucción de la posición 182 en vez de la 150.

Sistema de E/S

Se pueden intercambiar datos directamente entre un módulo de E/S (por ejemplo, un controlador de disco) y el procesador. Al igual que el procesador puede iniciar una lectura o una escritura en memoria, especificando la dirección de una posición de memoria, también puede leer o escribir datos en un módulo de E/S.

Interrupciones

Prácticamente todos los computadores proporcionan un mecanismo por el cual otros módulos (memoria y E/S) pueden interrumpir el secuenciamiento normal del procesador.

Básicamente, las interrupciones constituyen una manera de mejorar la utilización del procesador.

  • De programa: Generada por alguna condición que se produce como resultado de la ejecución de una instrucción, tales como un desbordamiento aritmético, una división por cero, un intento de ejecutar una instrucción de máquina ilegal, y las referencias fuera del espacio de la memoria permitida a un usuario.
  • Por temporizador: Generada por un temporizador del procesador. Permite al sistema operativo realizar ciertas funciones de forma regular.
  • De E/S: Generada por un controlador de E/S para señalar la conclusión normal de una operación o para indicar diversas condiciones de error.
  • Por fallo del hardware: Generada por un fallo, como un fallo en el suministro de energía o un error de paridad en la memoria.

Interrupciones y el Ciclo de Instrucción

Gracias a las interrupciones, el procesador puede dedicarse a ejecutar otras instrucciones mientras una operación de E/S se está llevando a cabo.

La Jerarquía de la Memoria

Las restricciones de diseño en la memoria de un computador se pueden resumir en tres preguntas: ¿Cuál es su capacidad? ¿Cuál es su velocidad? ¿Cuál es su coste?

Las tres características fundamentales de la memoria son: coste, capacidad y tiempo de acceso.

En todo este espectro de tecnologías, se cumplen las siguientes relaciones:

  1. Cuanto menor es el tiempo de acceso, mayor es el coste por bit.
  2. Cuanto mayor es la capacidad, menor es el coste por bit.
  3. Cuanto mayor es la capacidad, menor es la velocidad de acceso.

Jerarquía de Memoria

  • a) Disminución del coste por bit.
  • b) Aumento de la capacidad.
  • c) Aumento del tiempo de acceso.
  • d) Disminución de la frecuencia de acceso a la memoria por parte del procesador.

Funciones y Objetivos de los Sistemas Operativos

Un sistema operativo es un programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre las aplicaciones del usuario y el hardware de un computador. Puede considerarse que un sistema operativo tiene tres objetivos:

  • Comodidad: Un sistema operativo hace que un computador sea más cómodo de utilizar.
  • Eficiencia: Un sistema operativo permite que los recursos de un sistema informático se aprovechen de la manera más eficiente.
  • Capacidad de evolución: Un sistema operativo debe construirse de modo que permita el desarrollo efectivo, la verificación y la introducción de nuevas funciones en el sistema y, a la vez, no interferir en los servicios que brinda.

Un sistema operativo ofrece servicios en las siguientes áreas:

  1. Creación de programas: El sistema operativo ofrece múltiples funcionalidades y servicios, tales como los editores y los depuradores (debuggers), para ayudar al programador en la creación de programas. Normalmente, estos servicios están en forma de programas de utilidad, que realmente no forman parte del sistema operativo, pero que son accesibles a través del mismo.
  2. Ejecución de programas: Para ejecutar un programa, se necesita llevar a cabo un cierto número de tareas. Las instrucciones y los datos se deben cargar en la memoria principal, los archivos y los dispositivos de E/S tienen que ser inicializados y se deben preparar otros recursos. El sistema operativo administra todas estas tareas para el usuario.

Figura 2.1. Niveles y vistas de un sistema informático. Programas de aplicación – Usuario final, Utilidades y sistema operativo – Programador, Hardware del computador – Diseñador del sistema operativo.

  1. Acceso a los dispositivos de E/S: Cada dispositivo de E/S requiere un conjunto propio y peculiar de instrucciones o de señales de control para su funcionamiento. El sistema operativo proporciona una interfaz uniforme que oculta estos detalles, de modo que el programador pueda acceder a los dispositivos utilizando lecturas y escrituras simples.
  2. Acceso controlado a los archivos: En el caso de los archivos, el control debe incluir una comprensión, no solo de la naturaleza del dispositivo de E/S (controlador de disco, controlador de cinta) sino de la estructura de los datos en los archivos y del medio de almacenamiento. Una vez más, es el sistema operativo el que se encarga de los detalles. Es más, en el caso de sistemas con varios usuarios trabajando simultáneamente, es el sistema operativo el que proporciona los mecanismos de protección para controlar el acceso a los archivos.
  3. Acceso al sistema: En el caso de un sistema compartido o público, el sistema operativo controla el acceso al sistema como un todo y a los recursos específicos del sistema. Las funciones de acceso pueden proporcionar protección a los recursos y a los datos ante usuarios no autorizados y debe resolver los conflictos de la propiedad de los recursos.
  4. Detección y respuesta a errores: Cuando un sistema informático está en funcionamiento pueden producirse una serie de errores. Entre estos se incluyen los errores internos y externos del hardware, como los errores de memoria, fallos o mal funcionamiento de dispositivos y distintos tipos de errores de software, como el desbordamiento aritmético, el intento de acceder a una posición prohibida de memoria y la incapacidad del sistema operativo para satisfacer la solicitud de una aplicación. En cada caso, el sistema operativo debe dar una respuesta que elimine la condición de error con el menor impacto posible sobre las aplicaciones que están en ejecución. La respuesta puede ser desde terminar el programa que produjo el error, hasta reintentar la operación o, simplemente, informar del error a la aplicación.
  5. Contabilidad: Un buen sistema operativo debe recoger estadísticas de utilización de los diversos recursos y supervisar parámetros de rendimiento tales como el tiempo de respuesta. Para cualquier sistema, esta información es muy útil para anticiparse a la necesidad de mejoras futuras y para ajustar el sistema y así mejorar su rendimiento. En un sistema multiusuario, la información puede ser utilizada para la carga en cuotas.

El Sistema Operativo como Administrador de Recursos

Un computador es un conjunto de recursos para el movimiento, almacenamiento y proceso de datos y para el control de esas funciones. El sistema operativo es el responsable de la gestión de estos recursos. Dos aspectos:

  1. El sistema operativo funciona de la misma manera que el software normal de un computador, es decir, es un programa o una serie de programas ejecutados por el procesador.
  2. El sistema operativo abandona con frecuencia el control y debe depender del procesador para recuperarlo.

El sistema operativo es, de hecho, nada más que un conjunto de programas de computador. Los recursos principales que son administrados por el sistema operativo. Una parte del sistema operativo está en la memoria principal. En esta parte está el núcleo (kernel), que incluye las funciones utilizadas con más frecuencia en el sistema operativo y, en un momento dado, puede incluir otras partes del sistema operativo que estén en uso. El resto de la memoria principal contiene datos y otros programas de usuario.

Facilidad de Evolución de un Sistema Operativo

Un sistema operativo importante evolucionará en el tiempo por una serie de razones:

  1. Actualizaciones del hardware y nuevos tipos de hardware: Por ejemplo, las primeras versiones de los sistemas operativos UNIX y de IBM OS/2 no empleaban mecanismos de paginación, porque funcionaban en máquinas sin hardware de paginación. Las versiones más recientes se han modificado para aprovechar las capacidades de paginación. Además, el empleo de terminales gráficos y terminales de pantalla completa, en lugar de los terminales de líneas, pueden influir en el diseño de los sistemas operativos. Por ejemplo, un terminal de estos puede permitirle al usuario ver diferentes aplicaciones al mismo tiempo, a través de ventanas en la pantalla. Esto necesita un soporte más sofisticado en el sistema operativo.
  2. Nuevos servicios: Como respuesta a las demandas del usuario o a las necesidades de los administradores del sistema, el sistema operativo ampliará su oferta de servicios. Por ejemplo, si se determina que es difícil mantener un buen rendimiento para los usuarios con las herramientas existentes, se deben añadir nuevas medidas y herramientas de control al sistema operativo. Otro ejemplo es el de las nuevas aplicaciones que exigen el uso de ventanas en pantalla. Esta característica requiere actualizaciones mayores en el sistema operativo.
  3. Correcciones: Desafortunadamente, el sistema operativo tiene fallos que se descubrirán con el curso del tiempo y que es necesario corregir. Por supuesto, estas correcciones pueden introducir nuevos fallos a su vez y así sucesivamente.

Evolución de los Sistemas Operativos

Para intentar comprender los requisitos básicos de un sistema operativo y el significado de las características principales de un sistema operativo contemporáneo, resulta útil considerar cómo han evolucionado los sistemas operativos a lo largo de los años.

  1. Proceso en serie: En los primeros computadores, desde finales de los 40 hasta mediados de los 50, el programador interactuaba directamente con el hardware del computador; no había sistema operativo. La operación con estas máquinas era desde una consola consistente en unos indicadores luminosos, unos conmutadores, algún tipo de dispositivo de entrada y una impresora. Estos primeros sistemas presentaban dos problemas principales:
    • Planificación: La mayoría de las instalaciones empleaban un formulario de reserva de tiempo de máquina. Normalmente, un usuario podía reservar bloques de tiempo en múltiplos de media hora o algo por el estilo. Un usuario podía reservar una hora y terminar a los 45 minutos; esto daba como resultado un desperdicio del tiempo del computador. Por el contrario, el usuario podía tener dificultades, no terminar en el tiempo asignado y verse forzado a parar sin haber solucionado el problema.
    • Tiempo de preparación: Un programa sencillo, llamado trabajo, cargaba un compilador y un programa en lenguaje de alto nivel (programa fuente) en la memoria, salvaba el programa compilado (programa objeto) y luego cargaba y montaba el programa objeto junto con las funciones comunes. Cada uno de estos pasos podía implicar montar y desmontar cintas o preparar paquetes de tarjetas. Si se producía un error, el infortunado usuario tenía que volver al inicio de este proceso de preparación. De este modo, se perdía un tiempo considerable en preparar un programa para su ejecución.
  2. Sistemas sencillos de proceso por lotes: La idea central que está detrás del sencillo esquema de proceso por lotes, es el uso de un elemento de software conocido como el monitor. Con el uso de esta clase de sistema operativo, los usuarios ya no tenían acceso directo a la máquina. En su lugar, el usuario debía entregar los trabajos en tarjetas o en cinta al operador del computador, quien agrupaba secuencialmente los trabajos por lotes y ubicaba los lotes enteros en un dispositivo de entrada para su empleo por parte del monitor. Para entender cómo funciona este esquema, se va a ver desde dos puntos de vista: el del monitor y el del procesador.
    • Punto de vista del monitor: Es quien controla la secuencia de sucesos. Para que esto sea posible, gran parte del monitor debe estar siempre en la memoria principal y disponible para su ejecución (figura 2.3). Esta parte del monitor se conoce como el monitor residente.
    • Punto de vista del procesador: En un cierto momento, el procesador estará ejecutando instrucciones de la zona de memoria principal que contiene al monitor. Estas instrucciones hacen que el trabajo siguiente sea leído en otra zona de la memoria principal.
  3. Sistemas por lotes con multiprogramación: Aun con el secuenciamiento automático de trabajos ofrecido por un sistema operativo sencillo por lotes, el procesador está desocupado con frecuencia. El problema es que los dispositivos de E/S son lentos comparados con el procesador.
  4. Sistemas de tiempo compartido: Al igual que la multiprogramación permite al procesador gestionar varias tareas por lotes al mismo tiempo, puede también utilizarse para gestionar varias tareas interactivas. En este último caso, la técnica se conoce como tiempo compartido, porque refleja el hecho de que el tiempo del procesador se comparte entre los diversos usuarios. En un sistema de tiempo compartido múltiples usuarios acceden simultáneamente al sistema por medio de terminales, donde el sistema operativo intercala la ejecución de cada programa de usuario en ráfagas cortas o cuantos (quantum) de computación.

Logros Principales

Cinco avances teóricos significativos en el desarrollo de los sistemas operativos: los procesos, la gestión de memoria, la seguridad y la protección de la información, la planificación y la gestión de recursos, la estructura del sistema.

Gestión de Memoria

Para satisfacer estos requisitos, el sistema operativo tiene cinco responsabilidades principales en la gestión del almacenamiento:

  • Aislamiento del proceso: El sistema operativo debe procurar que cada proceso independiente no interfiera en los datos y la memoria de ningún otro.
  • Asignación y gestión automáticas: A los programas se les debe asignar memoria dinámicamente en la jerarquía de memoria, según la vayan necesitando. Este proceso debe ser transparente para el programador. De este modo, el programador se libera de todo lo concerniente a las limitaciones de memoria y el sistema operativo puede lograr eficiencia asignando memoria a los trabajos según la vayan necesitando.
  • Soporte para la programación modular: Los programadores deben ser capaces de definir módulos de programa y de crear, destruir y alterar el tamaño de los módulos dinámicamente.
  • Protección y control de acceso: Compartir la memoria en algún nivel de la jerarquía de la memoria origina la posibilidad de que un programa pueda direccionar el espacio de memoria de otro programa. Algunas veces, esto es conveniente, sobre todo cuando se necesita compartimiento en una aplicación en particular. En otros casos, esto amenaza la integridad de los programas y del mismo sistema operativo. El sistema operativo debe permitir que las secciones de memoria estén accesibles de diferentes maneras para los diversos usuarios.
  • Almacenamiento a largo plazo: Muchos programas de aplicaciones requieren medios para el almacenamiento de la información durante largos periodos de tiempo, después de apagar el computador.

La memoria virtual es un servicio que permite a los programas direccionar la memoria desde un punto de vista lógico, sin depender del tamaño de la memoria principal física disponible. La memoria virtual fue concebida para cumplir las necesidades de múltiples trabajos de usuario residentes concurrentemente en la memoria principal y así no existiera un espacio muerto entre la ejecución de los procesos sucesivos, mientras un proceso se envía al almacenamiento secundario y el proceso que le sucede es traído de este.

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.