Anda di halaman 1dari 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 figura 1-2.

Unidad de cinta

Cinta ~)| Impresora

Cinta de entrada

del sistema

(a)

(b)

(c)

(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 llevaba 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 tarjeta $RUN, que peda al sistema operativo ejecutar el programa con los datos que venan enseguida. 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

HISTORIA DE LOS SISTEMAS OPERATIVOS

11

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 Trabajo 1 Sistema Operativo Particiones de Memoria

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 diseadores 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 palabras 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 sigui una serie de otras PDP (a diferencia de la familia IBM, todas incompatibles) que culminaron 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 historia 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 versiones (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 susceptibles 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 pequeo 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 Internet 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 conservando una buena parte de la estructura subyacente de MINIX y UNIX (en el que se bas el primero). 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.

Anda mungkin juga menyukai