Andrew s. Tanenbaum



Descargar 4,35 Mb.
Ver original pdf
Página7/134
Fecha de conversión12.11.2019
Tamaño4,35 Mb.
1   2   3   4   5   6   7   8   9   10   ...   134

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



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:
1   2   3   4   5   6   7   8   9   10   ...   134


La base de datos está protegida por derechos de autor ©absta.info 2019
enviar mensaje

    Página principal