Você está na página 1de 13

1.

HISTORIA DE LOS SISTEMAS OPERATIVOS

Los sistemas operativos han evolucionado con el paso de los aos. En las secciones que siguen
mencionaremos algunos de los puntos sobresalientes. Puesto que desde una perspectiva histrica los sistemas operativos han estado ntimamente ligados con la arquitectura de las computadoras en las que se ejecutan, examinaremos las generaciones sucesivas de computadoras para
ver qu tipo de sistema operativo usaban. Esta correspondencia entre las generaciones de sistemas operativos y las generaciones de computadoras es burda, pero confiere algo de estructura, que de lo contrario estara ausente por completo.
La primera computadora digital verdadera fue diseada por el matemtico ingls Charles
Babbage (1792-1871). Aunque Babbage invirti la mayor parte de su vida y su fortuna intentando construir su "mquina analtica", nunca logr que funcionara como deba porque era mecnica por completo, y la tecnologa de su poca no era capaz de producir las ruedas,
engranes y levas necesarias con la suficiente precisin. Huelga decir que la mquina analtica
careca de un sistema operativo.
Como nota histrica interesante, Babbage se dio cuenta de que necesitara software para su
mquina analtica, as que contrat a una joven mujer llamada Ada Lovelace, hija del afamado
poeta ingls Byron, para ser la primera programa dora del mundo. El lenguaje de
programacin Ada se llama as en su honor.
1.2.1

La primera generacin (1945-1955): tubos de vaco y tableros

Despus de la infructuosa labor de Babbage, poco se avanz en la construccin de computadoras digitales antes de la Segunda Guerra Mundial. A mediados de la dcada de 1940, Howard Aiken, en Harvard; John von Neumann, en el Instituto de Estudios Avanzados de
Princeton; J. Presper Eckert y William Mauchley, en la Universidad de Pensilvania, y Konrad
Zuse, en Alemania, entre otros, lograron construir mquinas calculadoras. Las primeras empleaban relevadores mecnicos pero eran muy lentas, con tiempos de ciclo medidos en segundos. Luego los relevadores fueron sustituidos por tubos de vaco. Estas mquinas eran
enormes: ocupaban recintos enteros y tenan decenas de miles de tubos de vaco; con todo,
eran millones de veces ms lentas que las computadoras personales ms baratas que se venden en la actualidad.
En esos primeros tiempos, un solo grupo de personas diseaba, construa, programaba,
operaba y mantena cada mquina. Toda la programacin se efectuaba en lenguaje de mquina

1.2

HISTORIA DE LOS SISTEMAS OPERATIVOS

absoluto, a menudo alambrando tableros de conexiones para controlar las funciones bsicas de
la mquina. No existan los lenguajes de programacin (ni siquiera el lenguaje ensamblador).
Nadie haba odo hablar de sistemas operativos. La forma de operacin usual era que el programador reservaba un bloque de tiempo en una hoja pegada en la pared, bajaba al cuarto de
la mquina, insertaba su tablero de conexiones en la computadora, y pasaba las horas siguientes rezando para que ninguno de los cerca de 20,000 tubos de vaco se quemara durante la ejecucin de su programa. Casi todos los problemas eran clculos numricos simples, como la
preparacin de tablas de senos, cosenos y logaritmos.
Para principios de la dcada de 1950, la rutina haba mejorado un poco con la introduccin
de las tarjetas perforadas. Ahora era posible escribir programas en tarjetas y hacer que la mquina los leyera, en lugar de usar tableros de conexiones; por lo dems, el procedimiento era
el mismo.

1.2.2

La segunda generacin (1955-1965):


transistores y sistemas por lotes

La introduccin del transistor, a mediados de la dcada de 1950, alter el panorama de manera radical. Las computadoras se volvieron lo bastante fiables como para fabricarse y venderse
a clientes comerciales, con la expectativa de que seguiran funcionando el tiempo suficiente para efectuar algn trabajo til. Por primera vez hubo una distincin clara entre diseadores,
constructores, operadores, programadores y personal de mantenimiento.
Estas mquinas, ahora llamadas mainframes o macrocomputadoras, se alojaban en
salas de cmputo especiales con aire acondicionado, y las manejaban grupos de operadores
profesionales. Slo las grandes corporaciones, dependencias de gobierno o universidades
importantes podan pagar los varios millones de dlares que costaban. Para ejecutar un
trabajo (es decir, un programa o conjunto de programas), un programador escriba primero el
programa en papel (en FORTRAN o en ensamblador) y luego lo perforaba en tarjetas.
Despus, llevaba el mazo de tarjetas al cuarto de entrada, lo entregaba a uno de los
operadores y tomaba caf hasta que estaban listas las salidas.
Cuando la computadora terminaba el trabajo que estaba ejecutando, un operador tomaba
las hojas de la impresora y las llevaba al cuarto de salida, donde el programador poda recogerlas ms tarde. Luego tomaba uno de los mazos de tarjetas trados del cuarto de entrada
y lo colocaba en la lectora de la computadora. Si se necesitaba el compilador de FORTRAN,
el operador tena que traerlo de un archivero y colocarlo en la lectora. Se desperdiciaba mucho tiempo de computadora mientras los operadores iban de un lado a otro en el cuarto de
mquinas.
En vista del elevado costo de los equipos, no es sorprendente que pronto se buscaran formas de reducir el desperdicio de tiempo. La solucin adoptada, por lo general, fue el sistema
por lotes. La idea bsica era juntar una bandeja llena de trabajos en el cuarto de entrada y luego pasarlos a una cinta magntica, empleando una computadora pequea y (relativamente) de
bajo costo, como la IBM 1401, que era muy buena para leer tarjetas, copiar cintas e imprimir
salidas, pero mala para los clculos numricos. Otras mquinas mucho ms
Costos como la

8
1.2 HISTORIA DE LOS SISTEMAS OPERATIVOS
IBM 7094, realizaban los cmputos propiamente dichos. Esta situacin se muestra en la fi gura 1-2.

Unidad de
cinta

Cinta
~)| Impresora

Cinta
de
entrada

(a)

(b)

(c)

del sistema

(d)

(e)

(f)

Figura 1-2. Sistema por lotes primitivo, a) Los programadores llevan tarjetas a una
1401. b) La 1401 lee un lote de trabajos y lo graba en cinta, c) Un operador lleva
la cinta de entrada a la 7094. d) La 7094 realiza los cmputos, e) Un operador lleva la cinta de salida a una 1401. f) La 1401 imprime las salidas.

Despus de cerca de una hora de reunir un lote de trabajos, la cinta se rebobinaba


y se llevaba al cuarto de mquinas, donde se montaba en una unidad de cinta. Luego el
operador cargaba un programa especial (el antecesor del sistema operativo actual) que
lea el primer trabajo de la cinta y lo ejecutaba. Las salidas se grababan en una segunda
cinta, en lugar de imprimirse. Una vez que terminaba un trabajo, el sistema operativo
lea en forma automtica el siguiente de la cinta y comenzaba a ejecutarlo. Una vez
terminado todo el lote, el operador desmontaba las cintas de entrada y de salida,
reemplazaba la cinta de entrada por el siguiente lote y lleva ba la cinta de salida a una
1401 para imprimir las salidas fuera de lnea (es decir, sin estar conectada a la
computadora principal).
En la figura 1-3 se muestra la estructura de un trabajo de entrada tpico. Lo primero
era una tarjeta $JOB, que especificaba el tiempo de ejecucin mximo en minutos, el
nmero de cuenta al cual cargarlo y el nombre del programador. Luego vena una
tarjeta $FORTRAN, que indicaba al sistema operativo que deba cargar el compilador de
FORTRAN de la cinta del sistema. Despus vena el programa a compilar y luego una
tarjeta $LOAD, que solicitaba al sistema operativo cargar el programa objeto recin
compilado. (Los programas compilados a menudo se grababan en cintas provisionales y
tenan que cargarse de manera explcita.) A continuacin segua la tar jeta $RUN, que
peda al sistema operativo ejecutar el programa con los datos que venan ense guida.
Por ltimo, la tarjeta $END marcaba el final del trabajo. Estas tarjetas de control
primitivas fueron las precursoras de los lenguajes de control de trabajos e intrpretes
de comandos modernos.
Las computadoras grandes de la segunda generacin se utilizaban, en su mayora,
para realizar clculos cientficos y de ingeniera, como resolver las ecuaciones
diferenciales parciales que a menudo se presentan en fsica o ingeniera. Por lo regular,
se les programaba en FORTRAN y en lenguaje ensamblador. Como sistemas
operativos tpicos podemos citar FMS (Sistema Monitor Fortran; Fortran Monitor
System) e IBSYS, el sistema operativo de IBM para la 7094.

1.2

HISTORIA DE LOS SISTEMAS OPERATIVOS

/SJOB, 10,6610802, MARVIN TANENBAUM

Figura 1-3. Estructura de un trabajo FMS representativo.

1.2.3 La tercera generacin(1965-1980): circuitos integrados y


multiprogramacin
A principios de la dcada de 1960, la mayora de los fabricantes de computadoras tena
dos lneas de productos diferentes e incompatibles por completo. Por un lado estaban
las computadoras cientficas a gran escala como la 7094, orientadas a palabras, que se
utilizaban para clculos numricos en ciencias e ingeniera. Por el otro, estaban las
computadoras comerciales como la 1401, orientadas a caracteres, que los bancos y
compaas de seguros utilizaban en forma amplia para ordenar cintas e imprimir.
El desarrollo y mantenimiento de dos lneas de productos totalmente distintas era
un asunto costoso para los fabricantes. Adems, muchos clientes nuevos necesitaban
al principio una mquina pequea, pero ms adelante, al crecer, queran una de mayor
tamao que ejecutara todos sus antiguos programas, pero en menos tiempo.
IBM intent resolver ambos problemas de un solo golpe, introduciendo el
Sistema/360. ste era una serie de mquinas de software compatible que iba desde
computadoras del tamao de la 1401, hasta otras mucho ms potentes que la 7094. Las
mquinas slo diferan en su precio y desempeo (mximo de memoria, velocidad del
procesador, nmero de dispositivos de
E/S permitidos, etctera). Puesto que todas las mquinas tenan la misma arquitectura y
conjunto de instrucciones, los programas escritos para una mquina podan ejecutarse en
todas las dems, al menos en teora. Adems, la 360 se dise de modo que pudiera manejar
cmputos tanto cientficos (o sea, numricos) como comerciales. As, una sola familia de
mquinas poda satisfacer las necesidades de todos los clientes. En aos posteriores, IBM
produjo sucesoras compatibles con la lnea 360, empleando tecnologa ms moderna: las
series 370, 4300, 3080 y 3090.

10

INTRODUCCIN

La 360 fue la primera lnea de computadoras importante que us circuitos integrados (a pequea
escala), por lo que ofreca una notable ventaja en precio y desempeo respecto a las mquinas de la
segunda generacin, que se construan con transistores individuales. Su xito fue inmediato, y los
principales fabricantes de computadoras pronto adoptaron la idea de una familia de computadoras
compatibles. Los descendientes de estas mquinas se siguen usando en centros de cmputo hoy da,
para administrar bases de datos enormes (por ejemplo, en sistemas para reservar pasajes areos) o
como servidores de sitios Web que deben procesar miles de solicitudes por segundo.
La mayor ventaja de la idea de "una familia" era al mismo tiempo su punto ms dbil. La intencin era que todo el software, incluido el sistema operativo OS/360, tena que funcionar en todos los
modelos. Tena que hacerlo en sistemas pequeos, que a menudo eran simples sustitutos de las 1401
para copiar tarjetas en cinta, y tambin en sistemas muy grandes, que a menudo sustituan a las 7094
para pronosticar el tiempo y efectuar otros clculos pesados. Tena que ser bueno en sistemas con
pocos perifricos y en sistemas con muchos perifricos. Tena que operar en entornos comerciales y
en entornos cientficos. Y, sobre todo, tena que ser eficiente para todos estos usos.
Era imposible que IBM (o alguien ms) escribiera software capaz de satisfacer todos esos
requisitos opuestos. El resultado fue un sistema operativo enorme y extraordinariamente complejo,
quiz de dos a tres rdenes de magnitud ms grande que FMS. Consista en millones de lneas de
lenguaje ensamblador escritas por miles de programadores, y contena miles y miles de errores, por
lo que se requera un flujo continuo de versiones nuevas en un intento por corregirlos. Cada versin
nueva correga algunos errores e introduca otros nuevos, por lo que es probable que el nmero de
errores se haya mantenido constante al correr del tiempo.
Uno de los diseadores del OS/360, Fred Brooks, escribi despus un simptico y mordaz libro
(Brooks, 1996) en el que describa sus experiencias con el OS/360. Aunque sera imposible resumir
aqu ese libro, baste con decir que la portada muestra una manada de bestias prehistricas
atascadas en un pozo de brea. La portada de Silberschatz et al. (2000) tambin sugiere que los
sistemas operativos son dinosaurios.
A pesar de lo enorme de su tamao y sus problemas, el OS/360 y los sistemas operativos de
tercera generacin similares producidos por otros fabricantes de computadoras, en realidad
satisficieron de manera razonable a la mayora de sus clientes. Adems, popularizaron varias
tcnicas clave que no se usaban en los sistemas operativos de segunda generacin. Tal vez la ms
importante de ellas sea la multiprogramacin. En la 7094, cuando el trabajo en curso haca una
pausa para esperar que terminara una operacin de cinta u otra operacin de E/S, la CPU
permaneca inactiva hasta que la E/S terminaba. En el caso de clculos cientficos, que hacan uso
intensivo de la CPU, la E/S es poco frecuente, as que el tiempo desperdiciado no es importante.
En el procesamiento de datos comerciales, el tiempo de espera por E/S puede ser el 80 o 90% del
tiempo total, as que era urgente hacer algo para evitar que la (costosa) CPU estuviera inactiva tanto
tiempo.
La solucin que se hall fue dividir la memoria en varias partes, con un trabajo distinto en cada
particin, como se muestra en la figura 1-4. Mientras un trabajo estaba esperando a que terminara
la E/S, otro poda estar usando la CPU. Si era posible tener varios trabajos en la memoria principal a
la vez, la CPU poda mantenerse ocupada casi el 100% del tiempo. Tener va-

1.2

11

HISTORIA DE LOS SISTEMAS OPERATIVOS

rios trabajos en la memoria al mismo tiempo, sin causar problemas, requiere hardware
especial que proteja cada trabajo contra espionaje y acciones hostiles realizadas por los
otros, pero la 360 y otros sistemas de tercera generacin estaban equipados con ese
hardware.
Trabajo 3
Trabajo 2

Particiones de
Memoria

Trabajo 1
Sistema
Operativo

Figura 1-4. Sistema de multiprogramacin con tres trabajos en la memoria.

Otra caracterstica importante de los sistemas operativos de tercera generacin era


que podan leer trabajos de tarjetas y grabarlos en el disco tan pronto como se llevaban
al cuarto de computadoras. As, cada vez que terminaba de ejecutarse un trabajo, el
sistema operativo poda cargar un trabajo nuevo del disco y colocarlo en la particin recin
desocupada para ejecutarlo. Esta tcnica se llama spooling (de operacin simultnea de
perifricos en lnea; Simultaneous Peripheral Operation On Line) y tambin se usaba
para las salidas. Con el spooling, ya no se necesitaban las 1401 y se redujo en forma
considerable el transporte de cintas.
Aunque los sistemas operativos de tercera generacin eran muy apropiados para
realizar grandes clculos cientficos y para procesar volmenes enormes de datos
comerciales, seguan siendo bsicamente sistemas por lotes. Muchos programadores
aoraban los tiempos de la primera generacin en que la mquina era toda para ellos
durante unas cuantas horas, lo que les permita depurar sus programas con rapidez. Con
los sistemas de la tercera generacin, el tiempo entre la presentacin de un trabajo y la
recepcin de la salida sola ser de varias horas, por lo que una sola coma fuera de lugar
podra hacer que fallara una compilacin y que el progra-mador perdiera medio da.
Este deseo de obtener respuesta rpida prepar el camino para el tiempo
compartido, una variante de la multiprogramacin en la que cada usuario tiene una
terminal en lnea. En un sistema de tiempo compartido, si 20 usuarios estn trabajando y
17 de ellos estn pensando o hablando o bebiendo caf, la CPU puede asignarse por
turnos a los tres trabajos que desean ser atendidos. Puesto que quienes depuran
programas por lo regular emiten instrucciones cortas (por ejemplo, compilar un
procedimiento de cinco pginas^), no largas (digamos, ordenar un archivo de un milln
de registros), la computadora puede prestar servicio rpido e interactivo a varios
usuarios y quiz tambin trabajar en segundo plano con trabajos por lotes grandes,
aprovechando los periodos inactivos de la CPU. El primer sistema de tiempo compartido
serio, CTSS (Sistema de Tiempo Compartido Compatible; Compatible Time Sharing
System), se desarroll en el MIT en una 7094 con modificaciones especiales (Corbat et
al., 1962). Sin embargo, el tiempo compartido no se populariz en realidad sino hasta
que se generaliz el uso del hardware de proteccin necesario durante la tercera
generacin.
tEn este libro usaremos indistintamente los trminos "procedimiento", "subrutina" y "funcin".

12

INTRODUCCIN

Despus del xito del sistema CTSS, MIT, Bell Labs y General Electric (que era entonces
un importante fabricante de computadoras) decidieron emprender el desarrollo de un "servicio
de computadora", una mquina que atendiera a cientos de usuarios simultneos por tiempo
compartido. Su modelo fue el sistema de distribucin de electricidad: cuando alguien necesita
energa elctrica, slo tiene que insertar una clavija en la pared y dispondr de toda la electricidad (dentro de lmites razonables) que desee. Los diseadores de este sistema, llamado
MULTICS (Servicio de Informacin y Computacin MULTiplexado; MULTiplexed Information and Computing Service), imaginaron una mquina enorme que proporcionaba potencia
de cmputo a todos los habitantes del rea de Boston. La idea de que millones de mquinas
mucho ms potentes que su mainframe GE-645 se venderan a mil dlares cada una apenas 30
aos despus era ciencia ficcin pura, algo as como lo es ahora la idea de trenes supersnicos
bajo el Atlntico.
MULTICS tuvo un xito ambiguo. Se le dise para apoyar a cientos de usuarios con una
mquina apenas un poco ms potente que una PC basada en un Intel 386, aunque tena mucha
ms capacidad de E/S. Esto no es tan absurdo como suena, porque en esa poca la gente saba
escribir programas pequeos y eficientes, habilidad que ya se ha perdido. Hubo muchas razones por las que MULTICS no se adue del mundo; una de las principales fue que estaba escrito en PL/I, y el compilador de PL/I se retras varios aos y apenas funcionaba cuando por
fin apareci. Adems, MULTICS era demasiado ambicioso para su poca, algo as como la
mquina analtica de Charles Babbage en el siglo xix.
Para no alargar la historia, MULTICS introdujo varias ideas bsicas en la literatura de la
computacin, pero convertirlo en un producto serio y en un xito comercial importante fue
mucho ms difcil de lo que se haba pensado. Bell Labs se separ del proyecto y General
Electric abandon del todo el negocio de las computadoras. No obstante, el MIT persisti y
al fin logr poner a funcionar MULTICS. En ltima instancia, fue vendido como producto comercial por la compaa que adquiri el ramo de computadoras de GE (Honeywell) y se instal en cerca de 80 compaas y universidades importantes en todo el mundo. Aunque no eran
numerosos, los usuarios de MULTICS mostraban una lealtad a toda prueba. General Motors,
Ford y la Agencia de Seguridad Nacional de Estados Unidos, por ejemplo, apenas retiraron
sus sistemas MULTICS a fines de la dcada de 1990, 30 aos despus de que salieron al mercado.
Por el momento, el concepto de un servicio de computadora ha perdido mpetu, pero bien
podra reaparecer en forma de servidores gigantes de Internet centralizados a los que se conecten mquinas de usuario relativamente tontas, realizndose la mayor parte del trabajo en los
servidores. En este caso es probable que la justificacin sera que la mayora de las personas
no desea administrar un sistema de cmputo cada vez ms complejo y quisquilloso, y preferira que ese trabajo lo realizara un equipo de profesionales empleado por la compaa que operara el servidor. El comercio electrnico ya est evolucionando en esta direccin, y varias
compaas operan centros comerciales electrnicos en servidores multiprocesador a los que se
conectan mquinas cliente sencillas, algo muy parecido en espritu al diseo de MULTICS.
A pesar de su falta de xito comercial, MULTICS tuvo una gran influencia en los sistemas
operativos subsiguientes. Se le describe en Corbat et al. (1972), Corbat y Vyssotsky (1965),
Daley y Dennis (1968), Organick (1972) y Saltzer (1974). Tambin tiene un sitio Web que si-

1.2

HISTORIA DE LOS SISTEMAS OPERATIVOS

13

gue activo, www.multicians.org, con abundante informacin acerca del sistema, sus diseado res y sus usuarios.
Otro adelanto importante durante la tercera generacin fue el fenomenal crecimiento de las
minicomputadoras, comenzando con la DEC PDP-1 en 1961. La PDP-1 slo tena 4K de pala bras de 18 bits, pero su precio de 120,000 dlares por mquina (menos del 5% del precio de
una 7094) hizo que se vendiera como pan caliente. Para ciertos tipos de trabajo no numrico,
era casi tan rpida como la 7094, y dio origen a una industria totalmente nueva. Pronto la si gui una serie de otras PDP (a diferencia de la familia IBM, todas incompatibles) que culmi naron en la PDP-11.
Uno de los cientficos de computacin de Bell Labs que haba trabajado en el proyecto
MULTICS, Ken Thompson, hall ms adelante una pequea minicomputadora PDP-7 que nadie
estaba usando y se puso a escribir una versin austera de MULTICS, para un solo usuario. Esta
labor dio pie ms adelante al sistema operativo UNIX, que se populariz en el mundo acadmico, en las dependencias gubernamentales y en muchas compaas.
La historia de UNIX se cuenta en otras obras (por ejemplo, Salus, 1994). Parte de esa his toria se presentar en el captulo 10. Por ahora, baste con decir que, gracias a que el cdigo
fuente se poda conseguir con facilidad, diversas organizaciones desarrollaron sus propias ver siones (incompatibles), lo cual llev al caos. Surgieron dos versiones principales, System V, de
AT&T, y BSD (Berkeley Software Distribution), de la Universidad de California en Berkeley.
stas tenan asimismo variantes menores. Para que fuera posible escribir programas suscepti bles de ejecutarse en cualquier sistema UNIX, el IEEE cre un estndar para UNIX, llamado
POSIX, reconocido por la mayora de las versiones actuales de UNIX. POSIX define una interfaz mnima de llamadas al sistema que deben entender los sistemas UNIX compatibles. De
hecho, algunos otros sistemas operativos tambin reconocen ya la interfaz POSIX.
Como nota interesante, vale la pena mencionar que en 1987, el autor public un clon pe queo de UNIX, llamado MINIX, con fines educativos. Desde el punto de vista funcional, MINIX es muy similar a UNIX, y es compatible con POSIX. Tambin hay un libro que describe
su funcionamiento interno y presenta el cdigo fuente en un apndice (Tanenbaum y Woodhull, 1997). Puede obtener MINIX en forma gratuita (incluido todo el cdigo fuente) en Inter net en la direccin www.cs.vu.nl/~ast/minix.html.
El deseo de contar con una versin de produccin libre (no meramente educativa) de MINIX llev a un estudiante finlands, Linus Torvalds, a escribir Linux. Este sistema se desarroll
con base en MINIX y originalmente reconoca varios recursos de MINIX (como el sistema de
archivos). Desde entonces Linux se ha extendido de muchas maneras pero sigue conservan do
una buena parte de la estructura subyacente de MINIX y UNIX (en el que se bas el pri mero).
Por tanto, gran parte de lo que se dir acerca de UNIX en este libro es vlido para System V,
BSD, MINIX, Linux y otras versiones y clones de UNIX.

1.2.4

La cuarta generacin (de 1980 al


presente): computadoras personales

Con el desarrollo de circuitos integrados a gran escala (LSI; large scale integration), chips
que contienen miles de transistores en cada centmetro cuadrado de silicio, surgi la era de la

14

NTRODUCCIN

computadora personal. Desde el punto de vista de la arquitectura, las computadoras personales


(llamadas en un principio microcomputadoras) no eran muy diferentes de las minicomputadoras de la clase PDP-11, pero desde el punto de vista del precio, s que eran distintas. Mientras
que la minicomputadora hizo posible que un departamento de una compaa o universidad tuviera
su propia computadora, el chip microprocesador hizo posible que una sola persona tuviera su
propia computadora personal.
En 1974, cuando Intel present el 8080, la primera CPU de ocho bits de propsito general, quera un sistema operativo para ese procesador, en parte para poder probarlo. Intel pidi
a uno de sus consultores, Gary Kildall, que escribiera uno. Kildall y un amigo construyeron
primero una controladora para el disco flexible de ocho pulgadas recin salido de Shugart Associates, y conectaron el disquete al 8080, produciendo as la primera microcomputadora con
disco. Luego Kildall le escribi un sistema operativo basado en disco llamado CP/M (Programa de Control para Microcomputadoras; Control Program for Microcomputers). Intel no
pens que las microcomputadoras basadas en disco fueran a tener mucho futuro, as que cuando
Kildall pidi los derechos del CP/M, Intel se los concedi. Kildall form entonces una compaa, Digital Research, para seguir desarrollando y vender CP/M.
En 1977, Digital Research rescribi CP/M para que pudiera ejecutarse en las muchas microcomputadoras que usaban el 8080, el Zilog Z80 y otros circuitos de CPU. Se escribieron muchos programas de aplicacin para ejecutarse en CP/M, lo que le permiti dominar por
completo el mundo de la microcomputacin durante unos cinco aos.
A principios de la dcada de 1980, IBM dise la PC y busc software que se ejecutara en
ella. Personal de IBM se puso en contacto con Bill Gates para usar bajo licencia su intrprete
de BASIC, y tambin le pregunt si saba de algn sistema operativo que funcionara en la PC.
Gates sugiri a IBM ponerse en contacto con Digital Research, que entonces era la compaa
de sistemas operativos ms importante del mundo. Tomando la que de seguro fue la peor decisin de negocios de la historia, Kildall se neg a reunirse con IBM y envi a un subordinado
en su lugar. Para empeorar las cosas, su abogado se neg a firmar el convenio de confidencialidad de IBM que cubra la PC, la cual todava no se haba anunciado. Por ello, IBM regres
con Gates y le pregunt si podra ofrecerle un sistema operativo.
Cuando IBM regres, Gates se percat de que un fabricante de computadoras local,
Seattle Computer Products, tena un sistema operativo apropiado, DOS (Sistema Operativo
de Disco; Disk Operating System). Gates habl con ellos y se ofreci a comprrselos (segn
se dice, por 50,000 dlares), cosa que ellos aceptaron de buena gana. Luego Gates ofreci a
IBM un paquete DOS/BASIC, que IBM acept. IBM quera ciertas modificaciones, por lo que
Gates contrat a la persona que haba escrito DOS, Tim Paterson, como empleado de su naciente compaa, Microsoft, para que las efectuara. El sistema modificado se rebautiz MSDOS (DOS de Microsoft) y pronto domin el mercado de la PC de IBM. Un factor clave aqu
fue la decisin (en retrospectiva, extremadamente sabia) de Gates de vender MS-DOS a compaas de computadoras para incluirlo con su hardware, muy distinta del intento de Kildall por
vender CP/M a los usuarios finales uno por uno (al menos al principio).
Para cuando la PC/AT de IBM sali a la venta en 1983 con la CPU Intel 80286, MS-DOS
estaba bien afianzado y CP/M estaba agonizando. Ms tarde se us MS-DOS en forma abundante en la 80386 y la 80486. Aunque la versin inicial de MS-DOS era ms bien primitiva, ver-

1.2

HISTORIA DE LOS SISTEMAS OPERATIVOS

15

siones posteriores incluyeron funciones ms avanzadas, muchas de las cuales se haban tomado de UNIX. (Microsoft tena plena conciencia de UNIX, e incluso vendi durante sus primeros aos una versin para microcomputadora a la que llam XENIX.)
CP/M, MS-DOS y otros sistemas operativos para las primeras microcomputadoras obligaban al usuario a introducir instrucciones con el teclado. En un momento dado eso cambi, gracias a las investigaciones hechas por Doug Engelbart en el Stanford Research Institute, en los
aos sesenta. Engelbart invent la (GUI interfaz grfica de usuario; Graphical User Interface), provista de ventanas, iconos, menus y ratn. Los investigadores de Xerox PARC adoptaron estas ideas y las incorporaron en las mquinas que fabricaban.
Cierto da Steve Jobs, uno de los dos jvenes que inventaron la computadora Apple en la
cochera de su casa, visit PARC, vio una GUI, y de inmediato capt su valor potencial, algo
que, en forma asombrosa, la gerencia de Xerox no hizo (Smith y Alexander, 1988). Jobs se dedic entonces a construir una Apple provista de una GUI. Este proyecto llev a la Lisa, que era
demasiado cara y fracas comercialmente. El segundo intento de Jobs, la Apple Macintosh, fue
un enorme xito, no slo porque era mucho ms econmica que la Lisa, sino tambin porque
era amigable para el usuario, lo que significa que iba dirigida a usuarios que no slo carecan
de conocimientos de computacin, sino que no tenan la menor intencin de aprender.
Cuando Microsoft decidi crear un sucesor para MS-DOS, pens mucho en el xito de la
Macintosh. La compaa produjo un sistema basado en GUI al que llam Windows, que originalmente se ejecutaba encima de MS-DOS (es decir, era ms un shell que un verdadero sistema operativo). Durante cerca de 10 aos, de 1985 a 1995, Windows no fue ms que un
entorno grfico encima de MS-DOS. Sin embargo, en 1995 sali una versin autnoma de
Windows, Windows 95, que inclua muchas funciones de sistema operativo y slo utilizaba el
sistema MS-DOS subyacente para arrancar y ejecutar programas viejos de MS-DOS. En 1998
sali una versin ligeramente modificada de este sistema, llamada Windows 98. No obstante,
tanto Windows 95 como Windows 98 todava contienen una buena cantidad de lenguaje ensamblador Intel de 16 bits.
Otro sistema operativo de Microsoft es Windows NT (NT significa Nueva Tecnologa; New
Technology), que es compatible con Windows 95 en cierto nivel, pero internamente rescrito desde
cero. Se trata de un sistema por completo de 32 bits. El diseador en jefe de Windows NT fue
David Cutler, quien tambin fue uno de los diseadores del sistema operativo VAX VMS, as
que algunas ideas de VMS estn presentes en NT. Microsoft confiaba en que la primera versin
de NT exterminara a MS-DOS y todas las dems versiones de Windows porque era un sistema
inconmensurablemente superior, pero no fue as. Apenas con Windows NT 4.0 se comenz
a adoptar en forma extensa el sistema, sobre todo en redes corporativas. La versin 5 de
Windows NT se rebautiz como Windows 2000 a principios de 1999, con la intencin de que
fuera el sucesor tanto de Windows 98 como de Windows NT 4.0. Eso tampoco funcion como
se pensaba, as que Microsoft sac una versin ms de Windows 98 llamada Windows Me (edicin Milenio; Millenium editior).
El otro contendiente importante en el mundo de las computadoras personales es UNIX (y
sus diversos derivados). UNIX es ms fuerte en estaciones de trabajo y otras computadoras potentes, como los servidores de red. En especial es popular en mquinas basadas en chips RISC
de alto desempeo. En las computadoras basadas en Pentium, Linux se est convirtiendo en

16 ________________________________________________________________________INTRODUCCIN

una alternativa popular a Windows, para estudiantes y cada vez ms para usuarios corporativos. (Cabe sealar que en todo este libro usaremos el trmino "Pentium" para referirnos al
Pentium I, II, III y 4.)
Aunque muchos usuarios de UNIX, sobre todo programadores experimentados, prefieren
una interfaz basada en comandos que una GUI, casi todos los sistemas UNIX reconocen un
sistema de ventanas llamado X Windows producido en el MIT. Este sistema-se encarga de la
administracin bsica de ventanas y permite a los usuarios crear, borrar, trasladar y redimensionar ventanas con un ratn. En muchos casos se cuenta con una GUI completa, como Motif, que opera encima del sistema X Windows para conferir a UNIX un aspecto y manejo
parecidos a Macintosh o Microsoft Windows, para aquellos usuarios de UNIX que lo deseen.
Una tendencia interesante que surgi a mediados de la dcada de 1980 es el crecimiento
de las redes de computadoras personales que ejecutan sistemas operativos de red y sistemas
operativos distribuidos (Tanenbaum y Van Steen, 2002). En un sistema operativo de red, los
usuarios estn conscientes de la existencia de mltiples computadoras y pueden iniciar una sesin en mquinas remotas y copiar archivos de una mquina a otra. Cada mquina ejecuta su
propio sistema operativo local y tiene su propio usuario local (o usuarios).
Los sistemas operativos de red no son distintos en lo fundamental de los diseados para
un solo procesador. Por supuesto, necesitan una controladora de interfaz de red y cierto software de bajo nivel para operar, as como programas para iniciar la sesin y tener acceso a archivos en una mquina remota, pero estas adiciones no alteran la naturaleza fundamental del
sistema operativo.
En contraste, un sistema operativo distribuido se presenta a los usuarios como un sistema
uniprocesador tradicional, aunque en realidad se compone de mltiples procesadores. Los
usuarios no deben preocuparse por saber dnde se estn ejecutando sus programas o dnde estn almacenados sus archivos; de eso debe encargarse el sistema operativo en forma automtica y eficiente.
Los verdaderos sistemas operativos distribuidos requieren algo ms que aadir un poco de
cdigo a un sistema operativo uniprocesador, porque los sistemas distribuidos y centralizados
presentan diferencias cruciales. Por ejemplo, a menudo permiten que las aplicaciones se ejecuten en varios procesadores al mismo tiempo, lo que requiere algoritmos de calendarizacin
del procesador ms complejos a fin de optimizar el grado de paralelismo.
Los retrasos de comunicacin en la red a menudo implican que estos algoritmos (y otros)
deben ejecutarse con informacin incompleta, caduca o incluso incorrecta. Esta situacin es
radicalmente distinta de un sistema con un solo procesador, donde el sistema operativo cuenta
con informacin completa acerca del estado del sistema.

1.2.5

La ontogenia recapitula la filogenia

Despus de publicarse el libro de Charles Darwin, El origen de las especies, el zologo alemn Ernst Haeckel dijo que "la ontogenia recapitula la filogenia". Con esto quiso decir que el
desarrollo de un embrin (ontogenia) repite (es decir, recapitula) la evolucin de la especie (fi-

1.2

HISTORIA DE LOS SISTEMAS OPERATIVOS

17

logenia). En otras palabras, despus de la fertilizacin, un embrin humano pasa por las etapas de pez, cerdo, etctera, antes de convertirse en un beb humano. Los bilogos modernos
consideran esto una simplificacin burda, pero no deja de tener un granito de verdad.
Algo anlogo ha sucedido en la industria de las computadoras. Pareciera que cada nueva
especie (mainframe, minicomputadora, computadora personal, computadora integrada, tarjeta
inteligente, etctera) pasa por el mismo desarrollo que sus antepasados. Los primeros mainframes se programaban por completo en lenguaje ensamblador. Incluso programas complejos,
como los compiladores y sistemas operativos, se escriban en ensamblador. Para cuando aparecieron en escena las minicomputadoras, FORTRAN, COBOL y otros lenguajes de alto nivel
eran comunes en los mainframes, pero, las nuevas minicomputadoras se programaban en
ensamblador (por la escasez de memoria). Cuando se inventaron las microcomputadoras (las
primeras computadoras personales), tambin se programaban en ensamblador, aunque para
entonces las minicomputadoras tambin se programaban en lenguajes de alto nivel. Las computadoras de bolsillo (palmtop) tambin comenzaron con cdigo ensamblador pero pronto cambiaron a lenguajes de alto nivel (sobre todo porque el trabajo de desarrollo se efectuaba en
mquinas ms grandes), y lo mismo ha sucedido con las tarjetas inteligentes.
Veamos ahora los sistemas operativos. Los primeros mainframes no tenan hardware de
proteccin ni soportaban multiprogramacin, as que ejecutaban sistemas operativos sencillos
que manejaban un programa a la vez, el cual se cargaba en forma manual. Ms adelante, estas
computadoras adquirieron el hardware y el apoyo de sistema operativo necesarios para manejar varios programas a la vez, y luego funciones completas de tiempo compartido.
Cuando aparecieron las minicomputadoras, tampoco tenan hardware de proteccin y ejecutaban un programa a la vez, tambin cargado en forma manual, aunque para entonces la
multiprogramacin ya estaba bien establecida en el mundo de los mainframes. De manera gradual, estas mquinas adquirieron hardware de proteccin y la capacidad de ejecutar dos o ms
programas a la vez. Las primeras microcomputadoras tampoco podan ejecutar ms de un programa a la vez, pero luego adquirieron la capacidad de multiprogramar. Las computadoras de
bolsillo y las tarjetas inteligentes siguieron la misma ruta.
Los discos aparecieron primero en los mainframes, luego en las minicomputadoras, microcomputadoras, etc. Incluso ahora, las tarjetas inteligentes no tienen disco duro, pero con la
llegada de la ROM tipo flash, pronto tendrn algo equivalente. Cuando aparecieron por primera
vez los discos, nacieron sistemas de archivo primitivos. En la CDC 6600, por mucho el
mainframe ms potente del mundo durante gran parte de la dcada de 1960, el sistema de archivos consista en usuarios que podan crear un archivo y luego declararlo permanente, lo que
significaba que seguira en el disco aunque el programa que lo haba creado ya hubiera terminado. Para tener acceso a tal archivo ms adelante, un programa tena que anexarlo con una
instruccin especial y proporcionar su contrasea (que se asignaba cuando el archivo se haca
permanente). En efecto, haba un solo directorio que compartan todos los usuarios, y corresponda a los usuarios evitar conflictos de nombres de archivo. Los primeros sistemas de archivos de minicomputadoras tenan un solo directorio compartido por todos los usuarios, y lo
mismo sucedi con los sistemas de archivos de las primeras microcomputadoras.
La memoria virtual (la capacidad para ejecutar programas ms grandes que la memoria fsica) tuvo un desarrollo similar. Su primera aparicin fue en los mainframes y contino en las

18

INTRODUCCIN

minicomputadoras, microcomputadoras y as en forma gradual, hasta sistemas cada vez ms


pequeos. Las redes tuvieron una historia similar.
En todos los casos, el desarrollo del software fue dictado por la tecnologa. Las primeras
microcomputadoras, por ejemplo, tenan cerca de 4 KB de memoria y carecan de hardware
protector. Los lenguajes de alto nivel y la multiprogramacin simplemente eran demasiado
para que un sistema tan diminuto pudiera manejarlos. A medida que evolucionaron las
microcomputadoras para convertirse en las computadoras personales modernas, adquirieron el
hardware y luego el software necesarios para manejar funciones ms avanzadas. Es probable
que este desarrollo contine durante varios aos, y que otros campos tambin cuenten con esta
rueda de reencarnacin, pero al parecer en la industria de las computadoras gira a mayor velocidad.

Você também pode gostar