Introducción:

Anuncio
Introducción:
Un sistema operativo es un programa que actua como intermediario entre el usuario de una computadora y el
hardware. El propósito de un sistema operativo es proveer un entorno en el cual el usuario pueda ejecutar
programas. El principal objetivo es hacer un sistema que convenga usar, el objetivo secundario es usar el
hardware de una computadora de manera eficiente.
¿Qué es un sistema operativo?
Un sistema operativo es una parte importante de un sistema de computación. Un sistema de computación se
puede dividir en cuatro componentes: el hardware, el sistema operativo, los programas de aplicación y los
usuarios.
El harware (unidad central de proceso, memoria y dispositivos de entrada/salida) provee los recursos de
computación básicos. Los programas de aplicación (como compiladores, bases de datos, juegos y demás
programas) definen la forma en la que estos recursos se utilizan para resolver los problemas de los usuarios.
Puede haber muchos usuario (personas, otras computadoras, máquinas) intentando resolver diferentes
problemas. Por lo tanto, puede haber varios programas de aplicación. El sistema operativo controla y coordina
el uso del hardware para los diferentes programas de aplicación que utilizan los diferentes usuarios.
Un sistema operativo no realiza una función útil en si, sino provee un entorno en el cual los demás programas
pueden realizar su trabajo.
Podemos ver a un sistema operativo como un contenedor de recursos. Un sistema de computación tiene
muchos recursos (hardware y software) que se pueden solicitar para resolver un problema: tiempo de CPU,
espacio de memoria, dispositivos de entrada/salida, etc. El sistema operativo actúa como administrador de
estos recursos y asigna los mismos a los distintos programas y usuarios para que puedan cumplir su tarea.
Algunas veces se producen conflictos al solicitar los recursos, el sistema operativo debe decidir que solicitud
es mas importante y asignar el recurso a ésta.
Desde un punto de vista distinto el sistema operativo debe controlar los dispositivos de entrada/salida y los
programas de los usuarios. Por lo que podemos decir que es un programa de control. Un programa de control
controla la ejecución de los programas de usuarios para prevenir errores y uso inapropiado de la computadora.
Sin embargo, en general, esta definición no se adecua a un sistema operativo. El objetivo principal de los
sistemas de computación es ejecutar programas de usuario y resolver los problemas en forma fácil.
El principal objetivo de un sistema operativo es que sea conveniente para el usuario . Los sistemas operativos
existen porque se supone que hacen fácil el uso de una computadora. Este punto de vista es claro cuando se
observa sobre computadoras personales (PC).
Un objetivo secundario es la operación eficiente de un sistema de computación. Este objetivo es muy
importante en sistemas grandes y sistemas multiusuarios, ya que estos son muy caros y se desea que trabajen
de la forma mas eficiente que sea posible.
Los primeros sistemas
Las primeras computadoras eran enormes máquinas que se ejecutaban desde una consola. El programador,
quien además operaba el sistema de computación, debía escribir un programa, y operarlo directamente desde
la consola. Primero, el programa debía ser cargado manualmente en la memoria, desde un panel (una
1
instrucción a la vez), desde una cinta de papel o desde tarjetas perforadas. Luego, se presionaba un botón para
que comience la ejecución del programa. Mientras el programa corría el operador monitoreaba su ejecución.
Si se producía un error, el programador detenía el programa, examinaba el contenido de la memoria y de los
registros, y depuraba el programa directamente desde la consola. La salida se imprimía, o se enviaba a cintas
de papel o tarjetas perforadas para luego imprimirlas.
Con el tiempo, se desarrolló software y hardware adicional. Lectores de tarjetas, impresoras de línea y cintas
magnéticas trajeron mas comodidad. Programas ensambladores, cargadores e intérpretes se diseñaron para
facilitarle la tarea al programador. Se crearon librerías con programas comunes que podían ser utilizadas por
otros programas sin tener que ser escritas nuevamente.
Cada dispositivo tiene sus propias características que requieren su programación. Se escribieron subrutinas
para cada uno de los dispositivos, las que se llamaron devices drivers. Un device driver sabe como usar los
buffers, flags, registros, bits de control y bits de estado de cada dispositivo. Cada dispositivo tiene su propio
driver. Una tarea simple como leer un carácter de una cinta de papel, implica una secuencia compleja de
operaciones de un dispositivo específico. Para no tener que escribir esa secuencia de operaciones cada vez que
se necesita hacer operación, se crearon los drivers y se utilizaron como librerías.
Luego, se desarrollaron compiladores como FORTRAN, COBOL y otros lenguajes, convirtiendo la tarea de
programación en algo mas fácil, pero la operación de la computadoras un poco mas dificil. Para preparar un
programa en FORTRAN para su ejecución, el programador debía primero cargar el FORTRAN en la
computadora, montar el driver que realiza las operaciones sobre la cinta magnética y luego cargar el programa
de otra cinta. El compilador FORTRAN produce salidas en código ensamblado (Assembler − codificado), el
cual necesita ser interpretado por el usuario. Este paso requiere que se cargue otra cinta con el intérprete
necesario para leer el código Assembler. Finalmente el código se enlaza a una librería, llamada código objeto.
Por último el programa objeto se ejecuta. Este se puede cargar en la memoria y ser depurado desde la consola
como antes.
Es notable destacar la cantidad de tiempo de configuración necesaria para ejecutar un trabajo. Si se detecta un
error ocurre en alguna parte del programa, se debía corregir y comenzar todos los pasos de nuevo.
Tipos de sistemas operativos:
1. Sistemas por lotes simples
Monitor residente
El tiempo de configuración de un trabajo fue realmente un problema. Mientras las cintas eran cargadas o los
programadores operaban la consola, la CPU permanecía ociosa.
Las tareas ahora se encontraban separadas, el programador ya no operaba la máquina. Tan pronto un trabajo
terminaba, el operador podía ejecutar el siguiente. El operador tenía mas experiencia en cargar cintas que el
programador, por lo que el tiempo de configuración se redujo considerablemente. Por supuesto, el operador no
podía depurar un programa incorrecto. En este caso, cuando el programa ejecutaba un error, éste era volcado
en memoria y el programador lo depuraba desde alli. El vuelco a memoria, permitían que el operador
continuara inmediatamente con el siguiente trabajo.
Por otro lado, los trabajos con necesidades similares eran procesados juntos (en forma de lote) y se ejecutaban
en la computadora en grupo. Por ejemplo, supongamos que el operador recibe un programa en FORTRAN,
uno en COBOL y otro en FORTRAN. Si se ejecutan los programas en ese orden, primero se tiene que
configurar para que trabaje en FORTRAN, luego se debe configurara la computadora para que trabaje en
COBOL y luego configurarla nuevamente para que trabaje en FORTRAN. En cambio, si se cambia el orden y
2
los dos trabajos en FORTRAN se agrupan en un lote, primero se ejecutan éstos y luego el programa en
COBOL, reduciendo considerablemente el tiempo de operación.
Pero aún existía un problema, cuando un programa detenía su ejecución (terminación normal o anormal), el
operador tenía que darse cuenta observando la consola, determinar por qué se había detenido el programa,
realizar un volcado a memoria si era necesario, cargar la lectora de cintas con el siguiente trabajo y poner de
nuevo en marcha la computadora. Durante esta transición la CPU permanecía inactiva. Para eliminar el
tiempo de inactividad se introdujo el secuenciamiento automático de trabajos y con el se crearon los primeros
y rudimentarios sistemas operativos. Lo que se deseaba era un procedimiento para la transferencia automática
del control de un trabajo al siguiente. Con este propósito se creo un pequeño programa llamado Monitor
Residente. Este programa se encuentra siempre en memoria.
Al iniciar la computadora el monitor residente se cargaba y controlaba la misma, transfiriendo el control a
cada programa. Cuando el programa se colgaba, el monitor residente tomaba nuevamente el control y
continuaba con el siguiente programa. Asi el monitor residente secuenciaba automáticamente un programa
tras otro.
Para que el monitor residente supiera que programas tenía que ejecutar se le indicaba una breve descripción de
que programas tenía que ejecutar y con qué datos. Esta información era suministrada por el operador a través
de tarjetas de control. Además del programa o datos de un trabajo se incluían tarjetas especiales que eran
directivas para el monitor residente, indicándole que programa debía ejecutar, en que orden y con que datos.
El problema era, como se determinaba que tarjetas eran de datos o programas y cuales de control, el problema
se solucionó identificándoles con un carácter especial o un patrón sobre la tarjeta.
Por lo tanto es monitor residente realizaba el secuenciamiento automático de trabajos según le indicaban las
tarjetas de control.
Sin embargo, incluso con este método, la CPU permanecía a menudo inactiva. El problema reside en que la
velocidad de los dispositivos mecánicos de E/S es inferior a la de los dispositivos electrónicos. La diferencia
de velocidad entre la CPU y los dispositivos de E/S puede ser de tres órdenes de magnitud.
El problema es que mientras los dispositivos de E/S trabajan la CPU permanece inactiva, esperando que la
operación de E/S termine; y mientras la CPU ejecuta, los dispositivos de E/S permanecen inactivos.
Operación off−line
Una solución fue reemplazar las lentas lectoras de tarjetas por unidades de cintas magnéticas; en lugar de
hacer que la CPU leyera directamente las tarjetas, estas se copiaban primero en una cinta magnética. Cuando
un programa necesitaba la entrada de una tarjeta se leía de la cinta. Las lectoras de tarjetas eran operadas
off−line, no por la computadora principal.
Se usaron dos enfoques del procesamiento off−line. Se desarrollaron dispositivos especializados con
salida/entrada directa de cinta magnética. El otro enfoque consistía en dedicar una computadora pequeña a la
tarea de copiar desde o en una cinta.
La principal ventaja era que los dispositivos de cinta eran mucho mas rápido que lectoras de tarjetas, por lo
tanto la CPU permanecía menos tiempo inactiva.
Para realizar este proceso en el monitor residente se modificaba el código que identificaba a la lectora de
tarjetas por uno que indicara que se debían leer de la cinta magnética, por lo que el programa de aplicación no
sufría ninguna modificación. La capacidad de ejecutar un programa con independencia del dispositivo de E/S
3
se llama independencia de dispositivos. Esto se logra haciendo que el sistema operativo determine que
dispositivos utilizará un programa cuando necesite E/S. Los programas se escriben para usar dispositivos de
E/S lógicos.
Buffering (uso de memoria intermedia)
El buffering trata de mantener ocupados tanto la CPU como los dispositivos de E/S. La idea es sencilla, los
datos se leen y se almacenan en un buffer, una vez que los datos se han leido y la CPU va a iniciar
inmediatamente la operación con ellos, el dispositivo de entrada es instruido para iniciar inmediatamente la
siguiente lectura. La CPU y el dispositivo de entrada permanecen ocupados. Cuando la CPU esté libre para el
siguiente grupo de datos, el dispositivo de entrada habrá terminado de leerlos. La CPU podrá empezar el
proceso de los últimos datos leídos, mientras el dispositivo de entrada iniciará la lectura de los datos
siguientes.
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.
El manejo de buffer es complicado. Uno de los principales problemas reside en determinar tan pronto como
sea posible que un dispositivo de E/S a finalizado una operación. Este problema se resuelve mediante las
interrupciones. Tan pronto como un dispositivo de E/S acaba con una operación interrumpe a la CPU, en ese
momento la CPU detiene lo que está haciendo e inmediatamente transfiere el control a una posición
determinada. Normalmente las instrucciones que existen en esta posición corresponden a una rutina de
servicio de interrupciones. La rutina de servicio de interrupción comprueba si el buffer no está lleno o no está
vacío y entonces inicia la siguiente petición de E/S. La CPU puede continuar entonces el proceso
interrumpido.
Cada diseño de computadora 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.
Spooling
El problema con los sistemas de cintas es que una lectora de tarjetas no podía escribir sobre un extremo
mientras la CPU leía el otro. Los sistemas de disco eliminaron esa dificultad, moviendo la cabeza de un área
del disco a otra.
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 tan
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.
La ventaja sobre el buffering es que el spooling solapa la E/S de un trabajo con la computación de otro. Es una
4
característica utilizada en la mayoría de los sistemas operativos.
Afecta directamente a las prestaciones. Por el costo de algo de espacio en disco y algunas tablas, la CPU
puede simultanear la computacion de un trabajo con la E/S de otros. De esta manera, puede mantener tanto a
la CPU como a los dispositivos de E/S trabajando con un rendimiento mucho mayor.
Además mantiene una estructura de datos llama job spooling, que hace que los trabajos ya leidos permanezcan
en el disco y el sistema operativo puede seleccionar cual ejecutar, por lo tanto se hace posible la planificación
de trabajos.
2. Multiprogramación
Es un método para incrementar el empleo de la CPU disponiendo en todo momento de algo que la CPU pueda
ejecutar.
El proceso es el siguiente, cuando un trabajo deja libre la CPU para realizar una E/S, el sistema operativo
cambia a otro trabajo y lo ejecuta. Cuando este último deba esperar por una E/S, la CPU pasará a otro trabajo
y asi sucesivamente.
Un sistema operativo multiprogramado es bastante sofisticado. Tener varios trabajos para ejecutar significa
tenerlos simultaneamente en memoria. Tener varios programas en memoria requiere una gestión de memoria,
además el sistema operativo deberá seleccionar para elegir uno de ellos. Esto se denomine planificación de
CPU.
• Tiempo compartido
Los sistemas batch se caracterizan por la falta de interacción entre el usuario y la computadora. El trabajo se
prepara y se deja. Al cabo de un cierto tiempo aparece la salida. Los sistemas interactivos suelen estar
compuestos por muchas acciones breves en las que los resultados del comando siguiente pueden ser
imprescindibles.
Un sistema operativo en tiempo compartido utiliza la planificación de CPU y la multiprogramación para dotar
a cada usuario de una pequeña parte de la computadora. En lugar de dejar que la CPU permanezca inactiva
cuando sucede esto, el sistema operativo cede rápidamente el control de la CPU al programa de otro usuario.
Permite que muchos usuarios compartan simultáneamente la computadora.
En estos sistemas operativos los trabajos deben permanecer en simultáneamente en memoria, lo cual requiere
de algunas técnicas de administración y protección de memoria. Tal que se pueda obtener un tiempo de
respuesta razonable, los trabajos son intercambiados entre la memoria principal y el disco, un método muy
utilizado es la memoria virtual, técnica que permite que un trabajo no esté completamente en memoria. La
principal ventaja es que permite que la memoria física tenga menor tamaño que el trabajo que se quiere
procesar.
Los sistemas operativos de tiempo compartido deben proveer mecanismos para la sincronización y
comunicación de trabajos, y deben asegurar que los trabajos no quedarán por siempre esperando que otro
termine.
4. Sistemas Multiprocesadores
Un sistema multiprocesador tiene mas de un CPU compartiendo memoria y periféricos. Las ventajas mas
evidentes son mayor potencia de computación y fiabilidad.
5
Estos sistemas asignan una tarea específica a cada procesador. Un procesador maestro controla el sistema, los
otros esperan al maestro o tienen tareas predefinidas. Este esquema define una relación maestro/esclavo.
Pueden usarse pequeños ordenadores situados a cierta distancia de la CPU principal, trabajando en lectoras de
tarjetas e impresoras en línea y transfiriendo estos trabajas a y desde la CPU principal. Los sistemas de tiempo
compartido se componen generalmente de un ordenador grande (principal) y un ordenador mas pequeño que
solo es responsable de las entradas / salidas sobre terminales.
Otra forma son las redes de ordenadores, donde se comunican muchos sistemas informáticos independientes,
transfiriéndose información. Sin embargo, cada sistema tiene su propio sistema operativo y trabaja
independientemente.
Podemos clasificar en sistemas multiprocesadores simétricos, en el cual cada procesador corre una copia
idéntica del sistema operativo y se comunica con los demás procesadores según sus necesidades; o
multiprocesadores asimétricos, en los cuales cada procesador tiene asignado una tarea predefinida. Un
procesador maestro controla el sistema.
• Sistemas distribuidos
La principal diferencia entre los sistemas de multiprocesadores y distribuidos, es que estos últimos no
comparten memoria y periféricos. Cada procesador tiene su propia memoria local. Los procesadores se
comunican entre si a través de varias líneas de comunicación, tales como líneas telefónicas o buses de alta
velocidad.
Los procesadores pueden variar en tamaño y función.
Las principales ventajas son:
• Recursos compartidos: si tenemos varias computadoras conectadas entre si, los usuarios de una
podrán utilizar los recursos de las otras.
• Velocidad de computación: Si una operación se puede sub−dividir en un número mas pequeño de
sub−operaciones que se ejecutan concurrentemente en varias computadoras, entonces el sistema
distribuido permite distribuir cada sub−operación en varias cpmputadoras.
• Confiablidad: si una computadora falla, las demás continuan operando sin problema. Si el sistema
está compuesto de un número muy grande de instalaciones autónomas, la falla de una no afecta a las
demás. Por el contrario, si cada computadora ejecuta una función crítica y la falla de esta puede
afectar al sistema general, se utiliza una configuración redundante (tanto de hardware como de datos)
para que el sistema pueda continuar con su ejecución en caso de falla.
• Comunicación: en muchas ocasiones los programas necesitan intercambiar datos con otros sistemas,
los sistemas distribuidos permiten la planificación de este intercambio.
• Sistemas de tiempo real
Se utilizan cuando hay requerimientos de tiempo muy rígidos en las operaciones o en el flujo de datos,
generalmente se utilizan como sistemas de control en una aplicación dedicada. Por ejemplo: sistemas de
control industrial, experimentos científicos y sistemas médicos.
Se pueden clasificar en:
Los sistemas de tiempo real por hard, garantizan que las tareas críticas se ejecutan en tiempo. Los datos son
almacenados en memorias no volátiles (ROM), no utilizan técnicas de memoria virtual ni tiempo compartido,
ambas técnicas no pueden ser implementadas en por hardware.
6
Los sistemas de tiempo real por soft, ejecutan tareas menos críticas y manejan técnicas de prioridades para la
asignación de tareas. Estos sistemas tienen menos utilidades que los implementados por hard, por ejemplo no
pueden utilizarse para control industrial y robótica. Pero si para multimedia, supervisión de controles
industriales y realidad virtual.
Estructura de los sistemas operativos
Si bien no todos los sistemas operativos tiene la misma estructura, la mayoría de los sistemas operativos
modernos poseen esta estructura.
Administrador de procesos
Un programa no hace nada a menos que sus instrucciones sean ejecutadas por la CPU. Un proceso necesita
ciertos recursos, tiempo de CPU, memoria, archivos y dispositivos de E/S, para completar sus tareas. Estos
recursos son reservados cuando se crea el proceso o bien se otorgan en tiempo de ejecución.
El sistema operativo es responsable de:
• La creación y eliminación de procesos de sistema y de usuarios.
• Detener y continuar ejecutando un proceso.
• Proveer mecanismos para sincronizar procesos.
• Proveer mecanismos para comunicar procesos.
• Proveer mecanismos para proteger procesos.
Administrador de memoria
El procesador central lee y escribe datos directamente en memoria. La memoria principal es generalmente el
único dispositivo de almacenamiento que la CPU puede acceder directamente. Por ejemplo para que la CPU
procese datos del disco, primero se deben cargar éstos en la memoria.
El sistema operativo es responsable de:
• Mantener historial de las partes de memoria que pueden ser accedidas concurrentemente y que
procesos pueden hacerlo.
• Decidir qué procesos se cargarán en memoria cuando se encuentre lugar disponible en ésta.
• Asignar y quitar espacio de memoria según las necesidades.
Administrador de almacenamiento secundario
Como la memoria principal es muy chica como para almacenar todos los datos y programas necesarios, la
computadora posee un almacenamiento secundario para volcar los datos de memoria no utilizados. Las
computadoras modernas utilizan el disco para este fin. La mayoría de los programas se almacenan en disco
hasta que son cargados en memoria.
El sistema operativo es responsable de:
• Administrar el espacio libre.
• Asignar espacio de almacenamiento.
• Organizar el disco.
Administrador de sistemas de E/S
7
Una de los propósitos del sistema operativo es ocultar las peculiaridades de los dispositivos de hardware al
usuario. Los sistemas de E/S consisten de:
• Un sistema de buffer intermedio.
• Una interfaz general.
• Manejadores de dispositivos de hardware específicos.
Administrador de Archivos
El administrador de archivos es uno de los componentes mas visibles de un sistema operativo. Las
computadoras pueden almacenar información en diferente tipos de medios físicos. Cintas magnéticas, discos
magnéticos y discos ópticos, son los más comunes. Cada uno de estos medios tiene sus propias características
y organización física. Cada medio se controla por un dispositivo. Las propiedades incluyen velocidad,
capacidad, velocidad de transferencia de datos y método de acceso (secuencial o random).
Por conveniencia el sistema operativo provee una vista lógica uniforme de la información,
independientemente de las características de cada dispositivo, utiliza la unidad archivo.
Un archivo es un grupo de información relacionada definida por su creador (programas o datos).
El sistema operativo es responsable de:
• Creación y eliminación de archivos.
• Creación y eliminación de directorios.
• Soporte de primitivas (instrucciones) para manipular archivos y directorios.
• Mapeo de archivos dentro de almacenamiento secundarios.
• Resguardar archivos en medios de almacenamiento estables.
Sistema de protección
Si un sistema tiene múltiples usuarios y permite múltiples usuarios concurrentes, los procesos deben estar
protegidos de otras actividades. Para tal propósito se provee de mecanismos que aseguran que los archivos,
segmentos de memoria, CPU y otros recursos pueden ser operados sólo por aquellos procesos que tienen
permiso otorgado por el sistema operativos.
Por protección se entiende a los mecanismos para controlar el acceso de programas, procesos y usuario a los
recursos definidos por el sistema.
Networking
Un sistema distribuido es una colección de procesos que no comparten memoria o recursos. Cada procesador
tiene su propia memoria local, y los procesadores se comunican con otros a través de varias líneas de
comunicación como ser buses de alta velocidad o líneas telefónicas.
Los procesadores en el sistema se conectan a través de redes de comunicación, las cuales se pueden configurar
de muchas maneras. La red puede esta completa o parcialmente conectada.
En un sistema distribuido los recursos se comparten entre varias estaciones, los sistemas operativos de red se
encargan de administrar el acceso a estos recursos.
Sistema intérprete de comandos
8
Uno de las funciones mas importantes de un sistema operativo es el intérprete de comandos, que es la interfaz
entre el usuario y el sistema operativo. Algunos sistemas operativos incluyen el intérprete en el kernel. Otros
como el DOS o UNIX, poseen un programa especial para cumplir esta función que se ejecuta cuando se inicia
el sistema.
Los sistemas operativos se diferencian en el área de interpretación de comandos, según el grado de facilidad
que presenten a los usuarios. Por ejemplo en Windows 95 para copiar un archivo de una unidad a otra el
usuario puede seleccionar con el mouse el archivo que desea copiar y arrastrarlo hasta su nuevo destino;
mientras que en DOS, debe ingresar una sentencia desde una pantalla de caracteres
Servicios de los sistemas operativos
Tipos de servicios
• Ejecución de programas. El sistema tiene que ser capaz de cargar un programa en memoria y
ejecutarlo.
• Operaciones de entrada/salida. Como un programa no puede acceder directamente a un dispositivo
de E/S el sistema operativo debe facilitarle algunos medios para realizarlo.
• Manipulación del sistema de archivos. El sistema operativo debe facilitar las herramientas
necesarias para que los programas puedan leer, escribir y eliminar archivos.
• Detección de errores. El sistema operativo necesita constantemente detectar posibles errores. Los
errores pueden producirse en la CPU y en el hardware de la memoria, en los dispositivos de E/S o
bien en el programa de usuario. Para cada tipo de error, el sistema operativo debe adoptar la iniciativa
apropiada que garantice una computación correcta y consistente.
Los sistemas operativos con usuarios múltiples pueden mejorara su eficiencia compartiendo entre ellos los
recursos de la computadora.
• Asignación de recursos. Cuando hay múltiples usuarios o múltiples trabajos ejecutándose al mismo
tiempo, hay que asignar recursos a cada uno de ellos. El sistema oper. Gestiona muchos tipos de
recursos diferentes.
• Contabilidad. Deseamos controlar los pasos de los usuarios que utilizan la computadora, en qué
medida lo hacen y qué tipo de recursos emplean.
• Protección. Cuando hay muchos trabajos ejecutándose al mismo tiempo no debe ser posible que un
trabajo interfiera en otro
Los sistemas operativos prestan sus servicios de muchas maneras. Dos métodos básicos de prestación de
servicios son las llamadas al sistema y los programas de sistemas.
Llamadas al sistema
Constituyen una interfaz entre los programas que se están ejecutando y el sistema operativo. Estas llamadas se
implementan generalmente por instrucciones en lenguaje de máquina.
Se pueden agrupar en tres categorías: control de procesos o de trabajos, manipulación de dispositivos y
archivos, y mantenimiento de información.
Control de procesos y de trabajos
• Finalización (normal o anormal)
• Cargar o ejecutar otro programa
• Crear nuevos procesos, terminar procesos
9
• Obtener atributos de un proceso. Establecer atributos de un proceso
• Esperar un tiempo
• Esperar un suceso
Manipulación de archivos
• Crear / Borrar un archivo
• Abrir / Cerrar un archivo
• Leer, escribir, reposicionar un archivo
• Obtener atributos de un archivo. Establecer atributos de un archivo.
Manipulación de dispositivos
• Solicitar dispositivo. Liberar dispositivo.
• Leer, Escribir, Reposicionar
• Obtener atributos de dispositivos. Establecer atributos de dispositivos.
Mantenimiento de información
• Obtener hora o fecha. Establecer hora o fecha.
• Obtener datos del sistema, modificar datos del sistema.
• Obtener atributos de proceso, archivos o dispositivos. Establecer atributos de proceso, archivos o
dispositivos.
Programas del sistema
Son un grupo de programas que resuelven problemas corrientes y ofrecen un entorno mas adecuado para el
desarrollo y la ejecución de programas.
Se pueden dividir en las siguientes categorías:
• Manipulación de archivos:: estos programas crean, borran, copian, renombran, imprimen, listan y
generalmente manejan archivos y directorios.
• Información de estados: usados para pedir la fecha, la hora, la cantidad de memoria disponible o el
espacio en disco.
• Modificación de archivos: editores de texto usados para crear y modificar el contenido de un archivo.
• Soporte al lenguaje de programación: compiladores, intérpretes y ensambladores que dan soporte a
lenguajes de alto nivel.
• Programas de aplicación: programas que son útiles para resolver problemas corrientes, como editores
de texto, programas de grafica, calculadoras, etc.
Uno de los programas mas importante en un sistema operativo es el intérprete de comando, éste se ejecuta al
iniciarse el sistema operativo, su función es sencilla, captar un comando dictado por el usuario, interpretarlo y
ejecutarlo. Por ejemplo el comando Delete archivo utilizado por DOS, para que este comando se pueda
ejecutar el intérprete de comandos debe contener el programa adecuado que elimine el archivo del disco
rígido.
Estructura del sistema
Los sistemas operativos actuales son grandes y complejos, éstos deben poseer una ingeniería correcta para su
fácil actualización y para que puedan cumplir su función correctamente. La estructura es generalmente
modular, cada módulo cumple una función determinada e interactúa con los demás módulos.
10
Estructura simple
EL sistema MS−DOS es, sin duda, el mejor sistema operativo para microcomputadoras. Sin embargo, sus
interfaces y niveles de funcionalidad no están bien definidos. Los programas de aplicación pueden acceder a
operaciones básicas de entrada / salida para escribir directamente en pantalla o discos. Este libre acceso, hace
que el sistema sea vulnerable, ya que un programa de aplicación puede eliminar por completo un disco rígido
por alguna falla. Además este sistema, también está limitado al hardware sobre el que corre.
Otra estructura simple es la utilizada por la versión original de UNIX, ésta consiste de dos partes separadas, el
kernel y los programas de sistemas. El kernel fue posteriormente separado en manejadores (drivers) de
dispositivos y una serie de interfaces. El kernel provee el sistema de archivos, la programación de CPU, el
administrador de memoria y otras funciones del sistema operativo que responden a las llamadas del sistema
enunciadas anteriormente.
Estructura por capas (layers)
Las nuevas versiones de UNIX se diseñaron para hardware mas avanzado. Para dar mayor soporte al
hardware, los sistemas operativos se dividieron en pequeñas partes. Ahora los sistemas operativos tienen
mayor control sobre el hardware y las aplicaciones que se ejecutan sobre éste.
La modularización de un sistema se puede presentar de varias formas, la mas utilizada es la de capas, la cual
consiste en dividir al sistema operativo en un número de capas. La capa de menor nivel es el hardware y la de
mayor nivel es la interfaz con el usuario.
La principal ventaja es que cada capa cumple con una serie de funciones y servicios que brinda a las otras
capas, esto permite una mejor organización del sistema operativo y una depuración más fácil de éste.
Cada capa se implementa sólo utilizando las operaciones provistas por la capa de nivel inferior. Una capa no
necesita saber como se implementan estas funciones, sólo necesita saber que operaciones puede realizar.
Máquina Virtual
Conceptualmente un sistema operativo está hecho de capas.
Un sistema operativo con Máquina Virtual puede crear la ilusión de múltiples procesos, cada uno ejecutando
en su propio procesador con su propia memoria (virtual). Por supuesto, normalmente, los procesos tienen
características adicionales, como llamadas al sistema y sistemas de archivos. En la maquina virtual no se
provee ninguna función adicional, pero si una interfaz que es idéntica al hardware.
Los recurso físicos de la computadora son compartidos para crear máquinas virtuales. La programación de
CPU puede ser usada para compartir la CPU y crear la apariencia de que los usuarios tienen su propio
procesador.
El principal problema con la máquina virtual es el disco. Supongamos que tenemos en una computadora solo
3 discos pero queremos utilizar 7 máquinas virtuales. Es claro que no podemos asignar un disco a cada
máquina virtual. Una máquina virtual necesita espacio en el disco para proveer memoria virtual y spooling. La
solución es proveer discos virtuales, los cuales son idénticos en todo excepto en tamaño.
Cada máquina virtual esta completamente aislada de las otras, por lo que no hay problemas de seguridad. Es
decir, no hay compartición directa de recursos de la computadora.
Los sistemas operativos actuales como Windows 95 y Windows NT, utilizan esta técnica.
11
Funciones y características de los Sistemas Operativos
1.4.1. Funciones
El Sistema Operativo crea el entorno en el que se ejecutan los procesos y para ello
ofrece tanto a los procesos como a los usuarios una serie de funciones que varían
mucho de unos sistemas a otros.
Todo Sistema Operativo tiene que tener 3 prestaciones fundamentales:
1. Permitir que existan n usuarios trabajando sobre m aplicaciones
(simultáneamente o no).
2. Además tiene que tener una serie de facilidades: procesadores de texto,
compiladores, ensambladores, montadores...
3. Debe asegurar un flujo continuo de trabajo en forma de tareas batch o
interactivas multiacceso.
Las funciones de todo Sistema Operativo conforman las distintas partes con que se
construye un SO. Las funciones que tiene un Sistema Operativo de propósito general
varían mucho de unos a otros, pero las que todos tienen que tener son las siguientes:
− Multiacceso
− Gestión de memoria
− Secuenciamiento de trabajos
− Control de procesos
− Intérprete de OSCL
− Gestión de operaciones de E/S
− Gestión de dispositivos y ficheros
− Gestión de interrupciones
− Planificación
− Control de errores y protección
− Contabilidad del sistema
12
• etc.
Aunque todas estas funciones las podemos resumir en 2 funciones básicas:
Funciones desde el punto de vista del usuario.
Van a transformar el hardware en
una máquina más tratable. Provisión de máquina virtual en varios aspectos:
1. En lo referente a la carga y ejecución de programas
− Gestión de memoria. Que habrá que presentarla en la forma y tamaño
adecuada a cada programa y usuario, dependiendo de sus necesidades y no
de las características concretas de cada ordenador.
− Mecanismos de comunicación o intercomunicación entre procesos. Es
decir, que deberá existir un lenguaje de control que transmita a la máquina
las peticiones del usuario: el OSCL. Además, a ser posible, deberá ser fácil y
rápido de manejar.
− Gestión de interrupciones
2. En cuanto a las operaciones de E/S. Se trata de liberar al usuario de programas
los mecanismos hardware, presentándole facilidades de E/S sencillas pero igual de
potentes.
3. En cuanto al manejo de ficheros y dispositivos. El Sistema Operativo debe:
a. Proporcionar acceso fácilmente a la información mediante nombres
simbólicos.
b. Mantener la integridad de la información.
4. En cuanto a la detección y manejo de errores y protección. Diferentes equipos
hardware proporcionan niveles de protección muy diferentes, es el Sistema
Operativo el que tendrá que incrementar el nivel de protección hasta el deseado.
_ Funciones internas. Dan soporte a la compartición de recursos.
Motivos de la compartición de recursos:
13
− Es más barato
− Hay recursos −como la información− que por naturaleza son compartidos
− Nos permite trabajar usando trabajos ya creados (reutilización)
− Eliminación de la redundancia de información
Problemas que acarrea la compartición de recursos:
− Cómo dar soporte a varios accesos y ejecuciones simultáneas
− Dónde ubicar los recursos compartidos y cómo protegerlos
HISTORIA DE WINDOWS
Windows 1 : Primera Versión de Microsoft Windows. Lanzado en 1985. Tomó un total de 55 programadores
para desarrollarlo y no permitía ventanas en cascada.
Microsoft comenzó el desarrollo del "ADMINISTRADOR DE INTERFAZ", que posteriormente derivó en
Microsoft Windows en Septiembre de 1981. La interfaz inicial tenía menús ubicados en la parte inferior de la
ventana y la interfaz sufrió un cambio en 1982 cuando se diseñaron los ahora comunes menús desplegables.
Esto ocurrió después de Apple Lisa, un experimento de Apple por llevar una interfaz gráfica al usuario. Sin
embargo, ocurrió antes de Macintosh.
Windows prometía una interfaz gráfica fácil de usar y la utilización de gráfica independiente del dispositivo,
así como el soporte de multitarea.
Las siguientes fueron las principales características de Windows 1.0:
• Interfaz gráfica con menús desplegables, ventanas en cascada y soporte para mouse.
• Gráficos de pantalla e impresora independientes del dispositivo.
• Multitarea cooperativa entre las aplicaciones Windows.
Windows 2 : Segunda versión de Microsoft Windows, lanzada en 1987. Windows 2 tenía más características
que Windows 1, tales como iconos y ventanas traslapdas. Cuando se lanzó Windows/386, Windows 2 fue
renombrado como Windows/286.
Nacen aplicaciones como Excel, Word for Windows, Corel Draw!, Ami, PageMaker).
Las siguientes fueron las principales características de Windows 2.0:
• Ventanas traslapadas
• Archivos PIF para aplicaciones DOS
Windows/386: En 1987 Microsoft lanzó Windows/386. A pesar de ser equivalente a su hermano
Windows/286, mientras corrían aplicaciones Windows, éste proveía la capcidad de ejecutar múltiples
aplicaciones DOS simultáneamente en memoria extendida
Las siguientes fueron las principales características de Windows/386:
14
• Múltiples máquinas virtuales DOS con multitarea.
Windows 3.0: Una completa reconstrucción de Windows con muchas nuevas facilidades tales como la
habilidad de direccionar más allá de 640k. Fue lanzado en 1990, y vendió más de 10 millones de copias.
Las siguientes fueron las principales características de Windows 3.0:
• Modo estándard (286), con soporte de memoria grnade (large memory).
• Medo Mejorado 386, com memoria grande y soporte de múltiples sesiones DOS.
• Se agregó en Administrador de Programas y de Archivos
• Soporte de Red
• Soporte para más de 16 colores.
• Soporte para combo boxes, menús jerárquico y los archivos .INI privados para capa aplicación empezaron a
cobrar más valor.
Windows 3.1: Una versión de Windows con muchas mejoras a Windows 3.0. Incluye soporte para fuentes
True Type y OLE. Esta versión fue testigo de la pérdida del modo real, lo cual significa que no corre en
procesadores Intel 8086.
Las siguientes fueron las principales características de Windows 3.1:
• No hay soporte para el modo Real (8086).
• Fuentes TrueType.
• Multimedia.
• OLE − Object Linking and Embedding
• Capacidad para que una aplicación reinicie la máquina.
• Soporte de API de multimedia y red.
Windows 3.11: Una actualización gratis de Windows 3.1, que contenía parches para errores menores.
Windows for Workgroups 3.1: Una versión de Windows 3.1 que trabja en reed. Aunque Windows 3.1, por
sí solo, puede trabajar en red, la instalación y configuración se mejoró con Windows for Workgroup.
Proveía capacidades para compatición punto a punto de archivos e impresoras. Los archivos podía ser
accedidos desde otras máquinas corriendo DOS o Windows.
Windows for Workgroups inclure dos aplicaciones adicionales: Microsoft Mail, para envió de correo
electrónico, y Schedule+, una agenda para trabajo en grupo.
Windows for Workgroups 3.11: Una significatica mejora para Windows for Workgroup 3.1 agregando
acceso a archivo de 32 bits y capacidad de fax.
Windows 95:(Win95) Sucesor de Windows 3.11 para PC's IBM. Se le conoció cómo "Chicago" durante su
desarrollo. Lanzado el 24 de Agosto de 1995. En contraste con las anteriores versiones de Windows, Win95 es
un sistema operativo más que una interfaz gráfica de usuario que corre sobre DOS.
Provee soporte para aplicaciones de 32 bits, multitarea con desalojo, soporte de red incorparado (TCP/IP,IPX,
SLIP, PPP, y Windows Sockets). Incluye MS−DOS 7.0 como una aplicación.
La interfaz gráfica, aunque similar a las previas versiones, fue significativamente mejorada.
Win32s : Win32s es un conjunto de librerías para Windows 3.1, la cual posibilita a los usuarios de correr la
15
mayorías de las aplicaciones de Windows NT en Windows 3.1. Si bien permite ejecutar aplicaciones escritas
para Windows NT, Win32s no da soporte para multitares con desalojo en Windows 3.1
Windows 98: Nueva versión del sistema operativo Windows. Podría decirse que es una compilación de
características. Muchas de estas características ya se encontraban en Internet Explorer 4.0 (al ser instalado con
la actualización de escritorio) y en Windows 95 OSR−2.
Permite soporte para la FAT32 (al igual que Win95 OSR−2) y el Active Desktop (de IE 4).
Soporte para USB y DVD.
Windows NT:(Windows New Technology, NT). El sistema operativo de 32 bits desarrollado originalmente
para que sea OS/2 3.0 antes que Microsoft e IBM discontinuaran su trabajo con OS/2. NT se diseñó para
estaciones de trabajo avanzadas (Windows NT 3.1) y para servidores (Windows NT 3.1 Advanced Server).
El primer lanzamiento fue Windows NT 3.1 en Septiembre de 1993.
A diferencia de Windows 3.1, que era una interfaz gráfica que corría sobre MS−DOS, Windows NT es un
sistema operativo por sí solo. El usuario lo ve como Windows 3.1, pero tiene multi−procesos real, seguridad y
protección de memoria.
Está basado en un microkernel, con un direccionamiento de hasta 4GB de RAM,soporte para sistemas de
archivos FAT,NTFS y HPFS, soporte de red incorporado, soporte multiprocesador, y seguridad C2
NT está diseñado para ser independiente del hardware. Una vez que la parte específica de la máquina − la
capa HAL (Capa de Absttracción de Hardware)− ha sido llevada a un máquina particular, el resto del sistema
operativo debería compilar teóricamente sin alteración. Se lanzó una versión de NT para correr en máquinas
Alpha de DEC.
NT necesitaba un 386, con al menos 12MB de RAM (preferible 16MB), y al menos 75MB de disco duro libre.
Windows NT 3.1: Primera versión de Windows NT (WNT). Existe una leyenda popular que dice que la
persona responsable del desarrollo de VMS en VAX de DEC fue también responsable de Windows NT, y si
cada letra de VMS es avanzada a la siguiente letra del abecedario se llega a WNT.
Windows NT 3.5: Una versión mucho más mejorada de NT 3.1. Desde estas versión Windows NT se vende
como "Windows NT 3.5 Workstation" y "Windows NT 3.5 Server".
Windows NT 4: La nueva versión de Windows NT, denominada "Cairo" en su etapa de desarrollo. Presenta
las mismas características de la interfaz de Windows 95. Tiene algunas modificaciones en su diseño con
respecto a las porciones GDI y USER del sistema operativo.
Windows CE: Un sistema operativo de la familia Windows y que fue el primero en no estar orientado a los
equipos de escritorio. Los dispositivos en los que Windows CE presta servicios son Handheld PC y PalmSize
PC. Windows CE también ha permitido la creación de un nuevo sistema denominado AutoPC, que consiste de
un PC empotrado en un automóvil que va ubicado en donde actualmente va una radio. Permite controlar la
radio, CD y revisar el correo electrónico. Windows CE también permite la creación de aplicaciones en tiempo
real.
HISTORIA LINUX
Introducción
16
El padre de Linux es Linus Torvalds, un programador finlandés de 21 años que inicialmente no tenía más
pretensión que 'divertirse' creando un sistema operativo para su uso personal. Torvalds
colocó Linux en Internet para que cualquiera lo bajara gratis, en 1991, y desde entonces participan en su
desarrollo cientos de voluntarios. Hoy Linux se difunde más rápido que cualquier otro sistema operativo, es
venerado por una comunidad de diez millones de usuarios y comienza a verse como una alternativa real a
Windows. Esta es su historia.
1991
− En abril, Linus Torvalds comenzó a crear un programa que varios meses después se convertiría en Linux, un
sistema operativo Unix para PC (Unix es un sistema operativo usado en estaciones de trabajo y otros
computadores de alto rendimiento; hay muchas versiones de Unix). Linux nació como un pasatiempo de
Torvalds, que en esa época tenía 21 años y estudiaba segundo año de ciencias de los computadores en la
Universidad de Helsinki (Finlandia); su intención inicial no era crear un sistema operativo, sino experimentar
creando software para manejar ciertas funciones básicas del PC que había comprado cuatro meses antes (un
sistema operativo es el programa que controla el funcionamiento de un computador). La inquietud surgió
porque el sistema
operativo que usaba en su PC, llamado Minix, era una versión de Unix limitada, y él necesitaba algo mejor;
Torvalds no usaba DOS o Windows porque le parecían −aún hoy− sistemas pobres y poco confiables (Minix
es un sistema operativo Unix experimental, creado por un profesor holandés para enseñar a los estudiantes el
funcionamiento de los sistemas operativos).
− A mediados del año, el programa estaba avanzado y Trovalds comenzó a pensar seriamente en que podría
crear el kernel de un nuevo sistema operativo, similar a Minix pero mejor (el kernel es el corazón de un
sistema operativo). Trovalds no tenía grandes pretensiones; él dice que no pensó en crear Linux para que fuera
un sistema operativo profesional, sino que lo diseñó para su uso personal. Sin embargo, poco a poco su
pasatiempo se fue convirtiendo en un proyecto más serio.
− El 5 de octubre, Trovalds publicó en un grupo de noticias sobre Minix, en Internet, un mensaje en el que
anunció la creación de Linux, un sistema operativo para PC basados en procesadores Intel 386. El mensaje
decía que el sistema (Linux versión 0.02) estaba todavía en desarrollo, pero ya funcionaba, y lo ofrecía gratis
a cualquiera que deseara bajarlo. También invitó a los programadores interesados en sistemas operativos a
usarlo, y enviarle correcciones y mejoras para incluirlas en la próxima versión. Ese fue un suceso clave en la
historia de Linux; gracias a
Internet, Linux pronto se convertiría en un fenómeno mundial.
1992
− En enero, Linux tenía cerca de 100 usuarios, y varios de ellos ya participaban en el desarrollo de Linux con
mejoras y correcciones que enviaban a Torvalds por Internet. Él lanzó ese mes la versión 0.12 de Linux; esa
fue la primera versión que incluyó partes desarrolladas por otros programadores y la primera que realmente se
desempeñaba mejor que Minix en ciertos aspectos.
− Microsoft lanzó Windows 3.1.
− El número de usuarios de Linux comenzó a crecer rápidamente, y no era extraño que tuviera gran acogida.
Al igual que Torvalds, muchos estudiantes de sistemas y gomosos de la computación amaban los sistemas
operativos Unix por su estabilidad y potencia, pero estos eran inalcanzables porque una versión comercial de
Unix costaba en esa época 4.000 o 5.000 dólares, y casi todas funcionaban exclusivamente en estaciones de
trabajo de 10.000 o más dólares (no en PC). Linux, en cambio, era un sistema Unix gratuito, y funcionaba en
PC basados en procesadores Intel (386, 486, etc.).
− A medida que creció el número de usuarios, también aumentaron los programadores voluntarios que se
17
involucraron en el desarrollo de Linux. Torvalds distribuyó Linux bajo un tipo de licencia llamada GPL, que
permite a cualquier persona bajar, usar, modificar e incluso vender Linux, sin pagar un peso; la única
condición es que los cambios o mejoras que una persona o compañía realicen en Linux también deben ser
públicos. Es generó un fenómeno de colaboración mundial sin precedentes. Programadores de todo el planeta
enviaron a Torvalds mejoras para el kernel,
reportaron errores y comenzaron a crear controladores de dispositivos para Linux. Se calcula que al final de
1992 Linux tenía aproximadamente 1.000 usuarios.
1993
− Se estima que este año Linux completó 20.000 usuarios en el mundo, y más de 100 programadores
contribuyeron en su desarrollo. Para poder manejar esas colaboraciones, Torvalds delegó las labores de
revisión del código de programación de Linux a cinco personas, que se convirtieron en sus `oficiales'
principales. A diferencia de los programas comerciales, que se actualizan cada dos o tres años, en el mundo
Linux aparecen actualizaciones y mejoras menores cada pocas semanas; eso ha permitido que Linux
evolucione rápidamente.
− Microsoft lanzó Windows NT, una versión de Windows para servidores y estaciones de trabajo (es, por ello,
rival de los sistemas operativos Unix).
• − En marzo se lanzó la primera versión 'completa' del sistema operativo de Torvalds: Linux 1.0. Esta
versión ofreció soporte a redes de computadores, e incluyó docenas de utilidades, programas de
desarrollo de aplicaciones y otras herramientas.
− Se fundó Red Hat Software, una empresa que hoy es el principal distribuidor de Linux. Aunque
Linux se puede bajar gratis de Internet, hay docenas de empresas −como Red Hat Software y
Caldera− que elaboran sus propias versiones, y las venden en CD−ROM, junto con manuales, soporte
técnico y programas adicionales (esto es lo que se conoce en el mundo de Linux como una
distribución). Estas distribuciones cuestan entre 10 y 70 dólares, dependiendo de la empresa.
− Este año Linux completó aproximadamente 100.000 usuarios.
1995
− En agosto, Microsoft lanzó Windows 95.
− A finales de este año Linux tenía aproximadamente 500.000 usuarios.
1996
− El 9 de junio se lanzó la versión 2.0 de Linux. Una de las principales novedades fue el soporte a
multiprocesamiento simétrico (el sistema aprovechaba el poder de computadores con más de un procesador).
Además, Linux 2.0 no solo trabajaba en PC con procesadores Intel x86 (como el 386, 486 y Pentium), sino
también en estaciones de trabajo con procesadores Alpha.
− Se calcula que este año Linux completó 1,5 millones de usuarios.
1997
− Linus Torvalds se fue a vivir a Santa Clara (California, Estados Unidos), debido a que fue contratado por
una compañía llamada Transmeta (es una empresa de chips, que no está relacionada con Linux). Sin embargo,
Torvalds continuó encabezando el equipo de gente que se encarga del desarrollo del kernel de Linux.
18
− La firma de investigaciones Datapro dijo que Linux era el segundo sistema operativo más popular en los
servidores web de Internet, después de Solaris (un sistema Unix de Sun Microsystems).
− Se estima que Linux completó 3,5 millones de usuarios. Este año se lanzó la versión 2.1.
1998
− Varios de los principales fabricantes de programas para el mercado corporativo, como Oracle, Informix,
Computer Associates (CA) y Netscape, anunciaron que lanzarán versiones para Linux de sus productos. El
respaldo de estas empresas ha sido clave para la consolidación de Linux en las empresas.
− En junio, Microsoft lanzó Windows 98.
− En septiembre, Intel Corporation y Netscape anunciaron una inversión de capital en la empresa Red Hat
Software. Este hecho fue muy importante para aumentar la credibilidad de Linux, debido a que Intel y
Netscape son dos de los líderes de la industria de los computadores.
− En diciembre, Corel Corporation lanzó una versión para Linux de su procesador de palabra WordPerfect 8.
El programa se colocó en Internet para que los usuarios lo pudieran probar gratis durante 90 días, y en los
primeros seis meses lo bajaron un millón de personas.
− A finales de 1998, Linux dominaba cerca del 17 por ciento del mercado de sistemas operativos para redes,
según la empresa de investigación de mercados International Data Corporation (IDC).
− Se calcula que Linux completó 7,5 millones de usuarios. Y el número de programadores que participan en el
desarrollo y pruebas del programa creció a 10.000.
1999
− En enero se lanzó la versión 2.2 de Linux, que ofreció un mejor rendimiento y soporte para procesadores
Sparc, Motorola 68000, PowerPC y MIPS. Esta versión, al igual que la 2.0, soporta computadores con 8
procesadores, pero el multiprocesamiento es mucho
más eficiente en la versión 2.2.
− Corel Corporation anunció que antes de terminar este año lanzará Corel Linux, una distribución de Linux
dirigida a usuarios de PC. Aunque hay muchas empresas que ofrecen versiones comerciales de Linux, esta
tiene gran relevancia por estar dirigida a usuarios
comunes y por ser producida por uno de los más grandes fabricantes de software del mundo. Corel también
dijo que en el año 2000 lanzará una versión para Linux del programa gráfico más importante del mundo
Windows, CorelDraw, lo mismo que una versión de su paquete de programas Corel WordPerfect Suite.
− Linus Torvalds dijo que a finales de 1999 se lanzará la versión 2.4 del kernel de Linux. La versión 2.4 (la
actual es la 2.2.11) mejorará el soporte a multiprocesamiento simétrico, y soportará tecnologías como
Universal Serial Bus (USB) y PCMCIA (actualmente tienen soporte, pero por medio de programas
adicionales).
− Actualmente, Linux tiene gran acogida y un futuro prometedor. Se calcula que cuenta con más de diez
millones de usuarios. Además, trabaja en los principales tipos de procesadores: Intel x86, Motorola 680x0,
MIPS, PowerPC (los que usan los Macintosh),
Alpha y Sparc (estos dos últimos son procesadores de 64 bits, más potentes que los chips Intel x86). Incluso,
hay una versión que funciona en el computador de mano PalmPilot. De otro lado, varios de los principales
fabricantes de computadores, como Dell Computer, Compaq y Hewlett−Packard, venden equipos que traen
19
Linux preinstalado.
UNIX: El fenómeno
Los orígenes de UNIX se remontan al año 1962 en el que el CTSS y el MIT se encuentran investigando en
áreas de tiempo compartido y protección. En 1965, Bell Labs (la división de investigación de AT&T), General
Electric y el MIT se encuentran trabajando en un macroproyecto llamado MULTICS, previsto para desarrollar
una gran potencia de cálculo y almacenamiento de muchos usuarios. De este proyecto, se obtuvieron
interesantes resultados (capacidad de multiproceso, árbol de ficheros, shell); pero, como todo proyecto
gigante, su complejidad desbordó al equipo que lo emprendió (seguramente no habían estudiado cibernética o
teoría de complejidad) así que en 1969 fue abandonado. El caso, es que una de las mejores "cosas" que
salieron de allí fue un tal Ken Thompson, un tanto "mosqueado", eso sí, pero con ideas propias que le llevaron
a desarrollar ese mismo año un sistema de ficheros propio. A Thomsom, en realidad, lo que le interesaba era
derrotar al imperio Klingom jugando al Star Trek, así que se montó una simulación de la galaxia que quitaba
el aliento en un sistema GECOS. Y si no lo quitaba, al menos eso le pareció a una tal Dennis Ritchie, que
pasaba por allí y también veía Star Trek. El caso es que homson encontró un PDP−7 (otro ordenador más
potente) y construyó para él su sistema de ficheros para poder jugar mejor con Ritchie sin que nadie les viera.
Bueno, esta es la leyenda que dice que los origenes de UNIX vienen "de Vulcano". Puede que no fuera así,
pero lo cierto es que muchos grandes avances han surgido del desarrollo que grandes hombres han hecho para
su disfrute en ratos de "ocio" y este fue uno de ellos. Sea como fuere, en el añoo '71, Ritchie y Kernigham
crean y utilizan el lenguaje C en un PDP−11 (algo así como un AT), lenguaje nacido para la programación de
sistemas. As¡, dos años después en 1973, Ritchie y Thompson re−escriben su engendro en lenguaje C, pero
esta vez desarrollan un sistema multiusuario. UNIX había nacido. El sistema, nacido del trabajo y la ilusión de
sólo dos hombres, demostró ser algo tan bueno que ese mismo año Bell Labs contaba con 25 instalaciones
funcionando con UNIX.
En 1974 aparece un artículo en las comunicaciones del ACM (Association for Computer Machinery) y se
distribuye a las universidades. En 1977 ya son 500 los centros y 125 la universidades que utilizan el sistema.
Su expansión es fulgurante ya que se distribuye sin licencias y con fuentes. Entre 1977 y 1982 se combina con
un sistema comercial y nace UNIX System III. Ya
en 1984 existen 100.000 sistemas UNIX en todo el mundo.
Paralelamente en Berkeley...
Entre las universidades a la que llego UNIX, se encontraba la University of California Berkeley. Allí se
modificó el sistema incorporando una variante notable: la utilización de memoria virtual paginada. Así en
1978 surge UNIX 3BSD (Berkeley Software Distribution). En 1980 DARPA (Defense Advanced Research
Projects Office), verdadero motor de investigación en
USA, (sí, sí, la de la famosa DARPA InterNet, que pasó a ARPANet o ARPA Internet y de ahí a sólo
internet), subvenciona el desarrollo de 4BSD. Poco después surge 4.1BSD incorporando nuevas utilidades
como el clásico editor vi y la shell csh. En 1982 SUN desarrolla para sus arquitecturas el sistema SunOS
basado en la versión BSD. Un año después surge la versión 4.2BSD que incorpora DEC en VAX y adopta
SUN Microsystems. 1984 marca un nuevo hito en la historia de UNIX ya que SUN desarrolla los conceptos
de RPC (Remote Procedure Call) y NFS (Network File System) y los incorpora a SunOS.
Panorama actual: familias de UNIX
Cada fabricante ha ido desarrollando sus estándares: AT&T SVID, el interfaz SYSTEM V; HP, UP−UX (tipo
SYSTEM V); DEC, ULTRIX (tipo 4.2BSD); Microsoft, XENIX; e IBM, AIX. Como se puede ver, en líneas
generales, existen dos tipos de UNIX: tipo BSD y tipo SYSTEM V. También existen implementaciones de
tipo académico, como MINIX, desarrollada por Tanembaum con afán didáctico en 1983; o XINU,
20
desarrollada por Comer en 1984. La razón de los distintos nombres que recibe el sistema es que UNIX es una
marca registrada de AT&T. Así, cada implementación recibe el suyo propio.
En la actualidad Berkeley acaba de anunciar la salida de 4.4BSD y su retirada del mundo UNIX, por lo que el
futuro es de SYSTEM V. SUN, por ejemplo, ha pasado ya a este sistema en la última versión de su S.O.
Solaris. Sin embargo, en los últimos años se ha buscado la convergencia de los sistemas. As¡, desde el punto
de vista de programación, BSD ha ganado la
batalla ya que su interfaz de sockets a pasado a ser el medio clásico de comunicación entre procesos. En su
momento, los usaremos.
Se pueden encontrar muchos otros UNIX: SCO, NetBSD, FreeBSD, LINUX, GNU (...) y cada vez más para
el mundo PC.
En este momento nos detendremos para dirigir una breve mirada a LINUX.
Cronología
1969 Desarrollo original por Thompson y Ritchie (Laboratorios Bell AT&T) sobre un PDP−7.
1970 Versión de 2 usuarios sobre DEC PDP−11.
1971 Versión multiusuario sobre PDP−11/40,45,70.
1973 Re−escritura del S.O. en C (Kernighan, Ritchie) ya que originalmente estaba programado en
ensamblador. De esta forma
se podía transportar a otras máquinas.
1974 Empieza la explotación comercial (25.000 dólares) de las fuentes.
1975 Versión 6 de UNIX y cesión a Universidades para su enseñanza.
1983 Aparece el UNIX System V (ATT) con soporte para mensajes y memoria compartida. También aparece
una versión
para PC: XENIX (Microsoft).
1989 UNIX System V, R4 con soporte para RFS, Streams, Redes y Tiempo Real.
En 1993 Novell compra UNIX a la compañía AT&T
En 1994 Novell le da el nombre "UNIX" a X/OPEN
En 1995 Santa Cruz Operations le compran UnixWare a Novell. Santa Cruz Operations y Hewlett−Packard
anuncia que desarrollarán conjuntamente una versión de Unix de 64−bit.
En 1996 International Data Corporation prevee que en 1997 habrá mas de 3 millones de computadoras con
Unix a nivel
mundial.
21
Documentos relacionados
Descargar