Check the new version here

Popular channels

Sistemas Informáticos: Introducción





Para estudiantes de Ingeniería en Sistemas, un resumen sobre el funcionamiento de las computadoras.

1. Elementos Básicos
2. Registros del procesador
3. BIOS
4. Sistema Operativo
5. Ciclo de Instrucción
6. Interrupciones: cómo se procesan, tipos, manejador de interrupciones, interrupciones múltiples.
7. Memoria caché
8. Operaciones de Entrada/Salida (E/S) y Direct Memory Access (DMA)

En el caso de que encuentren algún error en el texto o alguna parte que se pueda mejorar, pueden avisarme para revisarlo.



1. Elementos básicos

Procesador: controla el funcionamiento de la computadora y se encarga del procesamiento de datos. Cuando tenemos sólo un procesador, por lo general nos referimos a él como Unidad Central de Procesamiento (en inglés: Central Processing Unit – CPU.

Memoria Principal: Almacena datos y programas. Es volátil: cuando la computadora se apaga, la información en la memoria se pierde. Por el contrario, la información almacenada en el disco rígido (memoria secundaria) se mantiene.

Módulos de Entrada/Salida (E/S): Permiten comunicar la computadora con dispositivos externos (disco, teclado, mouse, monitor, etc).

Bus de Sistema: El Bus es la vía de comunicación entre los otros tres elementos mencionados: procesador, memoria principal y los módulos de E/S.




2. Registros del Procesador

Los registros son elementos de almacenamiento de datos contenidos en el procesador y que tienen la ventaja de la rapidez de acceso (más rápido que ir a buscar la información a la memoria principal) y la finalidad de contener datos necesarios para la ejecución de los programas. Los que aparecen en el gráfico son los siguientes, aunque existen muchísimos más.

- PC (Program Counter) / IP (Instruction Pointer): posición donde está el procesador en su secuencia de instrucciones.
- IR (Instruction Register): registro que almacena la instrucción que se está decodificando o ejecutando.
- MAR (Memory Address Register): especifica la dirección en memoria para la próxima lectura o escritura.
- MBR (Memory Buffer Register): contiene la información que se va a escribir o leer de la memoria.
- I/OAR (Input/Output Address Register): especifica un dispositivo E/S en particular.
- I/OBR (Input/Ouput Buffer Register): se utiliza para el intercambio de datos entre un módulo E/S y el procesador.

3. BIOS

El BIOS (Basic Input/Output System) es un programa contenido en un chip de memoria de sólo lectura, el cuál se encarga de controlar la motherboard, verificar que tengamos el hardware necesario, y cargar un bootloader o un sistema operativo. A la vez, provee una capa de abstracción para interactuar con el hardware: los programas o los sistemas operativos pueden a comunicarse con los distintos dispositivos de E/S a través del BIOS. De todas maneras, los sistemas operativos modernos accesan al hardware directamente sin usar al BIOS como intermediario.

4. El Sistema Operativo

El sistema operativo controla y coordina el uso del hardware entre los diversos programas de aplicación por parte de los distintos usuarios, por ello se suele decir que es la interfaz de comunicación entre el hardware y el usuario.
Existen distintos tipos de sistemas operativos en base al uso que se le quieren dar. Por ejemplo, tenemos sistemas operativos para mainframes, para computadoras personales (PCs), sistemas en tiempo real, sistemas distribuidos, entre otros.

5. El ciclo de instrucción

El procesador ejecuta instrucciones. Cuando ejecutamos un programa, el procesador ejecuta una serie de instrucciones que constituyen ese programa, las cuales se encuentran en la memoria principal.

Básicamente, un ciclo de instrucción consiste en tres pasos: el procesador lee (fetch) la instrucción de la memoria, luego la decodifica para así interpretarla (decode) y por último la ejecuta (execute). El ciclo se irá repitiendo hasta que no tengamos más instrucciones para leer.



6. Interrupciones

Una interrupción se produce cuando el procesador corta lo que está ejecutando y pasa a ejecutar otra código específico. Cuando el procesador procede a atender la interrupción, se llama un programa gestor de interrupciones, también conocido como rutina de servicio de interrupción (ISR). Estas rutinas para tratar las interrupciones suelen pertenecer al sistema operativo o al BIOS. Una vez finalizada dicha rutina, se reanuda la ejecución del programa.

La idea de las interrupciones es mejorar el uso del procesador. La mayoría de los dispositivos de E/S son mucho más lentos que el procesador. Por ejemplo, el procesador, en lugar de quedarse esperando que la impresora termine lo que está haciendo, puede dedicarse a ejecutar otras instrucciones. Una vez que la impresora termina y esté preparada para recibir más datos del procesador, esta le enviará una señal de interrupción al procesador a través del controlador de interrupciones (PIC).

Al final del ciclo de instrucción del que hablamos más arriba, vamos a tener un ciclo de interrupción. Luego de la ejecución, el procesador chequeará si hay alguna interrupción que necesite ser atendida. En caso de que no haya, realizará el fetch de la siguiente instrucción del programa que está ejecutando. Si hay una interrupción pendiente, el procesador suspende la ejecución del programa, guarda su contexto y llama a la rutina de manejo de interrupciones (ISR), la cual por lo general es parte del sistema operativo.



6.1 Procesamiento de Interrupciones
El procesamiento de una interrupción podría resumirse de la siguiente manera:
1. Terminar la ejecución de la instrucción en curso.
2. Guardar los valores del PC y el IP en el stack de manera que el procesador, al terminar de atender la interrupción, pueda seguir ejecutando el programa a partir de la última instrucción.
3. El procesador salta a la dirección donde está almacenada la rutina de servicio de interrupción (Interrupt Service Routine, o abreviado ISR) y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó la interrupción.
4. Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila en el paso 2 y retorna al programa que se estaba ejecutando anteriormente.

Desde un punto de Hardware y Software:
- Se genera una interrupción.
- El procesador termina de ejecutar la instrucción en curso.
- El procesador guarda el PC y los flags de estado.
- El procesador carga el nuevo PC.
- El OS guarda la información de estado del proceso (Context Switch).
- El OS determina la causa de la interrupción y la procesa.
- El OS restaura la información de estado del proceso (Context Switch).
- El procesador carga el PC y los flags de estado de la ejecución anterior a la interrupción.

6.2 Tipos de Interrupciones
Externas: Se producen fuera del entorno del procesador. Son las producidas por los dispositivos de E/S, por lo general para avisar que ya terminaron alguna tarea o para reportar errores. Estas interrupciones pueden ser ignoradas (ya sea porque tienen baja prioridad) para ser atendidas en otro momento.

Internas: se dan dentro del ciclo de instrucción del procesador y son llamadas también excepciones. Se disparan cuando se intenta realizar operaciones no permitidas, tales como la división entre 0, el desbordamiento, el acceso a una posición de memoria no permitida, etc. Estas interrupciones no pueden ser ignoradas.

Interrupciones de SW: son aquellas generadas por programas. Son la manera que los programas de usuario tienen de llamar a una función/servicio del sistema operativo. Cuando un programa llama a un servicio del sistema operativo, se dice que hace una llamada de sistema (system call).

6.3 Controlador de Interrupciones (PIC)
El controlador de interrupciones es un componente de HW dedicado a gestionar las interrupciones. Puede estar integrado al procesador o ser un circuito separado conectado al mismo. Las líneas que conectan el controlador de interrupciones con las distintas controladores de los demás dispositivos de HW se llaman IRQ (Interrupt ReQuest).

El controlador de interrupciones debe ser capaz de habilitar o inhibir las líneas de interrupción y establecer prioridades entre las mismas

Un procesador principal que no tenga un controlador de interrupciones integrado, suele tener una única línea de interrupción llamada habitualmente INT. Esta línea es activada por el controlador de interrupciones cuando tiene una interrupción que servir. Al activarse esta línea, el procesador consulta los registros del controlador de interrupciones para averiguar cual IRQ hay que atender. A partir del número del IRQ busca en la tabla de vectores de interrupción la dirección de la rutina a la que debe llamar para atender la petición del dispositivo asociado a dicha IRQ.


6.4 Vector de Interrupciones
Se utiliza una tabla de vectores de interrupciones para determinar que ISR ejecutar, en base al tipo de interrupción, que estará representado por un código.


Cada interrupción puede tener un punto de entrada diferente a la ISR o distintos tipos de interrupciones pueden tener un punto de entrada en común.

En los procesadores Intel Pentium, cada tipo de interrupción tiene un número asociado, llamado número IRQ (Interrupt Request Queue).

Cuando un dispositivo E/S manda una interrupción, el IRQ se utiliza como índice en la tabla de vectores de interrupciones.
Cuando se manda una interrupción con la instrucción INT n, el operando n se utilizará como índice de la tabla.

6.5 Múltiples Interrupciones – Enmascarando Interrupciones
Puede ocurrir que se produzcan una o varias interrupciones mientras otra se esté procesando.
Hay dos enfoques para tratar esto:

- Uno es desactivar las interrupciones mientras una interrupción está siendo procesada. Esto significa que el procesador ignorará las señales de interrupción que reciba. En este caso, el procesador las atenderá una vez vuelva a activar las interrupciones. El SO puede deshabilitar las interrupciones para hacer cierto tipo de operaciones (ej: movimientos en memoria).

- Otra manera sería manejar las interrupciones en base a sus prioridades. Estas serán determinadas por el sistema operativo. En ese caso, una interrupción podría dejar de ser atendida para dar lugar a otra con más prioridad.

Las interrupciones no enmascarables no pueden ser ignoradas por el procesador. La mayoría de las interrupciones internas no pueden ser desactivadas. Por el contrario, las interrupciones externas pueden ser ignoradas por el procesador.

7. Memoria Caché

La caché es una memoria rápida cuya función principal acelerar la transmisión de datos e instrucciones entre el procesador y cualquier componente de almacenamiento.

La necesidad del uso de la memoria caché parte de que el procesador es muchísimo más rápido que todos los demás componentes con los que se relaciona. Por ejemplo, el procesador pierde mucho tiempo esperando a la memoria principal, que trabaja muchísimo más lento.

La CPU realiza una petición de información al controlador de la caché, que se encarga de trasladar la petición a la memoria caché. Si ésta contiene la información solicitada, entrega la información a la CPU. En caso de no encontrarse la información, va a buscar en la memoria principal el dato pedido y otros continuos que previsiblemente va a pedir el procesador.

8.Operaciones de Entrada/Salida (E/S)

Hay tres técnicas para manejar las operaciones de E/S.

E/S programada: el procesador ejecuta un programa que controla la operación de E/S. Cuando el procesador envía una orden al módulo de E/S, debe esperar hasta que la operación de E/S concluya, y así desperdicia tiempo.

E/S mediante interrupciones: en este caso el procesador envía la orden de E/S pero no se queda esperando, sino que continúa ejecutando otras instrucciones y es interrumpido por el módulo de E/S cuando este haya terminado su trabajo.

DMA (Direct Memory Access): a diferencia de los casos anteriores, en donde el procesador es el responsable de extraer los datos de la memoria de una salida y almacenarlos en la memoria de una entrada, aquí el módulo de E/S y la memoria principal intercambian datos sin pasar por el procesador.

Cuando se necesita mover grandes cantidades de datos, la técnica de DMA es más eficiente. Esta funcionalidad puede estar a cargo de un módulo separado conectado al bus de sistema o puede ser incorporada en un módulo de E/S. Cualquiera sea el caso, la técnica funciona de la siguiente manera.

Cuando el procesador desea leer o escribir un bloque de datos, le envía la orden al módulo DMA y a la vez le pasa la siguiente información:
- Tipo de operación (lectura ó escritura).
- La dirección del dispositivo de E/S.
- La dirección en memoria a partir de la cuál leer o escribir.
- La cantidad de bloques leer o escribir.

El procesador luego continúa atendiendo sus otros asuntos y se olvida de la operación de E/S, ya que se la delegó al módulo DMA. Este transfiere los bloques de datos desde la memoria sin pasar por el procesador. Cuando termina la transferencia, el módulo DMA interrumpe al procesador. Vemos entonces que el procesador sólo interviene en el proceso al inicio y al final.

El módulo DMA necesita tomar control del bus para transferir la información desde y hacia la memoria. Por ese motivo, habrá momentos en los cuáles el procesador deberá esperar a que el módulo DMA termine de utilizarlo. Al acceso a memoria a través de DMA se le da más prioridad que el acceso del procesador a la memoria, ya que en una transferencia por DMA podrían perderse datos en el caso en que se estén transmitiendo en stream (cadena).

Podríamos decir entonces que el procesador trabaja un poco más lento si necesita usar el bus durante una transferencia de datos DMA. A pesar de eso, para transferencias de muchos datos, DMA terminará resultando mucho más eficiente que la E/S programada y la E/S mediante interrupciones.



Bibliografía:
- STALLINGS, William. Computer Organization and Architecture.
- STALLINGS, William. Operating Systems - Internals and Design Principles. 7ma Edición.
- Wikipedia
+1
0
0
0
0No comments yet
      GIF
      New