puertos de E/S, un tema al que regresaremos en el capítulo 5.
28
INTRODUCCIÓN
CAPÍTULO 1
SECCIÓN 1.3
REVISIÓN DEL HARDWARE DE COMPUTADORA
29
En ciertas computadoras, los registros de dispositivo tienen una correspondencia con el espacio
de direcciones del sistema operativo (las direcciones que puede utilizar), de modo que se puedan leer
y escribir en ellas como si fuera en palabras de memoria ordinarias. En dichas computadoras no se re-
quieren instrucciones de E/S especiales y los programas de usuario pueden aislarse del hardware al no
colocar estas direcciones de memoria dentro de su alcance (por ejemplo, mediante el uso de registros
base y límite). En otras computadoras, los registros de dispositivo se colocan en un espacio de puer-
tos de E/S especial, donde cada registro tiene una dirección de puerto. En estas máquinas hay instruc-
ciones
IN
y
OUT
especiales disponibles en modo kernel que permiten a los drivers leer y escribir en los
registros. El primer esquema elimina la necesidad de instrucciones de E/S especiales, pero utiliza par-
te del espacio de direcciones. El segundo esquema no utiliza espacio de direcciones, pero requiere ins-
trucciones especiales. Ambos sistemas se utilizan ampliamente.
Las operaciones de entrada y salida se pueden realizar de tres maneras distintas. En el método
más simple, un programa de usuario emite una llamada al sistema, que el kernel posteriormente tra-
duce en una llamada al procedimiento para el driver apropiado. Después el driver inicia la E/S y per-
manece en un ciclo estrecho, sondeando en forma continua al dispositivo para ver si ha terminado
(por lo general hay un bit que indica si el dispositivo sigue ocupado). Una vez terminada la E/S, el
driver coloca los datos (si los hay) en donde se necesitan y regresa. Después el sistema operativo de-
vuelve el control al llamador. A este método se le conoce como espera ocupada y tiene la desven-
taja de que mantiene ocupada la CPU sondeando al dispositivo hasta que éste termina.
El segundo método consiste en que el driver inicie el dispositivo y le pida generar una interrup-
ción cuando termine. En este punto el driver regresa. Luego, el sistema operativo bloquea el progra-
ma llamador si es necesario y busca otro trabajo por hacer. Cuando el dispositivo controlador detecta
el final de la transferencia, genera una interrupción para indicar que la operación se ha completado.
Las interrupciones son muy importantes en los sistemas operativos, por lo cual vamos a exami-
nar la idea con más detalle. En la figura 1-11(a) podemos ver un proceso de tres pasos para la E/S. En
el paso 1, el driver indica al dispositivo controlador de disco lo que debe hacer, al escribir datos en sus
registros de dispositivo. Después el dispositivo controlador inicia el dispositivo; cuando ha terminado
de leer o escribir el número de bytes que debe transferir, alerta al chip controlador de interrupciones
mediante el uso de ciertas líneas de bus en el paso 2. Si el controlador de interrupciones está prepara-
do para aceptar la interrupción (lo cual podría no ser cierto si está ocupado con una de mayor priori-
dad), utiliza un pin en el chip de CPU para informarlo, en el paso 3. En el paso 4, el controlador de
interrupciones coloca el número del dispositivo en el bus, para que la CPU pueda leerlo y sepa cuál
dispositivo acaba de terminar (puede haber muchos dispositivos funcionando al mismo tiempo).
Una vez que la CPU ha decidido tomar la interrupción, el contador de programa y el PSW son
típicamente agregados (pushed) en la pila actual y la CPU cambia al modo kernel. El número de
dispositivo se puede utilizar como un índice en parte de la memoria para encontrar la dirección del
manejador (handler) de interrupciones para este dispositivo. Esta parte de la memoria se conoce co-
mo vector de interrupción. Una vez que el manejador de interrupciones (parte del driver para el
dispositivo que está realizando la interrupción) ha iniciado, quita el contador de programa y el PSW
de la pila y los guarda, para después consultar al dispositivo y conocer su estado. Cuando el mane-
jador de interrupciones termina, regresa al programa de usuario que se estaba ejecutando previa-
mente a la primera instrucción que no se había ejecutado todavía. Estos pasos se muestran en la
figura 1-11(b).
El tercer método para realizar operaciones de E/S hace uso de un chip especial llamado DMA
(Direct Memory Access; Acceso directo a memoria) que puede controlar el flujo de bits entre la me-
moria y un dispositivo controlador sin la intervención constante de la CPU. La CPU configura el chip
DMA, le indica cuántos bytes debe transferir, las direcciones de dispositivo y de memoria involucra-
das, la instrucción y deja que haga su trabajo. Cuando el chip DMA termina genera una interrupción,
la cual se maneja de la manera antes descrita. En el capítulo 5 discutiremos con más detalle sobre el
hardware de DMA y de E/S, en general.
A menudo, las interrupciones pueden ocurrir en momentos muy inconvenientes, por ejemplo
mientras otro manejador de interrupciones se está ejecutando. Por esta razón, la CPU tiene una for-
ma para deshabilitar las interrupciones y rehabilitarlas después. Mientras las interrupciones están
deshabilitadas, cualquier dispositivo que termine continúa utilizando sus señales de interrupción, pe-
ro la CPU no se interrumpe sino hasta que se vuelven a habilitar las interrupciones. Si varios dispo-
sitivos terminan mientras las interrupciones están habilitadas, el controlador de interrupciones decide
cuál debe dejar pasar primero, lo cual se basa generalmente en prioridades estáticas asignadas a ca-
da dispositivo. El dispositivo de mayor prioridad gana.
1.3.6 Buses
La organización de la figura 1-6 se utilizó en las minicomputadoras durante años y también en la IBM
PC original. Sin embargo, a medida que los procesadores y las memorias se hicieron más veloces, la
habilidad de un solo bus (y sin duda, del bus de la IBM PC) de manejar todo el tráfico se forzaba has-
ta el punto de quiebre. Algo tenía que ceder. Como resultado se agregaron más buses, tanto para dis-
positivos de E/S más rápidos como para el tráfico entre la CPU y la memoria. Como consecuencia de
esta evolución, un sistema Pentium extenso tiene actualmente una apariencia similar a la figura 1-12.
El sistema tiene ocho buses (caché, local, memoria, PCI, SCSI, USB, IDE e ISA), cada uno con
una velocidad de transferencia y función distintas. El sistema operativo debe estar al tanto de todos
30
INTRODUCCIÓN
CAPÍTULO 1
CPU
Controlador
de interrup-
ciones
Dispositivo
controlador
de disco
Unidad de disco
Instrucción actual
Siguiente instrucción
1. Interrupción
3. Regreso
2. Envía al
manejador
Manejador de interrupciones
(b)
(a)
1
3
4
2
Figura 1-11. (a) Los pasos para iniciar un dispositivo de E/S y obtener una interrup-
ción. (b) El procesamiento de interrupciones involucra tomar la interrupción, ejecutar
el manejador de interrupciones y regresar al programa de usuario.
SECCIÓN 1.3
REVISIÓN DEL HARDWARE DE COMPUTADORA
31
estos buses para su configuración y administración. Los dos buses principales son el bus ISA (In-
dustry Standard Architecture, Arquitectura estándar de la industria) de la IBM PC original y su
sucesor, el bus PCI (Peripheral Component Interconnect, Interconexión de componentes periféri-
cos). El bus ISA (el bus original de la IBM PC/AT) opera a 8.33 MHz y puede transferir 2 bytes
a la vez, para una velocidad máxima de 16.67 MB/seg. Se incluye para mantener compatibilidad
hacia atrás con las tarjetas de E/S antiguas y lentas. Los sistemas modernos lo omiten con frecuen-
cia, pues ya es obsoleto. El bus PCI fue inventado por Intel como sucesor para el bus ISA. Puede
operar a 66 MHz y transferir 8 bytes a la vez, para lograr una velocidad de transferencia de datos
de 528 MB/seg. La mayoría de los dispositivos de E/S de alta velocidad utilizan el bus PCI en la
actualidad. Incluso algunas computadoras que no emplean procesadores Intel usan el bus PCI, de-
bido al extenso número de tarjetas de E/S disponibles para este bus. Las nuevas computadoras es-
tán saliendo al mercado con una versión actualizad del bus PCI, conocida como PCI Express.
En esta configuración, la CPU se comunica con el chip puente PCI a través del bus local y el
chip puente PCI se comunica con la memoria a través de un bus de memoria dedicado, que normal-
mente opera a 100 MHz. Los sistemas Pentium tienen una caché de nivel 1 en el chip y una caché
de nivel 2 mucho mayor fuera del chip, conectada a la CPU mediante el bus de caché.
Además, este sistema contiene tres buses especializados: IDE, USB y SCSI. El bus IDE sirve
para conectar dispositivos periféricos tales como discos y CD-ROM al sistema. El bus IDE es
Puente
ISA
Módem
Ratón
Puente
PCI
CPU
Memoria
principal
SCSI
USB
Bus local
Tarjeta
de
sonido
Impre-
sora
Ranura ISA
disponible
Bus ISA
Disco
IDE
Ranura PCI
disponible
Tecla-
do
Moni-
tor
Adaptador
de gráficos
Caché de
nivel 2
Bus de caché
Bus de memoria
Bus PCI
Bus IDE
Bus SCSI
Bus
USB
Figura 1-12. La estructura de un sistema Pentium extenso.
fruto de la interfaz controladora de disco en la PC/AT y ahora es estándar en casi todos los sistemas
basados en Pentium para el disco duro y a menudo para el CD-ROM.
El USB (Universal Serial Bus; Bus serial universal) se inventó para conectar a la computadora
todos los dispositivos de E/S lentos, como el teclado y el ratón. Utiliza un pequeño conector con cua-
tro cables, dos de los cuales suministran energía eléctrica a los dispositivos USB. El USB es un bus
centralizado en el que un dispositivo raíz sondea los dispositivos de E/S cada 1 milisegundo para ver
si tienen tráfico. USB 1.0 podía manejar una carga agregada de 1.5 MB/seg, pero el más reciente USB
2.0 puede manejar 60 MB/seg. Todos los dispositivos USB comparten un solo dispositivo controlador
USB, lo que hace innecesario instalar un nuevo controlador para cada nuevo dispositivo USB. En con-
secuencia, pueden agregarse dispositivos USB a la computadora sin necesidad de reiniciar.
El bus SCSI (Small Computer System Interface, Interfaz para sistemas de cómputo pequeños)
es un bus de alto rendimiento, diseñado para discos, escáneres y otros dispositivos veloces que ne-
cesitan de un ancho de banda considerable. Puede operar a una velocidad de transferencia de hasta
160 MB/seg. Ha estado presente en los sistemas Macintosh desde que se inventaron y también es
popular en UNIX y en ciertos sistemas basados en Intel.
Hay otro bus (que no se muestra en la figura 1-12) conocido como IEEE 1394. Algunas veces
se le conoce como FireWire, aunque hablando en sentido estricto, FireWire es el nombre que utili-
za Apple para su implementación del 1394. Al igual que el USB, el IEEE 1394 es un bus de bits en
serie, pero está diseñado para transferencias empaquetadas de hasta 100 MB/seg., lo que lo hace
conveniente para conectar a una computadora cámaras de video digitales y dispositivos multimedia
similares. A diferencia del USB, el IEE 1394 no tiene un dispositivo controlador central.
Para trabajar en un entorno tal como el de la figura 1-12, el sistema operativo tiene que saber
qué dispositivos periféricos están conectados a la computadora y cómo configurarlos. Este requeri-
miento condujo a Intel y Microsoft a diseñar un sistema de PC conocido como plug and play ba-
sado en un concepto similar que se implementó por primera vez en la Apple Macintosh. Antes de
plug and play, cada tarjeta de E/S tenía un nivel de petición de interrupción fijo y direcciones fijas
para sus registros de E/S. Por ejemplo, el teclado tenía la interrupción 1 y utilizaba las direcciones
de E/S 0x60 a 0x64, el dispositivo controlador de disco flexible tenía la interrupción 6 y utilizaba
las direcciones de E/S 0x3F0 a 0x3F7, la impresora tenía la interrupción 7 y utilizaba las direccio-
nes de E/S 0x378 a 0x37A, y así sucesivamente.
Hasta aquí todo está bien. El problema llegó cuando el usuario compraba una tarjeta de sonido
y una tarjeta de módem que utilizaban la misma interrupción, por ejemplo, la 4. Instaladas juntas
serían incapaces de funcionar. La solución fue incluir interruptores DIP o puentes (jumpers) en ca-
da tarjeta de E/S e indicar al usuario que por favor los configurara para seleccionar un nivel de in-
terrupción y direcciones de dispositivos de E/S que no estuvieran en conflicto con las demás tarjetas
en el sistema del usuario. Los adolescentes que dedicaron sus vidas a las complejidades del hard-
ware de la PC podían algunas veces hacer esto sin cometer errores. Por desgracia nadie más podía
hacerlo, lo cual provocó un caos.
La función de plug and play es permitir que el sistema recolecte automáticamente la informa-
ción acerca de los dispositivos de E/S, asigne los niveles de interrupción y las direcciones de E/S
de manera central, para que después indique a cada tarjeta cuáles son sus números. Este trabajo es-
tá íntimamente relacionado con el proceso de arranque de la computadora, por lo que a continua-
ción analizaremos este proceso nada trivial.
32
INTRODUCCIÓN
CAPÍTULO 1
SECCIÓN 1.4
LOS TIPOS DE SISTEMAS OPERATIVOS
33
1.3.7 Arranque de la computadora
En forma muy breve, el proceso de arranque del Pentium es el siguiente. Cada Pentium contiene
una tarjeta madre (motherboard). En la tarjeta madre o padre hay un programa conocido como
BIOS (Basic Input Output System, Sistema básico de entrada y salida) del sistema. El BIOS con-
tiene software de E/S de bajo nivel, incluyendo procedimientos para leer el teclado, escribir en la
pantalla y realizar operaciones de E/S de disco, entre otras cosas. Hoy en día está contenido en una
RAM tipo flash que es no volátil pero el sistema operativo puede actualizarla cuando se encuentran
errores en el BIOS.
Cuando se arranca la computadora, el BIOS inicia su ejecución. Primero hace pruebas para ver
cuánta RAM hay instalada y si el teclado junto con otros dispositivos básicos están instalados y respon-
den en forma correcta. Empieza explorando los buses ISA y PCI para detectar todos los dispositivos co-
nectados a ellos. Comúnmente, algunos de estos dispositivos son heredados (es decir, se diseñaron
antes de inventar la tecnología plug and play), además de tener valores fijos para los niveles de inte-
rrupciones y las direcciones de E/S (que posiblemente se establecen mediante interruptores o puentes
en la tarjeta de E/S, pero que el sistema operativo no puede modificar). Estos dispositivos se registran;
y los dispositivos plug and play también. Si los dispositivos presentes son distintos de los que había
cuando el sistema se inició por última vez, se configuran los nuevos dispositivos.
Después, el BIOS determina el dispositivo de arranque, para lo cual prueba una lista de dispo-
sitivos almacenada en la memoria CMOS. El usuario puede cambiar esta lista si entra a un progra-
ma de configuración del BIOS, justo después de iniciar el sistema. Por lo general, se hace un intento
por arrancar del disco flexible, si hay uno presente. Si eso falla, se hace una consulta a la unidad
de CD-ROM para ver si contiene un CD-ROM que se pueda arrancar. Si no hay disco flexible ni
CD-ROM que puedan iniciarse, el sistema se arranca desde el disco duro. El primer sector del dis-
positivo de arranque se lee y se coloca en la memoria, para luego ejecutarse. Este sector contiene
un programa que por lo general examina la tabla de particiones al final del sector de arranque, pa-
ra determinar qué partición está activa. Después se lee un cargador de arranque secundario de esa
partición. Este cargador lee el sistema operativo de la partición activa y lo inicia.
Luego, el sistema operativo consulta al BIOS para obtener la información de configuración. Pa-
ra cada dispositivo, comprueba si tiene el driver correspondiente. De no ser así, pide al usuario que
inserte un CD-ROM que contenga el driver (suministrado por el fabricante del dispositivo). Una vez
que tiene los drivers de todos los dispositivos, el sistema operativo los carga en el kernel. Después
inicializa sus tablas, crea los procesos de segundo plano que se requieran, y arranca un programa
de inicio de sesión o GUI.
1.4 LOS TIPOS DE SISTEMAS OPERATIVOS
Los sistemas operativos han estado en funcionamiento durante más de medio siglo. Durante este
tiempo se ha desarrollado una variedad bastante extensa de ellos, no todos se conocen ampliamente.
En esta sección describiremos de manera breve nueve. Más adelante en el libro regresaremos a ver
algunos de estos distintos tipos de sistemas.
1.4.1 Sistemas operativos de mainframe
En el extremo superior están los sistemas operativos para las mainframes, las computadoras del tama-
ño de un cuarto completo que aún se encuentran en los principales centros de datos corporativos. La
diferencia entre estas computadoras y las personales está en su capacidad de E/S. Una mainframe con
1000 discos y millones de gigabytes de datos no es poco común; una computadora personal con estas
especificaciones sería la envidia de los amigos del propietario. Las mainframes también están volvien-
do a figurar en el ámbito computacional como servidores Web de alto rendimiento, servidores para si-
tios de comercio electrónico a gran escala y servidores para transacciones de negocio a negocio.
Los sistemas operativos para las mainframes están profundamente orientados hacia el procesa-
miento de muchos trabajos a la vez, de los cuales la mayor parte requiere muchas operaciones de
E/S. Por lo general ofrecen tres tipos de servicios: procesamiento por lotes, procesamiento de tran-
sacciones y tiempo compartido. Un sistema de procesamiento por lotes procesa los trabajos de ru-
tina sin que haya un usuario interactivo presente. El procesamiento de reclamaciones en una
compañía de seguros o el reporte de ventas para una cadena de tiendas son actividades que se rea-
lizan comúnmente en modo de procesamiento por lotes. Los sistemas de procesamiento de transac-
ciones manejan grandes cantidades de pequeñas peticiones, por ejemplo: el procesamiento de
cheques en un banco o las reservaciones en una aerolínea. Cada unidad de trabajo es pequeña, pe-
ro el sistema debe manejar cientos o miles por segundo. Los sistemas de tiempo compartido permi-
ten que varios usuarios remotos ejecuten trabajos en la computadora al mismo tiempo, como
consultar una gran base de datos. Estas funciones están íntimamente relacionadas; a menudo los sis-
temas operativos de las mainframes las realizan todas. Un ejemplo de sistema operativo de main-
frame es el OS/390, un descendiente del OS/360. Sin embargo, los sistemas operativos de
mainframes están siendo reemplazados gradualmente por variantes de UNIX, como Linux.
1.4.2 Sistemas operativos de servidores
En el siguiente nivel hacia abajo se encuentran los sistemas operativos de servidores. Se ejecutan
en servidores, que son computadoras personales muy grandes, estaciones de trabajo o incluso main-
frames. Dan servicio a varios usuarios a la vez a través de una red y les permiten compartir los re-
cursos de hardware y de software. Los servidores pueden proporcionar servicio de impresión, de
archivos o Web. Los proveedores de Internet operan muchos equipos servidores para dar soporte a
sus clientes y los sitios Web utilizan servidores para almacenar las páginas Web y hacerse cargo de
las peticiones entrantes. Algunos sistemas operativos de servidores comunes son Solaris, FreeBSD,
Linux y Windows Server 200x.
1.4.3 Sistemas operativos de multiprocesadores
Una manera cada vez más común de obtener poder de cómputo de las grandes ligas es conectar varias
CPU en un solo sistema. Dependiendo de la exactitud con la que se conecten y de lo que se comparta,
estos sistemas se conocen como computadoras en paralelo, multicomputadoras o multiprocesadores.
Necesitan sistemas operativos especiales, pero a menudo son variaciones de los sistemas operativos de
servidores con características especiales para la comunicación, conectividad y consistencia.
34
INTRODUCCIÓN
CAPÍTULO 1
SECCIÓN 1.4
LOS TIPOS DE SISTEMAS OPERATIVOS
35
Con la reciente llegada de los chips multinúcleo para las computadoras personales, hasta los
sistemas operativos de equipos de escritorio y portátiles convencionales están empezando a lidiar
con multiprocesadores de al menos pequeña escala y es probable que el número de núcleos aumen-
te con el tiempo. Por fortuna, se conoce mucho acerca de los sistemas operativos de multiprocesa-
dores gracias a los años de investigación previa, por lo que el uso de este conocimiento en los
sistemas multinúcleo no debe presentar dificultades. La parte difícil será hacer que las aplicaciones
hagan uso de todo este poder de cómputo. Muchos sistemas operativos populares (incluyendo Win-
dows y Linux) se ejecutan en multiprocesadores.
1.4.4 Sistemas operativos de computadoras personales
La siguiente categoría es el sistema operativo de computadora personal. Todos los sistemas opera-
tivos modernos soportan la multiprogramación, con frecuencia se inician docenas de programas al
momento de arrancar el sistema. Su trabajo es proporcionar buen soporte para un solo usuario. Se
utilizan ampliamente para el procesamiento de texto, las hojas de cálculo y el acceso a Internet. Al-
gunos ejemplos comunes son Linux, FreeBSD, Windows Vista y el sistema operativo Macintosh.
Los sistemas operativos de computadora personal son tan conocidos que tal vez no sea necesario
presentarlos con mucho detalle. De hecho, muchas personas ni siquiera están conscientes de que
existen otros tipos de sistemas operativos.
Compartir con tus amigos: |