Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
La importancia de los sistemas operativos nace históricamente desde los años 50,
cuando se hizo evidente que el operar un ordenador por medio de tableros enchufables
en la primera generación y luego por medio del trabajo en lote en la segunda
generación se podía mejorar notoriamente, pues el operador realizaba siempre una
secuencia de pasos repetitivos, lo cual es una de las características contempladas en
la definición de lo que es un programa. Es decir, se comenzó a ver que las tareas
mismas del operador podían plasmarse en un programa, el cual a través del tiempo y
por su enorme complejidad se le llamó "Sistema Operativo". Así, tenemos entre los
primeros sistemas operativos al Fortran Monitor System (FMS) y el IBSYS.
Actualmente los sistemas operativos se clasifican en tres tipos: sistemas operativos por
su estructura (visión interna), sistemas operativos por los servicios que ofrecen y
sistemas operativos por la forma en que ofrecen sus servicios (visión externa).
Estructura Monolítica.
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente
por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma
que cada una puede llamar a cualquier otra. Las características fundamentales de este
tipo de estructura son:
Estructura Jerárquica.
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los
sistemas, se hizo necesaria una mayor organización del software, del sistema
operativo, donde una parte del sistema contenía subpartes y esto organizado en forma
de niveles.
Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas
estuviera perfectamente definida y con un claro interface con el resto de elementos.
Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el
primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de
Dijkstra, que se utilizó con fines didácticos. Se puede pensar también en estos
sistemas como si fueran `multicapa'. Multics y Unix están en esa categoría.
Cliente-Servidor(Microkernel).
El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que
puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas.
Este sistema sirve para toda clase de aplicaciones; por tanto, es de propósito general y
cumple con las mismas actividades que los sistemas operativos convencionales.
El núcleo tiene como misión establecer la comunicación entre los clientes y los
servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un
programa de aplicación normal es un cliente que llama al servidor correspondiente para
acceder a un archivo o realizar una operación de entrada/salida sobre un dispositivo
concreto. A su vez, un proceso cliente puede actuar como servidor para otro. Este
paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final,
ya que el núcleo provee solamente funciones muy básicas de memoria, entrada/salida,
archivos y procesos, dejando a los servidores proveer la mayoría que el usuario final o
programador puede usar. Estos servidores deben tener mecanismos de seguridad y
protección que, a su vez, serán filtrados por el núcleo que controla el hardware.
Actualmente se está trabajando en una versión de UNIX que contempla en su diseño
este paradigma.
Esta clasificación también se refiere a una visión externa, que en este caso se refiere a
la del usuario, el cómo accesa a los servicios. Bajo esta clasificación se pueden
detectar dos tipos principales: sistemas operativos de red y sistemas operativos
distribuidos.
En el primer caso tenemos, por ejemplo, el control de los cajeros automáticos. Ahí no
es posible ni eficiente mantener un control centralizado, es más, no existe capacidad de
cómputo y de entrada/salida para dar servicio a los millones de operaciones por minuto.
En el segundo caso, supóngase que se tienen en una gran empresa varios grupos de
trabajo; cada uno necesita almacenar grandes cantidades de información en el disco
duro con una alta seguridad y disponibilidad. La solución puede ser que para cada
grupo de trabajo se asigne una partición del disco duro en servidores diferentes, de
manera que si uno de los servidores falla, no se deje dar el servicio a todos, sino sólo a
unos cuantos y, más aún, se podría tener un sistema con discos en espejo (mirror) a
través de la red, de manera que si un servidor se cae, el servidor en espejo continúa
trabajando y el usuario no se da cuenta de estos fallos, es decir, obtiene acceso a
recursos en forma transparente.
Los sistemas distribuidos deben de ser muy seguros, ya que si un componente del
sistema falla, otro componente debe de ser capaz de reemplazarlo. Entre los diferentes
Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-
MC, Mach, Chorus, Spring, Amoeba, Taos, etc.
Proceso
Uno de los conceptos mas importantes que gira entorno a un sistema operativo es el de
proceso. Un proceso es un programa en ejecución junto con el entorno asociado
(registros, variables ,etc.).
El corazón de un sistema operativo es el núcleo, un programa de control que reacciona
ante cualquier interrupción de eventos externos y que da servicio a los procesos,
creándolos, terminándolos y respondiendo a cualquier petición de servicio por parte de
los mismos.
Prioridades
Todo proceso por sus características e importancia lleva aparejadas unas
determinadas necesidades de ejecución en cuanto a urgencia y asignación de
recursos.
Las prioridades según los sistemas operativos se pueden clasificar del siguiente modo:
Asignadas por el sistema operativo. Se trata de prioridades que son asignadas a un
proceso en el momento de comenzar su ejecución y dependen fundamentalmente de
los privilegios de su propietario y del modo de ejecución.
Todas las operaciones en las que participan procesos son controladas por la parte del
sistema operativo denominada núcleo (nucleus, core o kernel, en inglés). El núcleo
normalmente representa sólo una pequeña parte de lo que por lo general se piensa que
es todo el sistema operativo, pero es tal vez el código que más se utiliza. Por esta
razón, el núcleo reside por lo regular en la memoria principal, mientras que otras partes
del sistema operativo son cargadas en la memoria principal sólo cuando se necesitan.
Los núcleos se diseñan para realizar "el mínimo" posible de procesamiento en cada
interrupción y dejar que el resto lo realice el proceso apropiado del sistema, que puede
operar mientras el núcleo se habilita para atender otras interrupciones.
El núcleo de un sistema operativo normalmente contiene el código necesario para
realizar las siguientes funciones:
Manejo de interrupciones.
Creación y destrucción de procesos.
Cambio de estado de los procesos.
Despacho.
Suspensión y reanudación de procesos.
Sincronización de procesos.
Comunicación entre procesos.
Manipulación de los bloques de control de procesos.
Apoyo para las actividades de entrada/salida.
Apoyo para asignación y liberación de memoria.
Apoyo para el sistema de archivos.
Apoyo para el mecanismo de llamada y retorno de un procedimiento.
Apoyo para ciertas funciones de contabilidad del sistema.
El Kernel consiste en la parte principal del código del sistema operativo, el cual se
encargan de controlar y administrar los servicios y peticiones de recursos y de
hardware con respecto a uno o varios procesos. Se divide en 5 capas:
Nivel 1. Gestión de Memoria: que proporciona las facilidades de bajo nivel para la
gestión de memoria secundaria necesaria para la ejecución de procesos.
Nivel 2. Procesador: Se encarga de activar los espacios de tiempo para cada uno de
los procesos, creando interrupciones de hardware cuando no son respetadas.
Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos
de E/S requeridos por procesos.
Nivel 4. Información o Aplicación o Interprete de Lenguajes: Facilita la comunicación
con los lenguajes y el sistema operativo para aceptar las órdenes en cada una de las
aplicaciones. Cuando se solicitan ejecutando un programa, el software de este nivel
crea el ambiente de trabajo e invoca a los procesos correspondientes.
Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo
plazo y manipulación de archivos con nombre, va asignando espacio y acceso de datos
en memoria.
Orientados a Bloques.
Los dispositivos orientados a bloques tienen la propiedad de que se pueden
direccionar, esto es, el programador puede escribir o leer cualquier bloque del
dispositivo realizando primero una operación de posicionamiento sobre el dispositivo.
Los dispositivos más comunes orientados a bloques son los discos duros, la memoria,
discos compactos y, posiblemente, las unidades de cinta.
Orientados a Caracteres.
Los dispositivos orientados a caracteres son aquellos que trabajan con secuencias de
bytes sin importar su longitud ni ninguna agrupación en especial. No son dispositivos
direccionables. Ejemplos de estos dispositivos son el teclado, la pantalla o display y las
impresoras.
La clasificación anterior no es perfecta, porque existen varios dispositivos que generan
entrada o salida que no pueden englobarse en esas categorías. Por ejemplo, un reloj
que genera pulsos. Sin embargo, aunque existan algunos periféricos que no se puedan
catalogar, todos están administrados por el sistema operativo por medio de una parte
electrónica - mecánica y una parte de software.
Manejadores de Interrupciones.
El primer objetivo referente a los manejadores de interrupciones consiste en que el
programador o el usuario no debe darse cuenta de los manejos de bajo nivel para los
casos en que el dispositivo está ocupado y se debe suspender el proceso o sincronizar
algunas tareas. Desde el punto de vista del proceso o usuario, el sistema simplemente
tardó más o menos en responder a su petición.
Manejadores de Dispositivos.
El sistema debe proveer los manejadores de dispositivos necesarios para los
periféricos, así como ocultar las peculiaridades del manejo interno de cada uno de
ellos, tales como el formato de la información, los medios mecánicos, los niveles de
voltaje y otros. Por ejemplo, si el sistema tiene varios tipos diferentes de discos duros,
para el usuario o programador las diferencias técnicas entre ellos no le deben importar,
y los manejadores le deben ofrecer el mismo conjunto de rutinas para leer y escribir
datos.
Para la salida, el proceso es análogo. En este caso los datos de salida se descargan en
otro buffer hasta que el dispositivo de salida pueda procesarlos. Este sistema soluciona
en forma parcial el problema de mantener ocupados todo el tiempo la CPU y los
dispositivos de E/S, ya que todo depende del tamaño del buffer y de la velocidad de
procesamiento tanto de la CPU como de los dispositivos de E/S.
Cada diseño de ordenador tiene su propio mecanismo de interrupción, pero hay varias
funciones comunes que todos contemplan.
El buffering puede ser de gran ayuda pero pocas veces es suficiente. En un sistema de
discos, las tarjetas se leen directamente desde la lectora sobre el disco. La posición de
las imágenes de las tarjetas se registran en una tabla mantenida por el sistema
operativo. En la tabla se anota cada trabajo una vez leído. Cuando se ejecuta un
trabajo, sus peticiones de entrada desde la tarjeta se satisfacen leyendo el disco.
Cuando el trabajo solicita la salida, ésta se copia en el buffer del sistema y se escribe
en el disco. Cuando la tarea se ha completado se escribe en la salida realmente.
Esta forma de procesamiento se denomina spooling: utiliza el disco como un buffer muy
grande para leer por delante como sea posible de los dispositivos de entrada y para
almacenar los ficheros hasta que los dispositivos de salida sean capaces de aceptarlos.
Administración de Archivos
Uno de los problemas más frecuentes en el manejo de archivos son los "deadlock". Un
deadlock es una situación no deseada de espera indefinida y se da cuando en un grupo
de procesos, dos o más procesos de ese grupo esperan para llevar a cabo una tarea
que será ejecutada por otro proceso del mismo grupo: entonces se produce el bloqueo.
Los bloqueos se dan tanto en los sistemas operativos tradicionales como en los
distribuidos, solo que en estos últimos es más difícil de prevenirlos, evitarlos e incluso
detectarlos, y si se los logra detectar es muy complicado solucionarlos ya que la
información se encuentra dispersa por todo el sistema.
Una vez que un deadlock se detecta, es obvio que el sistema tiene problemas y lo
único que resta por hacer es una de estas dos cosas: tener algún mecanismo de
suspensión o reanudación que permita copiar todo el contexto de un proceso
incluyendo valores de memoria y aspecto de los periféricos que esté usando para
reanudarlo otro día, o simplemente eliminar un proceso o arrebatarle el recurso,
causando para ese proceso la pérdida de datos y tiempo.
Todos los mecanismos dirigidos a asegurar el sistema informático sin que el propio
sistema intervenga en el mismo se engloban en lo que podemos denominar seguridad
externa. La seguridad externa puede dividirse en dos grandes grupos:
Seguridad física. Engloba aquellos mecanismos que impiden a los agentes físicos la
destrucción de la información existente en el sistema; entre ellos podemos citar el
fuego, el humo, inundaciones descargas eléctricas, campos magnéticos, acceso físico
de personas con no muy buena intención, entre otros.
Seguridad de administración. Engloba los mecanismos más usuales para impedir el
acceso lógico de personas físicas al sistema. Todos los mecanismos dirigidos a
asegurar el sistema informático, siendo el propio sistema el que controla dichos
mecanismos, se engloban en lo que podemos denominar seguridad interna.
Después de tres décadas de haber escapado de los laboratorios Bell, el UNIX sigue
siendo uno de los SO más potentes, versátiles y flexibles en el mundo de la
computación. Su popularidad se debe a muchos factores, incluidas su portabilidad y
habilidad de correr eficientemente en una inmensa variedad de máquinas
computadoras. Descrito frecuentemente como un sistema "simple, potente y elegante"
el UNIX es hoy el corazón que late en el seno de millones de aplicaciones de telefonía
fija y móvil, de millones de servidores en universidades, centros académicos, grandes,
medianas y pequeñas empresas, el SO cuyo desarrollo viene de la mano del de
Internet y que alberga a millones de servidores y aplicaciones de la red de redes. Sin
UNIX, no cabe duda, el mundo de la informática hubiera sido otro.
El origen del UNIX se remonta a los finales del año 1969, al renacer de las cenizas de
un fracasado intento en los Laboratorios Bell de producir un SO multitarea. En esos
tiempos remotos los sistemas eran desarrollados para computadoras específicas, por lo
que eran necesarios, incluso, intérpretes en una misma compañía para trabajar
programas iguales de una computadora a otra. MULTICS fue el resultado del esfuerzo
conjunto de un grupo de investigadores de los Laboratorios Bell y la General Electrics,
que si bien fue funcional, económicamente era inviable. "A pesar de que MULTICS no
podía manejar muchos usuarios simultáneos, al menos nos era de utilidad a nosotros,
aunque a costes exorbitantes", explicaría luego Dennis Ritchie, uno de sus fundadores.
Como todo mito que rodea a un producto genial, el UNIX tiene el suyo propio. En la
primavera de 1969, Thompson, Ritchie y Rudd Canaday, cofundador de Sun-
Microsystems, intercambiaban y filosofaban sobre cómo debiera ser un SO de un
ordenador. Después de una larga tormenta de ideas, Canaday tomó el teléfono y llamó
a la Bell para dictar las notas que había tomado. Acrónimos como "inode"y "eyen" entre
sus notas, fueron la base del UNIX y el primer documento de trabajo, a decir de
Thompsom, para desarrollar el sistema.
Este mecanismo preparó el escenario para que la PDP-7 sirviera de anfitrión al sistema
de ficheros cuyas notas habían sido escritas en aquella primavera del 69. En el verano
de ese mismo año, Thompson y Ritchie empezaron a implementar el sistema operativo,
llamado "sistema de tiza" ya que éste tomaba forma luego de numerosas sesiones de
pizarra entre ambos investigadores. "Destiné una semana de trabajo para cada módulo:
el sistema operativo, el editor, el shell y el ensamblador", diría Thompsom. Primero los
requerimientos del sistema, en particular los procesos, luego un pequeño grupo de
herramientas del sistema para copiar, imprimir, borrar, etc. Trabajado sobre GECOS el
sistema de la GE635 y luego transportado a la PDP7, el nuevo SO estaba casi listo.
Una vez completado el ensamblador, el sistema podía soportarse a sí mismo. Había
nacido el UNIX.
Concatenando procesos
El otro paso importante, y que más que una solución puntual constituyó toda una
filosofía en el diseño del software, fue llevar al nuevo SO el concepto de la
concatenación de procesos, el llamado "pipes concept". La habilidad de encadenar en
una misma línea de comandos varios procesos fue una innovación que tiene su origen
en una idea de McIlroy, cuyas conferencias sobre el uso de macros y flujos de datos
para producir un determinado resultado ya eran conocidas.
No fue hasta tiempo después que el UNIX saltaría los muros de la Bell para insertarse
en el mundo. Durante un semestre sabático para Ken Thompson entre 1976 y 1977,
fue como profesor invitado en el Departamento de Ciencias de la Computación de la
Universidad californiana de Berkeley. Lo que por supuesto impartió fue precisamente el
sistema UNIX, cuya versión 6 desarrolló durante ese tiempo. Enseguida fue recibido
con mucho éxito y se fue propagando por toda la comunidad académica. Una vez de
vuelta a los Laboratorios, la versión 6 ya había sido enriquecida en la propia
universidad, lo que dio origen a lo que luego se conoció como Berkeley Software
Distribution (BSD) versión 4.2, comprada por muchas otras universidades. La
universidad de Berkeley jugó un papel importante en el desarrollo y extensión del UNIX,
cuyas licencias a importantes instituciones académicas, de negocios y militares como el
DARPA, propiciaron un acelerado trabajo en protocolos como el TCP/IP y el nacimiento
de Internet.
La entrada al mundo comercial no fue más que una evolución lógica, después del paso
de los primeros licenciados del mundo universitario criados bajo el manto del UNIX, al
sector empresarial. Lo que hizo del SO un programa popular fue su habilidad de
multitarea, señoreando por aquel entonces el mundo de los mini y los mainframes, su
portabilidad por medio de los distintos fabricantes de ordenadores y su capacidad de
correo electrónico. Una vez llegado a este punto todo estaba listo para la aparición de
las innumerables versiones del sistema, las batallas legales para las licencias, la
producción de estaciones de trabajo para UNIX por parte de IBM, Sun, NCR y HP y con
ellas nuevas versiones comerciales, y así sucesivamente en espiral ascendente.
Mucho del progreso de la computación en el último cuarto del siglo pasado está
íntimamente ligado a la influencia que el UNIX tuvo en la industria de la computación.
Estaba embebido de ideas visionarias, toda una llamada a la abertura y generalidad
entre sistemas, toda una fuerza, que aún mueve el desarrollo de la informática
moderna. Como diría uno de sus creadores, " ...a 30 años de su nacimiento, el UNIX
sigue siendo un gran fenómeno".
"…Yo realmente no sigo mucho lo que hacen los otros sistemas operativos. Yo no
compito, sólo me preocupo con hacer de Linux un producto cada vez mejor que sí
mismo, no respecto a otros. Y honestamente no veo nada interesante desde el punto
de vista técnico, tampoco (en FreeBSD 5.0 y Windows XP)"
Linus Torvalds, 10 de octubre del 2001, OSNews.
La fascinación de los medios por Linux viene dada, entre otras cosas, por ser un
proyecto de ingeniería de software distribuido a escala global, esfuerzo mancomunado
de más de 3 000 desarrolladores y un sin número de colaboradores distribuidos en más
de 90 países. El rango de participantes en la programación del Linux se ha estimado
desde unos cuantos cientos hasta más de 40 000, ya sea ofreciendo código, sugiriendo
mejoras, facilitando comentarios o describiendo y enriqueciendo manuales. De hecho,
se cuenta que el mayor soporte técnico jamás diseñado de manera espontánea y
gratuita pertenece a este SO.
Escribir la historia de UNIX sin mencionar a Linux es pecado: realmente merece todo
un capítulo propio. Salido de una raíz común, hoy el Linux comparte un tanto por ciento
no despreciable del mercado de los SO, con un crecimiento que ha llegado a preocupar
al gigante Microsoft.
Su versión 1.0, salida en marzo de 1994 ofreció básicamente las mismas facilidades
que el UNIX,
incluyendo soporte multitarea, tratamiento de memoria virtual y soporte TCP/IP. Estaba
constituido por unas 175 000 líneas de código. Ya su versión 2.0, de junio de 1996,
ofrecía procesamiento de 64 bits, multiprocesamiento en paralelo y soporte avanzado
de redes. El número de líneas de código se había triplicado: 780 000, y en la versión de
julio de 1998 la cifra sobrepasaba el millón y medio, 17% específicos de la arquitectura
del SO, 54% en manipuladores y el 29% el núcleo del kernel y el sistema de ficheros.
Ello ha sido posible por el simple hecho de que Linux es más que un SO: es una fuente
inagotable en permanente evolución por miles de programadores a escala mundial.
Torvalds, uno de estos alumnos frustrados, decidió realizar su propia versión de MINIX
y dejar libre su código fuente para ser copiado por cualquiera y así saciar la sed de
desarrollo de aquellos que se veían impedidos de hacerlo.
"¿Se lamenta de los días del MINIX-1.1, cuando los programadores escribían sus
propios manipuladores de dispositivos? ¿Está usted sin un proyecto interesante y
muriéndose de deseos por un SO que pueda modificar a su antojo? ¿Se siente
frustrado cuando encuentra que todo trabaja bien en su MINIX?… Entonces este
mensaje puede ser para usted :-)", escribiría en un foro de discusión por Internet.
Adicionalmente, el mensaje estimulaba a todo aquel que se sintiera capaz de adicionar
nuevas funciones, mejoras, sugerencias y manuales de ayuda, con la única condición
de que el resultado fuera a su vez distribuido libremente. La piedra había echado a
rodar montaña abajo. En los siguientes 30 meses se desarrollarían hasta 90 versiones
del nuevo SO, finalizando en 1994 con la definitiva, llamándola Linux versión 1.0.
A medida que el UNIX tomaba fuerza y seguía atado a las nuevas computadoras de
diferentes fabricantes, la cultura del libre intercambio se vio amenazada entre su
comunidad. Surge así, por idea de Richard Sallman, el proyecto GNU en 1984 para
crear sistemas operativos libres que hicieran posible la distribución y trabajo de
colaboración entre diferentes desarrolladores. Para evitar que el mecanismo fuese
deformado se instituyó lo que Sallman llamó "Copyleft": usted puede distribuir, copiar,
modificar el software, obligando a su vez a las derivaciones de éste a cumplir con los
mismos requisitos. El marco legal y social para la distribución y copia gratuita estaba
instituido. Huelga mencionar las facilidades que aportó Internet cuando Torvalds
decidió hacer su anuncio: ya no era sólo un grupo privilegiado con acceso a máquinas
computadoras grandes en laboratorios estratégicos o grandes universidades los que
podían colaborar con un código de programa. Internet elevó el intercambio a un marco
global.
Otra decisión brillante de Torvalds fue establecer una nomenclatura paralela para cada
tipo de versión del SO. Para ello se separaron en versiones pares o impares según la
estabilidad y seguridad de la misma o la inclusión de código experimental o alguna
nueva rutina en fase de estudio. Ello hacía posible disponer de dos tipos de
colaboradores: los que buscaban una versión estable del programa o los que preferían
probar con nuevas estructuras, innovar y llevar sus sistemas hasta el extremo. Ello
enriqueció al Linux extraordinariamente.
Es interesante conocer, además, que los programadores suelen escribir código para
Linux en aras de resolver sus propios problemas. El mismo Torvalds buscaba un SO
para su 386 y su anunció explícitamente invitaba a "modificarlo según sus necesidades
". Así, cuando la comunidad de programadores aceptó el reto de Torvalds, cada cual
escribió sus propios manipuladores de dispositivos. Por ejemplo, un programador
alemán diseñó el driver para teclado en su idioma y éste fue incluido en la versión de
diciembre del 91. Hasta nuestros días se mantiene la misma filosofía: cada cual trabaja
en las áreas que le interesa.
He aquí la historia. Hoy Linux es una alternativa para muchos e indispensable para
otros. Su importancia no puede ser relegada: los RED HAT, los SUSE, los Mandrake
pueblan miles de servidores por todo el planeta. ¿Lo mejor? Pues que Linus Torvalds
sigue enviando mensajes a su lista, del tipo: "...mi prioridad personal no es este tipo de
comportamiento, por tanto sería bueno que alguien implementara esta opción...".
"...Microsoft siempre ha sido una compañía optimista, que cree que el software puede
crear herramientas que realmente no tengan ninguna atadura en términos de lo que es
posible..."
Bill Gates, Future Forum, septiembre del 2001
De todos los sistemas operativos que se han hecho famosos a lo largo del desarrollo
de la informática en el ocaso del siglo pasado, sin duda, ningún otro posee la
peculiaridad del Windows de Microsoft.
Rodeado por todo tipo de mitos acerca de su emprendedor y ambicioso creador,
solidificado sobre la base de un sistema DOS, cuya irrupción en el primer PC tenía más
de suerte que de propósito, amparado por disfrutar de un férreo y despiadado control
de mercado, es, hoy por hoy, odiado o amado, el sistema operativo más extendido del
planeta.
Fundación
La Compañía fue fundada en 1975 por William H. Gates III y Paul Allen. Ambos se
habían conocido durante su época de estudiantes por su afición común a programar
con una computadora PDP-10 de Digital Equipment Corporation. Eran años en que la
revista Popular Electronics dedicaba su portada a la Altair 8800, para muchos el primer
ordenador personal (PC). El artículo de dicha revista animó a Gates y Allen a
desarrollar la primera versión del lenguaje de programación BASIC para el equipo
Altair. Con un ojo para los negocios fuera de lo común, el dúo le compró la licencia de
este software a Micro Instrumentation and Telemetry Systems (MITS), la empresa
fabricante del Altair, y fundaron Microsoft (originalmente Micro-soft) en Albuquerque,
Nuevo México. Su idea: desarrollar versiones de BASIC para otras compañías del
sector. Apple Computer, fabricante del equipo Apple II; Commodore, fabricante del
PET, y Tandy Corporation, fabricante del equipo Radio Shack TRS-80, todas
compañías creadas por aquel entonces, fueron los primeros clientes de Microsoft. En
1977 Microsoft lanzó al mercado su segundo producto: Microsoft FORTRAN, otro
lenguaje de programación, y pronto sacó versiones del lenguaje BASIC para los
microprocesadores 8080 y 8086.
MS-DOS
¿Por qué el MS-DOS quedó estigmatizado con las sucesivas generaciones de PCs
hasta no hace mucho?
La respuesta a esta pregunta tiene un poco que ver con la esencia misma del origen de
los ordenadores personales. Cuando IBM fabricó el PC hizo que el usuario antes de
cargar algún SO, realizara lo que se llamó el POST (Power On Self Test), que
determinaba los dispositivos disponibles (teclado, vídeo, discos, etc.) y luego buscaba
un disco de arranque. Estas funciones eran realizadas por un conjunto de instrucciones
incorporadas en la máquina mediante una ROM. Luego quedó escrito que siempre
hubiera algún tipo de software en el sistema aún sin ser cargado el SO. Entre las
rutinas del POST tenemos las de revisión del sistema, inicialización y prueba de
teclado, habilitación de vídeo, chequeo de la memoria y la rutina de inicialización que
preparaba a la máquina para ejecutar DOS. Después que las pruebas de arranque han
sido ejecutadas y el sistema está cargado, la ROM aún sigue siendo importante debido
a que contiene el soporte básico de entrada y salida (BIOS). La BIOS provee un
conjunto de rutinas que el SO o los programas de aplicación pueden llamar para
manipular el monitor, teclado, discos duros, discos flexibles, puertos COM o
impresoras.
El trato de IBM con Microsoft tenía entre otras condiciones una particularidad
interesante: la administración directa de las tarjetas adaptadoras podría ser manejada
sólo por programas que IBM proveía con la ROM del ordenador. DOS sería escrito para
utilizar estos servicios. De esta manera, si IBM decidía cambiar el hardware, éste podía
embarcar nuevos modelos de chips con cambios en la BIOS y no requería que
Microsoft cambiara el SO. Ello posibilitó, junto con la clonación de la arquitectura de
IBM incluido el BIOS, que el DOS se extendiera por el universo, aun cuando el Gigante
Azul rompiera su alianza con Microsoft, en 1991, para producir su propio SO. Microsoft
había hecho un trabajo estratégico brillante e IBM había perdido la supremacía de los
ordenadores para siempre.
Realmente, el núcleo del DOS estaba contenido en un par de archivos ocultos llamados
IO.SYS y MSDOS.SYS en las versiones de DOS realizadas por Microsoft, e
IBMBIO.SYS e IBMDOS.SYS, para las versiones de DOS hechas por IBM bajo licencia
Microsoft. Los servicios de DOS eran solicitados cuando una aplicación llamaba a la
interrupción 21 (INT 21) reservada para estos fines. Esta buscaba un punto de entrada
del administrador de servicios de DOS en una tabla y saltaba a la rutina en el módulo
MSDOS.SYS. En otros SO, la aplicación debía realizar una llamada al sistema (system
call) para requerir servicios, como, por ejemplo, en UNIX.
Otro rasgo distintivo del MS-DOS fue la forma en el manejo de la estructura de ficheros:
la FAT (File Allocation Table) o Tabla de Asignación de Archivos, que dividía al disco
en subdirectorios y archivos. Criticados por muchos como un sistema poco seguro y no
eficiente, la herencia sobrevivió por mucho tiempo y no fue hasta época reciente que
Microsoft decidió reemplazarlo por un sistema más robusto, el NTFS que destinó a la
gama alta de sus SO: el Windows NT.
La historia del MS-DOS comienza en 1981, con la compra por parte de Microsoft, de un
sistema operativo llamado QDOS, que tras realizar unas pocas modificaciones, se
convierte en la primera versión del sistema operativo de Microsoft MS-DOS 1.0
(MicroSoft Disk Operating System)
A partir de aquí, se suceden una serie de modificaciones del sistema operativo, hasta
llegar a la versión 7.1, a partir de la cual MS-DOS deja de existir como tal y se convierte
en una parte integrada del sistema operativo Windows.
En 1982, aparece la versión 1.25, con la que se añade soporte para disquetes de doble
cara.
El año siguiente, 1983, el sistema comienza a tener más funcionalidad, con su versión
2.0, que añade soporte a discos duros IBM de 10 MB, y la posibilidad de lectura-
escritura de disquetes de 5.25" con capacidad de 360Kb. En la versión 2.11 del mismo
año, se añaden nuevos caracteres de teclado.
Es en 1988 cuando Microsoft saca al mercado su versión 4.0 y con ella el soporte para
memoria XMS y la posibilidad de incluir discos duros de hasta 2GB; cabe destacar que
esta versión fue la mayor catástrofe realizada por la empresa, ya que estaba llena de
bugs, fallos, etc... esto se arregló en 1989 con el lanzamiento de la versión 4.01 que
arreglaba todos estos problemas y fallos.
En 1993, aparece MS-DOS 6.0 con muchas novedades, entre ellas la utilidad
Doublespace que se encargaba de comprimir el disco y así tener más espacio
disponible; también se incluyó un antivirus básico (MSAV), un defragmentador
(DEFRAG), un administrador de memoria (MEMMAKER) y se suprimieron ciertas
utilidades antiguas, ya que haciendo un mal uso de ellas podían destruir datos: estas
utilidades eran JOIN y RECOVER entre otras.
En el mismo año sale la versión 6.2 que añade seguridad a la perdida de datos de
Doublespace, y añade un nuevo escáner de discos, SCANDISK, y soluciona problemas
con DISKCOPY y SmartDrive. En la versión 6.21 aparecida en el mismo año 1993,
Microsoft suprime Doublespace y busca una nueva alternativa para esta utilidad.
En el año 1995 aparece Microsoft Windows 95, que supone apartar a MS-DOS a un
segundo plano.
El sistema MS-DOS, no obstante, sigue estando presente con una nueva versión, la
7.0, con la que se corrigen multitud de utilidades y proporciona soporte para nombres
largos. Las utilidades borradas del anterior sistema operativo las podemos encontrar en
el directorio del cd de windows 95 \other\oldmsdos.
En 1997 aparece Windows 95 OSR2, y con él una revisión exhaustiva del sistema
DOS, añadiendo el soporte para particiones FAT32.
Hay que dejar constancia de que MS-DOS ha sido el sistema operativo utilizado por
prácticamente todos los usuarios de PC desde 1981 hasta la actualidad, utilizando
programas famosos para trabajar como el legendario WordPerfect 5.1, Works 2.0,
Comandante Norton, Autocad, Ability 2000 entre otros...
Windows
Paralelamente, Microsoft hizo su primera incursión en lo que luego se llamaría
Microsoft Windows en el año 1981 con el llamado Interface Manager, en tiempos en
que las interfaces gráficas de usuario, GUI, eran una quimera de lujo para muchos, en
tanto la computación estaba suscrita al área geográfica de los centros académicos,
grandes instituciones y empresas. Más que un SO, se trataba en realidad de una
interfaz montada sobre su estrenado DOS. Aunque los primeros prototipos usaban una
interfaz similar a una de las aplicaciones estrellas de la Compañía en aquel entonces,
el Multiplan, luego ésta fue cambiada por menúes pulldown y cajas de diálogo,
similares a las usadas en el programa Xerox Star del mencionado fabricante. Al sentir
la presión de programas similares en aquel entonces (recordemos que más que un SO,
Windows nació como una interfaz gráfica entre éste y el usuario), Microsoft anuncia
oficialmente Windows a finales del año 1983.
En ese momento, muchas compañías trabajan la línea de las interfaces gráficas, entre
ellas Apple, reconocida casi por todos como la primera, DESQ de Quraterdeck, Amiga
Workbech, NEXTstep, etc. Windows prometía una interfaz GUI de fácil uso, soporte
multitarea y gráfico. Siguiendo el rito de los anuncio-aplazamientos de Microsoft,
Windows 1.0 no llegó a los estantes de las tiendas hasta noviembre de 1985,
disponiendo de un soporte de aplicaciones pobres y un nivel de ventas pírrico. El
paquete inicial de Windows 1.0 incluía: MS-DOS Ejecutivo, Calendario, Tarjetero
(¿alguien realmente usó esto alguna vez?), el Notepad, Terminal, Calculadora, Reloj,
Panel de Control, el editor PIF (Program Information File), un spooler de impresión, el
Clipboard, así como el Windows Write y Windows Paint.
El Windows 3.0, que aparece en mayo de 1990, constituyó un cambio radical del
ambiente Windows hasta entonces. Su habilidad de direccionar espacios de memorias
por encima de los 640 k y una interfaz de usuario mucho más potente propiciaron que
los productores se estimularan con la producción de aplicaciones para el nuevo
programa. Ello, unido a la fortaleza dominante del MS-DOS, hizo que el Windows 3.0
se vislumbrara como el primer SO gráfico (siempre con el MS-DOS bajo su estructura)
marcado para dominar el mercado de las PCs en el futuro inmediato. Windows 3.0 fue
un buen producto, desde el punto de vista de las ventas: diez millones de copias. Todo
un récord.
Dos años después llegaría la saga del Windows 3.1 y 3.11, así como su variante para
trabajo en grupo. Con éste se hizo patente el traslado de la mayoría de los usuarios del
ambiente de texto que ofrecía el MS-DOS hacia el ambiente gráfico de la nueva
propuesta, olvidándonos todos paulatinamente del Copy A:\ *.* para sustituirlo por el
COPY AND PASTE. Las primeras aplicaciones "adquiridas y/o desplazadas" por
Microsoft ofrecidas como un todo único, el ambiente de RED peer to peer, los sistemas
de upgrade de una versión a otra y el tratamiento diferenciado para los revendedores y
los fabricantes OEM, caracterizaron los movimientos de Microsoft para afianzar el
mercado de su SO insignia. En el caso de la versión para trabajo en grupo, Microsoft
integró por primera vez su SO con un paquete de tratamiento para redes, lo que
permitió, sobre un protocolo propio, el compartir ficheros entre PCs (incluso corriendo
DOS), compartir impresoras, sistema de correo electrónico y un planificador para
trabajo en grupo. Sin embargo, lo realmente llamativo consistió en su plena integración
con el ambiente Windows y con ello garantizar, independiente de la calidad del
producto final, un seguro predominio.
Pero, ¿qué significó realmente Windows 95? En esencia, cuando Microsoft lo anunció
lo describió como un SO de 32 bits. En realidad, Windows 95 era un híbrido que
mezclaba códigos de 16 y 32 bits. Poseía capacidad de multitarea y multihilo, un
sofisticado sistema de ficheros y pleno soporte de red. Su lanzamiento se pregonaba
con la desaparición del MS-DOS, aunque en verdad la crítica no lo perdonó, pues traía
de fondo el viejo sistema DOS en su versión 7.0. Así Windows 95 tomaba el control
inmediatamente después de la secuencia de arranque, para dar lugar a una interfaz
totalmente mejorada y una filosofía de trabajo diferente.
Añádale la famosa promesa del "plug and play" y tendremos un timo de marketing bien
montado. Claro, en realidad la solución si bien novedosa y prometedora, era una meta
muy alta para Microsoft y los fabricantes de entonces. No sólo habría que garantizar la
compatibilidad de un legado de dispositivos de una variedad incontable, en plena
explosión y desarrollo de los periféricos en los PCs, sino que además habría que lidiar
con todo un arco iris de fabricantes y sistemas, que poco a poco se organizarían e
integrarían para sobrevivir sólo los más fuertes. Aún años después, el término plug and
play sigue mostrando sorpresas con algunas configuraciones o dispositivos, pero
aquellos primeros intentos felizmente quedaron atrás.
Una de las notas más contradictorias del nuevo SO fue la inclusión de un navegador
para Internet, el Internet Explorer, como una utililidad más del sistema. Esto no era más
que el resultado de una estrategia de mercado que Microsoft había aplicado desde sus
inicios: comprar las licencias de lo mejor de la competencia para integrarla a su SO o
desarrollar su propia versión y ofrecerla gratis como parte de su paquete completo,
para desplazar al que no quisiera vender. Comenzó la guerra de los browsers, que
finalmente ganaría el Explorer debido a la abismal ventaja que le ofrecía llegar de
manera natural al ordenador con cada nueva instalación de Windows.
El Windows 98 se ha mantenido hasta nuestros días y debe ser la última versión del
SO que quede vinculada a lo que fue la línea MS-DOS-Windows (salvando la variante
Millenium o Windows Me que no ha convencido a nadie) hasta su total sustitución por
Windows 2000 y el XP, en una serie de zigzagueantes cambios que deja a todos
adivinando si debe cambiar o no para la próxima versión. Pero tras este errático rumbo,
Microsoft persigue sólo una cosa: conservar la supremacía de los SO de por vida.
La saga NT
El NT 4.0 de nombre código Cairo, sale a luz en 1996. Por ahí leíamos que el nuevo
sistema operativo cumplía una fórmula muy sencilla: tomar un NT 3.51, sumarle los
service packs 1, 2 y 3 y mezclarlo con una interfaz a lo Windows 95 (incluido su recycle
bin, algo realmente útil para un sistema montado sobre NTFS). Un pasó más en la
integración del SO con Internet lo dio el NT 4.0 al incluir Internet Information Server,
servidor de Microsoft para soporte WEB, FTP, etc. como una utilidad más dentro del
paquete y que como la lógica indicaba engranaba con éste a las mil maravillas al
desplazar en eficiencia y velocidad cualquier producto externo. La cara "Windows 95"
se sobrepuso a un inicio incierto, ya que tuvo que vencer la desconfianza que pudo
haber generado. Téngase en cuenta que la familia NT estaba orientada a un cliente en
el que la estabilidad y seguridad del sistema eran el requisito número uno y ello
contrastaba con la experiencia que había tenido el 95. Sin embargo, el golpe fue genial.
Por primera vez, Microsoft mezcló la solidez con el fácil uso y desterró para siempre el
concepto impuesto hasta entonces de que para las grandes compañías y las grandes
empresas los servidores debían ser cosa de científicos de bata blanca. El crecimiento
de los usuarios NT se multiplicó desde ese momento. EL 4.0 se comercializaba en tres
versiones: Workstation, Server y Advanced Server para tres variantes de clientes tipo,
el profesional de las ingenierías, incluido la informática, la pequeña y mediana
empresas y la gran empresa.
La convergencia
El cierre de los noventa y el inicio de siglo sorprendió a Microsoft con serios problemas
legales, promesas de lanzamiento varias veces aplazadas y un nuevo cambio de
estrategia. Cuando se esperaba el 5.0 como el sucesor de gama alta, éste es
renombrado como Windows 2000 y la plataforma unificada en una sola. El 14 de
septiembre de 2000 sale el Millenium, no como un sucesor del 98, sino como un
producto orientado al usuario doméstico (interfaz de colores, mucha música y vídeo,
soporte para redes LAN inalámbricas, cortafuegos personales), nada del otro mundo,
con poca perspectiva de supervivencia, aunque esto siempre es una incógnita. En
cambio, Windows 2000 es la alternativa actual para la mayoría, en la fase justa de
emigrar de un 95 ó 98. Se ofrece en 4 clasificaciones: Windows 2000 Professional,
Windows 2000 Server (anteriormente NT Server), Windows 2000 Advanced Server
(anteriormente NT Advanced Server) y Windows 2000 Datacenter Server, un producto
nuevo, poderoso y muy específico con posibilidad de manejo de hasta 16 procesadores
simétricos y 64 Gb de memoria física.
Hay dos cuestiones a destacar en el XP: primero que parece ser la integración lógica y
perfecta a su plataforma de desarrollo para la red, eNET, promesa paradisíaca para
programadores y desarrolladores de aplicaciones, que como nos comentaba un
profesor estudioso del tema, constituye el primer gran esfuerzo de la compañía de
Redmond en el cual no ha intervenido la compra de una licencia a un tercero. Segundo,
la clave de habilitación en línea para la activación del producto, que con la justificación
de evitar su copia ilegal pretende mantener localizado y controlado a cada usuario del
sistema.