EL BIOS COMO PARTE PRINCIPAL DE UNA COMPUTADORA
1
CONCEPTOS
ARQUITECTÓNICOS DEL
COMPUTADOR
En este
capítulo se presentan los conceptos de arquitectura de computadores más
relevantes desde el punto de vista de los sistemas operativos. El capítulo no
pretende convertirse en un tratado de arquitectura, puesto que su objetivo es
el de recordar y destacar los aspectos arquitectónicos que afectan de forma
directa al sistema operativo.
Para alcanzar este objetivo el capítulo se
estructura en los siguientes grandes temas:
Funcionamiento
básico de los computadores y estructura de los mismos.
Modelo de
programación con énfasis en su secuencia de ejecución.
Concepto
de interrupción y sus tipos.
Diversas
acepciones de reloj.
Aspectos
más relevantes de la jerarquía de memoria y, en especial, de la memoria
virtual. Concurrencia de la E/S con el procesador.
Mecanismos
de protección.
Multiprocesador
y multicomputador.
Prestaciones
del sistema. 1.1. ESTRUCTURA Y FUNCIONAMIENTO DEL
COMPUTADOR El computador es una máquina destinada a procesar datos. En una visión esquemática, como la que muestra la figura 1.1, este procesamiento involucra dos flujos de información: el de datos y el de instrucciones. Se parte del flujo de datos que han de ser procesados. Este flujo de datos es tratado mediante un flujo de instrucciones máquina, generado por la ejecución de un programa, produciendo el flujo de datos resultado.
Advertencia 1.1. Algunos procesadores tienen una instrucción de
parada (p. ej.: HALT) que hace que la unidad de control se detenga hasta
que llegue una interrupción. Sin embargo, esta instrucción es muy poco utilizada
(salvo en equipos portátiles en los que interesa ahorrar batería), por lo que,
a efectos prácticos, podemos considerar que la unidad de control no para nunca
de realizar la secuencia de lectura de instrucción, incremento de PC y
ejecución de la instrucción.
Para llevar a cabo la función de procesamiento, un computador con arquitectura von Neumann está compuesto por los cuatro componentes básicos representados en la figura 1.2.
Figura 1.2 Componentes básicos del computador con arquitectura von Neumann: Memoria principal, unidad aritmética, unidad de control y unidades de entrada/salida.
Se denomina procesador o unidad central de proceso (UCP) al conjunto de la unidad aritmética y de la unidad de control. Actualmente, en un único circuito integrado se puede incluir varios procesadores (llamados núcleos o cores), además de la unidad de gestión de memoria que se describe en la sección “4.2.7 Concepto de memoria virtual y memoria real”.
Desde el punto de vista de los sistemas operativos, nos interesa más profundizar en el funcionamiento interno del computador que en los componentes físicos que lo constituyen.
1.2. MODELO DE PROGRAMACIÓN DEL
COMPUTADOR
El modelo de programación a bajo nivel de un computador, que
también recibe el nombre de arquitectura ISA (Instruction Set Architecture) del computador, define los recursos y
características que éste ofrece al programador de bajo nivel. Este modelo se
caracteriza por los siguientes aspectos, que se muestran gráficamente en la
figura 1.5.
Elementos
de almacenamiento. Son los elementos de almacenamiento del computador que
son visibles a las instrucciones máquina. En esta categoría están incluidos los
registros generales, el contador de programa, el o los punteros de pila, el
registro de estado, la memoria principal y los registros de los controladores
de E/S. La memoria principal se ubica en el mapa de memoria, mientras que los
registros de E/S se ubican en el mapa de E/S. Véase aclaración 1.2.
Juego de
instrucciones, con sus correspondientes modos de direccionamiento. El juego de instrucciones máquina define
las operaciones que es capaz de hacer el computador. Los modos de
direccionamiento determinan la forma en que se especifica la localización de
los operandos, es decir, los elementos de almacenamiento que intervienen en las
instrucciones máquina.
Secuencia
de funcionamiento. Define el orden en que se van ejecutando las
instrucciones máquina.
Modos de
ejecución. Un aspecto crucial de los computadores, que está presente en
todos ellos menos en los modelos más simples, es que disponen de más de un modo
de ejecución, concepto que se analiza en la sección siguiente y que es
fundamental para el diseño de los sistemas operativos.
1.2.1. Modos de ejecución
La mayoría de los computadores de propósito general actuales
presentan dos o más modos de ejecución. En el modo menos permisivo,
generalmente llamado modo usuario, el computador ejecuta solamente un
subconjunto de las instrucciones máquina, quedando prohibidas las demás, que se
consideran “privilegiadas”. Además, el acceso a determinados registros, o a
partes de esos registros, y a determinadas zonas del mapa de memoria y de E/S
también queda prohibido. En el modo más permisivo, denominado modo núcleo o
modo privilegiado, el computador ejecuta todas sus instrucciones sin
restricción, y permite el acceso a todos los registros y mapas de direcciones.
Se puede decir que el computador presenta
más de un modelo de programación. Uno más restrictivo, que permite realizar un
conjunto limitado de acciones, y otros más permisivos, que permiten realizar un
mayor conjunto de acciones. Uno o varios bits del registro de estado establecen
el modo en el que está ejecutando. Modificando estos bits se cambia de modo de
ejecución.
Como veremos más adelante, los modos de
ejecución se incluyen en los computadores para dar soporte al sistema
operativo. Los programas de usuario, por razones de seguridad, no podrán
realizar determinadas acciones, al ejecutar en modo usuario. Por su lado, el
sistema operativo, que ejecuta en modo privilegiado, podrá ejecutar todo tipo
de acciones. Cuando arranca el computador lo hace en modo privilegiado, puesto
que lo primero que se debe hacer es cargar el sistema operativo, que debe
ejecutar en modo privilegiado. El sistema operativo se encargará de poner en
ejecución en modo usuario a los programas que ejecuten los usuarios.
Generalmente, el modo usuario no permite operaciones de E/S,
ni modificar una gran parte del registro de estado, ni modificar los registros
de soporte de gestión de memoria. La figura 1.6 muestra un ejemplo de dos
modelos de programación de un computador. También es frecuente que el
procesador incluya dos punteros de pila (SP y SP'), el SP para usarlo en modo
usuario y el SP' para usarlo en modo privilegiado.
Figura 1.6 Modelos de programación de usuario y de privilegiado.
1.2.2. Secuencia
de funcionamiento del procesador
La unidad de control del procesador es la que establece el
funcionamiento del mismo. Este funcionamiento está basado en una secuencia
sencilla, que se repite sin cesar y a muy alta velocidad (miles de millones de
veces por segundo). Como muestra la figura 1.7, esta secuencia consiste en tres
pasos: a) lectura de memoria principal de la instrucción máquina apuntada por
el contador de programa, b) incremento del contador de programa —para que
apunte a la siguiente instrucción máquina— y c) ejecución de la instrucción
(que puede incluir la lectura de operandos en memoria o el almacenamiento de
resultados en memoria). Esta secuencia tiene dos propiedades fundamentales: es
lineal, es decir, ejecuta de forma consecutiva las instrucciones que están en
direcciones consecutivas, y forma un bucle infinito. Esto significa que la
unidad de control del procesador está continua e ininterrumpidamente realizando
esta secuencia (advertencia 1.1).
Secuencia lineal: ejecuta
• b) Incremento del PC instrucciones
consecutivas
Bucle infinito
• c) Interpretación y ejecución de la instrucción
Figura 1.7 Secuencia de ejecución del procesador.
Podemos decir, por tanto, que lo único que
sabe hacer el procesador es repetir a gran velocidad esta secuencia. Esto
quiere decir que, para que realice algo útil, se ha de tener, adecuadamente
cargado en memoria, un programa máquina con sus datos, y se ha de conseguir que
el contador de programa apunte a la instrucción máquina inicial de dicho
programa.
El esquema de ejecución lineal es muy
limitado, por lo que se añaden unos mecanismos que permiten alterar esta
ejecución lineal. Todos ellos se basan en algo muy simple: modifican el
contenido del contador de programa, con lo que se consigue que se salte o
bifurque a otra sección del programa o a otro programa (que, lógicamente,
también ha de residir en memoria).
Los tres mecanismos básicos de ruptura de secuencia son los
siguientes:
Las instrucciones máquina de salto o
bifurcación, que permiten que el programa rompa su secuencia lineal de
ejecución, pasando a otra sección de sí mismo.
Las interrupciones externas o internas, que
hacen que la unidad de control modifique el valor del contador de programa,
saltando a otro programa (que deberá ser el sistema operativo).
Una instrucción máquina de llamada al sistema
(p. ej.: TRAP,
INT
o
SC), que produce un efecto similar a la interrupción, haciendo que se
salte a otro programa (que deberá ser el sistema operativo).
Si desde el punto de vista de la
programación el interés se centra en las instrucciones de salto, y, en especial
en las de salto a procedimiento y retorno de procedimiento, desde el punto de
vista de los sistemas operativos son mucho más importantes las interrupciones y
las instrucciones máquina de llamada al sistema. Por tanto, centraremos nuestro
interés en resaltar los aspectos fundamentales de estas dos últimas.
1.2.3. Registros de control y estado
Como se ha indicado anteriormente, la unidad de control tiene
asociada una serie de registros que denominamos de control y estado. Estos
registros dependen de la arquitectura del procesador. Muchos de ellos se
refieren a aspectos que se analizarán a lo largo del texto, por lo que no se
intentará explicar aquí su función. Entre los más importantes se pueden
encontrar los siguientes:
Contador de programa PC. Contiene la dirección
de la siguiente instrucción máquina.
Puntero de pila SP. Contiene la dirección de la
cima de la pila. En algunos procesadores existen dos punteros de pila: uno para
la pila del sistema operativo y otra para la del usuario.
Registro de instrucción RI. Contienen la
instrucción en curso de ejecución. Registro de estado, que contiene,
entre otros, los bits siguientes:
• Bits
de estado aritméticos como: Signo, Acarreo, Cero y Desbordamiento.
• Bits
de modo de ejecución. Indican el modo en el que ejecuta el procesador.
• Bits
de control de interrupciones. Establecen las interrupciones que se pueden
aceptar.
Registros de gestión de memoria, como pueden ser
los registros de protección de memoria o el registro identificador del espacio
de direccionamiento (véase la sección “1.7.2 Mecanismos de protección de me-
moria”).
Algunos de estos registros son visibles en el modo de ejecución de
usuario, como el PC, el SP y parte del estado, pero otros no lo son, como los
de gestión de memoria.
Al contenido de todos los registros del
procesador en un instante determinado le denominamos estado del procesador, término que utilizaremos profusamente a lo
largo del libro. Un subconjunto del estado del procesador lo constituye el estado visible del procesador, formado
por el conjunto de los registros visibles en modo usuario.
Comentarios
Publicar un comentario