jueves, 7 de junio de 2012

Breve historia del sistema operativo

  Entender el sistema operativo es comprender el funcionamiento de toda la maquina, porque este es quien administra todas y cada una de las piezas de hardware y el software. En términos extremadamente simples; un sistema operativo es el gerente ejecutivo, es decir la parte que administra todo el software y el hardware. Siendo específicos controla todos los archivos, dispositivos, secciones de la memoria principal y cada segundo del tiempo de procesamiento; de igual forma controla quien puede utilizar el equipo y la forma en que eso sucede.

La base de la pirámide de la figura anterior muestra los cuatro administradores esenciales de un sistema operativo; los cuales son; la base de todos los sistemas operativos. Cada administrador trabaja de cerca con los demás sea cual sea el sistema operativo en cuestión.

Software del sistema operativo
Sin importar el tamaño o configuración del sistema, cada administrador de subsistema llevan acabo estas tareas:

  • Monitorizar continuamente sus recursos
  • Obligar al cumplimiento de las políticas que determinan quien obtiene que, cuando y cuanto
  • Asignarlos recursos cuando es necesario
  • Liberar el recurso -recuperarlo- cuando es conveniente

Una de las principales funciones del administrador de memoria es proteger el espacio en la memoria principal que ocupa el sistema operativo: no puede permitir que parte alguna de ese espacio sea alterada de manera accidental o propositiva. 

El administrador del procesador decide como asignar la unidad de procesamiento central (CPU) y controlar el estado de cada proceso.
Este administrador monitorea si se esta ejecutando un proceso o espera que termine la ejecución de un comando de lectura o escritura. Dado que maneja las transiciones de procesos de un estado a otro se puede comparar con un controlador de trafico. El administrador asigna el procesador y establece los registros y tablas necesarias; mas tarde, cuando la tarea a terminado o el tiempo de ejecución ha expirado lo recupera.

El administrador de dispositivos vigila todos los dispositivos, canales y unidades de control. Su tarea es escoger la manera mas eficiente de asignar los dispositivos del sistema (impresoras, terminales, unidades de disco, etc) con base en una política de programación escogida por los diseñadores del sistema. Este administrador asigna el dispositivo, lo inicializa y lo libera.

Sin embargo, no basta que cada uno de los administradores lleve acabo sus tareas individuales. También deben ser capaces de trabajar en conjunto con los otros administradores. Suponiendo que alguien escribe un comando para ejecutar un programa, el sistema debería realizar los siguientes pasos en secuencia

  1. El administrador de dispositivos recibe los impulsos eléctricos del teclado, los codifica para formar el comando y lo envía a la interfaz de comando del usuario, donde el administrador del procesador lo valida.
  2. Luego el administrador del procesador manda un mensaje de reconocimiento, para que aparezca en el monitor de vídeo, de manera que quien lo escribió sepa que se envío el comando
  3. Cuando el administrador del procesador recibe el comando, determina si hay que traer el programa correspondiente de donde este almacenado o si ya esta en la memoria, después de lo cual notifica al administrador apropiado
  4. Si el programa esta almacenado, el administrador de archivos debe calcular su localización exacta en el disco y pasar la información al administrador de dispositivos. Este lo recupera y envía el programa al administrador de la memoria el cual debe encontrar el espacio para el mismo y registrar su ubicación exacta en la memoria
  5. Una vez que el programa se halla en la memoria, el administrador de esta debe controlar su localización y progreso conforme lo ejecuta el administrador del procesador
  6. Cuando termina la ejecución del programa, este manda un mensaje de “terminado” de vuelta al administrador del procesador
  7. Por último el administrador del procesador manda el mensaje de “terminado” de vuelta al administrador de dispositivos, que lo muestra en el monitor para que el usuario lo vea

Aunque esta es una simplificación del proceso de un sistema operativo, sirve para identificar que ningún administrador puede trabajar solo, o por su parte.

Tipos de sistemas operativos

Los sistemas operativos de las computadoras grandes y pequeñas se ubican en cuatro clases, que se distinguen por su tiempo de respuesta y la forma en que se introducen los datos en el sistema:
  • Sistemas por lotes
  • Sistema interactivo
  • Sistema operativo multitarea
  • Sistema operativo en red
  • Sistema en tiempo real
  • Sistema mixto
  • Sistema operativo distribuido
  • Sistemas por lotes 
Estos existen desde las primeras computadoras, que se apoyaban en tarjetas perforadas o en citas para la entrada cuando se introducía una tarea mediante la agrupación de tarjetas en un paquete y se corría todo este a través de un lector como un grupo. Los sistemas por lotes de hoy no están limitados a tarjetas o cintas pero los trabajo todavía se procesan serie sin interacción del usuario.
La eficiencia del sistema se media por producción -esto es la cantidad de tareas completadas en una cantidad de tiempo, y el tiempo total se media en hora o a veces en días. Hoy en día no es común encontrar un sistema por lotes en funcionamiento.

Permiten la simulación de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.
Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria.

Sistemas interactivos

También conocidos como sistemas de tiempo compartido; dan un tiempo de retorno mas rápido que los sistemas por lotes, pero son mas lentos que los sistemas en tiempo real. Se introdujeron opara satisfacer las demandas de los usuarios que necesitaban un tiempo de retorno mas rápido al hacer el retorno al eliminar los errores de sus programas. El sistema requería el desarrollo de software de tiempo compartido, lo que permitía a cada usuario interactuar directamente con el sistema de computo vía comandos introducidos a través de un terminal del tipo maquina de escribir.

El sistema proporciona una retroalimentación inmediata al usuario, y el tiempo de respuesta puede medirse en minutos o incluso en segundos, esto según la cantidad de usuarios activos.

Sistemas en tiempo real

Estos son los más rápidos de los cuatro y se utilizan en entornos de tiempo critico donde los datos se deben procesar con suma rapidez porque la salida afecta decisiones inmediatas. Los sistemas de tiempo real se utilizan para vuelos espaciales, controladores de trafico, aeronaves de alta velocidad, procesos industriales, equipo médico y conmutación telefónica entre otros. Un sistema en tiempo real debe ser 100% sensible el 100% de las veces. El tiempo de respuesta se mide en fracciones de segundo, aunque en la práctica no se logra a menudo.
Si bien en teoría es posible convertir un sistema operativo de tipo general en un sistema en tiempo real, en la práctica la carga general de los sistemas de tipo general es tan grande que no se logra desempeños en tiempo real. Por lo tanto la mayor parte de los trabajos en tiempo real requiere sistemas operativos diseñados para llenar necesidades en tiempo real.

Sistema operativo multitarea o multiprogramación

Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización.
Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP.

Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea.

Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:
  • Mejora productividad del sistema y utilización de recursos.
  • Multiplexa recursos entre varios programas.
  • Generalmente soportan múltiples usuarios (multiusuarios).
  • Proporcionan facilidades para mantener el entorno de usuarios inndividuales.
  • Requieren validación de usuario para seguridad y protección.
  • Proporcionan contabilidad del uso de los recursos por parte de los usuarios.
  • Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real.
  • Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores
En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.

Sistemas operativos distribuidos

Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone 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.

Caracteristicas de los Sistemas Operativos distribuidos:

Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .
Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.

Objetivo clave es la transparencia.

Generalmente proporcionan medios para la compartición global de recursos.
Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).
Sistema operativo en red
Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.
El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.

Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.

Historia de los sistemas operativos

Los sistemas operativos han evolucionado con el paso de los años y desde la perspectiva histórica los sistemas operativos han estado íntimamente ligados con la arquitectura de las computadoras en las que se ejecutan. Por ello es necesario revisar las generaciones de las la computadora para ver que tipo de sistema operativo usaba.

La primera computadora digital verdadera fue la creada por Charles Babbage, quien aunque invirtió la mayor parte de su vida y su fortuna intentando construir su maquina analítica nunca logro que funcionara como debiera porque era mecánica por completo y la tecnología de su época no era capaz de construir los engranes y las ruedas necesarias con la suficiente precisión. A parte sobra decir que esta carecía de un sistema operativo.

Como nota histórica, Babbage se dio cuenta que necesitaría de software para su máquina analítica, así que contrato a una mujer llamada Ada Lovelace hija del afamado poeta ingles Byron, para serla primer programadora del mundo. El lenguaje de programación Ada® se llama así en su honor.

Primera generación: Tubos al vacío
Después de la infructuosa labor de Babbage, poco avanzo la construcción de computadoras deigitales antes de la segunda guerra mundial. A mediados de la década de 1940, Howard Aiken, en Harvard; Jhon Von Neumann, En el instituto de estudios avanzados de Princeton; Presper Eckert y William Mauchley, En la universidad de Pensilvania entre otros, lograron construir máquinas calculadoras. Las primeras empleaban relevadores mecánicos pero eran sumamente lentas, con tiempos de ciclos medios en segundos. Luego los relevadores fueron sustituidos por tubos la vacío; eran enormes; ocupaban recintos enteros y tenían decenas de miles de tubos al vacío, con todo eran millones de veces mas lentas que las computadoras personales mas económicas que se venden en la actualidad.

En esos tiempos, un solo grupo de personas diseñaba, construía, programaba, operaba y mantenia cada maquina. Toda la programación se hacia en lenguaje máquina absoluto, a menudo alambrando tableros de conexiones para controlar las funciones básicas de la máquina. No existían los lenguajes de programación. Nadie había oído hablar de los sistemas operativos. La forma de operación usual era que el programador reservaba un bloque de tiempo en una hoja pegada en la pared, bajaba al cuarto de la máquina, insertaba su tablero de conexiones e la computadora, y pasaba horas esperando a que ninguno de los tubos al vacío se quemara durante la ejecución de su programa. Casi todos los problemas eran cálculos numéricos simples como la preparación de tablas de senos, cosenos y tangentes así como logaritmos.


Para principios de la década de 1950, la rutina había mejorado un poco con la introducción de las tarjetas perforadas, Ahora era posible escribir programas y hacer que la máquina las leyera, en lugar de usar tableros de conexiones; por lo demás el procedimiento era lo mismo.

Segunda generación: Transistores y sistemas por lotes
La introducción del transistor a mediados de la década de 1950, altero el panorama de manera radical. Las computadoras se volvieron lo bastante fiables como para fabricarse y venderse a clientes comerciales con la expectativa de que seguirían funcionando el tiempo suficiente para efectuar algún trabajo útil. Por primera vez hubo una distinción entre programadores, operaqdores y personal de mantenimiento.

Estas máquinas eran llamadas mainframes o macrocomputadoras se alojaban en salas de computo especiales con aire acondicionado y las operaban grupos de operadores profesionales. Solo las grandes corporaciones y dependencias gubernamentales o universidades importantes podían pagar los millones de dolares que costaban. Para ejecutar un trabajo un programador escribía el programa en papel (en FORTRAN o en ensamblador) y luego lo perforaba en tarjetas. Seguido de esto llevaba el mazo de tarjetas al cuarto de entrada, lo entregaba a uno de los operadores y esperaba a que estuvieran listas las salidas.

Cuando la computadora terminaba un trabajo que estaba ejecutando, un operador tomaba las hojas de la impresora y las llevaba al cuarto de salida, donde el programador podía recogerlas. Luego tomaba uno de los mazos de tarjetas traídos del cuarto de entrada y lo colocaba en la lectora de la computadora. Si se necesitaba el compilador de FORTRAN, el operador tenia que traerlo de un archivero y colocarlo en la lectora. Se desperdiciaba mucho tiempo de computadora mientras los operadores iban de un lado a otro en el cuarto de máquinas.

En vista del elevado costo de los equipos, no es sorprendente que pronto se buscaran formas de reducir el espacio de tiempo. La solución por lo general fue el sistema por lotes. La idea básica era juntar una bandeja llena de trabajos en el cuarto de entrada y luego pasarlos a una cinta magnética, empleando una computadora pequeña y (relativamente) de bajo costo como la IBM 1401 , que era muy buena para leer tarjetas, copiar cintas e imprimir salidas, pero mala para los cálculos numéricos, otras maquinas mucho mas costosas como la IBM 7094, realizaban los cómputos propiamente dichos. Esta situación se muestra en la siguiente figura:

Después de cerca de cerca de una hora de reunir trabajos, la cinta se rebobinaba y se llevaba al cuarto de máquinas. Luego el operador cargaba un programa especial (el antecesor del sistema operativo actual) que leía el primer trabajo de la cinta y lo ejecutaba. Las salidas de grababan en una segunda cinta, en lugar de imprimirse. Una vez terminado el trabajo, el sistema operativo leía en forma automática el siguiente de la cinta y comenzaba a ejecutarlo. Una vez terminado todo el lote, el operador desmontaba todas las cintas de entrada y las de salidas, reemplazaba la cinta de entrada por otro lote y llevaba la cinta de salida a una 1401 para imprimir las salidas fuera de linea .

Tercera generación
A principio de la década de 1960, la mayoría de los fabricantes de computadoras tenían dos lineas de productos diferentes e incompatibles por completo. Por un lado estaban las computadoras científicas a gran escala como la 7094, orientadas a palabras, que se orientaba a cálculos numéricos en ciencia e ingeniería. Por otro lado estaban las computadoras comerciales como la 1401, orientadas a caracteres, que los bancos y las compañías de seguros utilizaban en forma amplia para ordenar e imprimir cintas.

El desarrollo y mantenimiento de dos lineas de productos totalmente distintas representaba costos muy altos. Además muchos clientes necesitaban al principio una maquina pequeña, pero mas adelante, al crecer, querian una de mayor tamaño que ejecutara todos sus antiguos programas, pero en menor tiempo.
IBM intento resolver ambos problemas de un solo golpe, introduciendo el Sistema/360. Este era una serie de maquinas de software compatible que iba desde el tamaño de la 1401, hasta otras mucho mas potentes que la 7094. Las máquinas solo diferían en el costo y desempeño. Puesto que todas las máquinas tenían la misma arquitectura y conjunto de instrucciones, los programas escritos para una máquina podían ejecutarse en todas las demás, al menos en teoría. 

Además la 360 se diseño para que pudiera manejar cómputos tanto científicos como comerciales. Así, una sola familia de máquinas podía satisfacer las necesidades de todos los clientes. En años posteriores, IBM produjo, sucesoras compatibles con la 360, empleando tecnologías mas modernas.

La 360 fue la primer computadora importante que utilizo circuitos integrados (a pequeña escala), por lo que ofrecía una notable ventaja en precio respecto a las máquinas de segunda generación, que se construían con transistores individuales. Su éxito fue inmediato y los principales fabricantes de computadoras adoptaron la idea de una sola linea de computadoras compatibles. Los descendientes de estas máquinas se siguen usando en centros de computo en algunos lugares al día de hoy, para administrar bases de datos enormes o como servidores de sitios web que deben procesar miles de solicitudes por segundo.

La mayor ventaja de la idea de “una familia” era al mismo tiempo su punto mas débil. La intención era que todo el software, incluido el sistema operativo OS/360, tenia que funcionar en todos los modelos. Tenia que hacerlo en todos los modelos, incluido los pequeños y los grandes utilizados para hacer cálculos meteorológicos y otros cálculos pesados. Debía ser buenos para sistemas con pocos periféricos, en entornos comerciales y científicos.

Era imposible que IBM, u otro fabricante escribiera software capaz de satisfacer todos esos requisitos opuestos. El resultado fue un sistema operativo enorme y extremadamente complejo. Cosiste en miles de lineas en lenguaje ensamblador escritas por miles de programadores, y contenía miles y miles de errores, por lo que se requería un flujo continuo de versiones en un intento por corregirlos. 

Cada versión nueva corregía algunos errores, pero introducía unos nuevos por lo que se penso que el número de errores se mantuvo con el tiempo.

A pesar de lo enorme de su tamaño y sus problemas, el OS/360 y los sistemas operativos producidos por otros fabricantes en realidad satisficieron de manera razonable la mayoría de sus clientes. Además popularizo técnicas que no se utilizaban en los sistemas operativos de segunda generación siento, tal vez la mas importante la de multiprogramación.

Una solución que se hallo fue dividir la memoria en varias partes, con un trabajo distinto en cada partición. Mientras que un trabajo estaba esperando a que terminara la E/S, otro podía utilizar la CPU. Si era posible tener varios trabajos al mismo tiempo en la memoria principal, la CPU podía mantenerse ocupada casi el 100% del tiempo. Tener varios trabajos en la memoria principal sin ocasionar problemas, requiere hardware especial que proteja cada trabajo de espionaje y acciones hostiles de otros.

Otra característica de los sistemas operativos de tercera generación era que podían leer trabajos de tarjetas y grabarlos en el disco tan pronto como se llevaban al cuarto de computadoras. Así, cada vez que se terminaba un trabajo podía cargarse otro desde el disco y ponerlo en la partición recién desocupada. 

A esta técnica se le llama spooling y también se utilizaba para la salida.

El deseo de obtener una respuesta mas rápida preparo el camino para los sistemas de tiempo compartido, una variante de la multiprogramación en la que cada usuario tiene una terminal en linea. En estos sistemas si 20 usuarios están trabajando y 17 de ellos están pensando o haciendo algo diferente a estar ocupando la máquina, la CPU puede asignarse por turnos a los tres trabajos que desean ser atendidos.

El primer sistema de tiempo compartido serio, CTSS se desarrollo en el MIT en una 7094 con modificadores especiales; sin embargo el tiempo compartido no se popularizo si no hasta que se generalizo el software de protección necesario durante la tercera generación.

Tiempo después, los fabricantes mas representativos de computadoras decidieron emprender el desarrollo de un servicio de computadora; una máquina que atendiera a miles de usuarios. A este sistema lo llamaron MULTICS y con el imaginaron una máquina enorme que podria dar potencia de computadora a todos los habitantes del área de Boston.

Al final MULTICS no tuvo el éxito comercial que se espero tuvo gran influencia en los sistemas subsecuentes. Uno de los científicos de computación de los laboratorios BELL que trabajó en el proyecto MULTICS escribió una versión austera de MULTICS para un solo usuario; esta labor dio pie mas adelante para el desarrollo de UNIX , que se popularizo en el mundo académico, en las dependencias gubernamentales y muchas compañías.

Este al no ser de código abierto pronto su desarrollo se torno al caos ya que varias organizaciones iniciaron su propia versión o clon de este sistema para poder utilizarlo. Principalmente surgieron dos versiones SystemV de AT&T, y BSD de la Universidad de California Berkeley. El IEEE creo entonces un estándar para UNIX llamado POSIX, reconocido por la mayoría de las versiones actuales.

En 1987 surge MINIX una alternativa compacta a UNIX creado con fines educativos. El desea de contar con una versión de producción libre (no meramente educativa) de MINIX, Linus Trolvads escribió LINUX (LINUX Is Not UNIX) escrito en base a MINIX y que incluso reconocía varios de sus recursos como el sistema de archivos.

Cuarta generación
Con el desarrollo de los circuitos integrados a gran escala que contienen miles de transistores en cada centímetro cuadrado de silicio, surgió la era de la computadora personal. Este adelanto logró hacer que cada persona fuese capaz de tener su propia computadora.

En 10974 cuando intel presento si 8080, la primer CPU de ocho bits de propósito general, quería un sistema operativo para ese procesador. Primero se escribió los controladores para el disco flexible de ocho pulgadas y lo conectaron al 8080 con lo que nace la primer PC con disco. Después se escribió el primer sistema basado en disco llamado CP/M.

A principio de la década de 1980 IBM se puso en contacto con Bill Gates para usar bajo licencia su interprete de BASIC y se le consulto si sabia de algún sistema operativo. Gates los dirigío a ponerse en contacto con Digital Research dueños de CP/M pero estos se reusaron reunir con IBM, por lo que este regresa con Bill Gates para preguntarle si podia ofrecerles un sistema operativo.
Gates se percato que un fabricante local de computadora tenia un sistema aceptable llamado DOS (Disk Operating System) y lo compro; se dice que por 50,000 USD; contrata a uno de los desarrolladores de DOS para hacer mejorías que requería IBM para ofrecer paquetes DOS/BASIC. A esto lo rebautiza como MS-DOS (Microsoft Disk Operating System) y Bill Gates con su naciente empresa ofrece el sistema a los grandes fabricantes para ser incluido en su hardware. Contrario a la estrategia de Digital Research quien pensaba distribuirlo con los usuario finales uno por uno.

La primera versión de MS-DOS era mas bien primitiva, las posteriores consiguieron hacer funciones avanzadas, muchas de ellas tomadas de UNIX.
En estos momento los sistemas operativos interactuaban con el usuario mediante linea de comandos pero esto cambio gracias a investigaciones hechas en la década de 1970 cuando se desarrollo la GUI o interfaz gráfica de usuario. Provista de ventanas, iconos y ratón. Estas interfaces fueron adoptadas por Xerox. En algún momento Steve Jobs; fundador de Aple Computer, visito las instalaciones de Xerox y observo el GUI que de inmediato adopto para su computador LISA, pero que por el costo al mercado tan alto fue un fracaso. El mismo GUI fue instalado en un Aple Macintosh que era varias veces mas económica que la LISA y que gracias a ser tan intuitiva pronto gano gran popularidad.

Microsoft avanzo en el desarrollo de su MS-DOS mediante Windows, el cual corría encima de MS-DOS por lo que era mas un Shell que un sistema completo. Entre 1985 a 1995 Windows no fue mas que un entorno gráfico hasta que salio Windows 95 que solo ejecutaba a MS-DOS para arrancar y ehjecutar programas viejos. Windows 98 fue una versión modificada del 95 y que aún contenía mucho código ensamblador de Intel 16bits.

Posterior a Windows 98, viene Windows NT, que después fue rebautizado como Windows 2000 pero que no pudo eliminar por completo a MS-DOS, y no funciono como se esperaba. Después sale Windows ME, Antecesor de Windows XP. Este último mucho mas popular y con mayor permanencia en el mercado de 2001 a 2011. En 2007 Microsoft lanza Windows Vista, y en 2009 Windows 7.

Otro contendiente principal es UNIX que domino en las otras computadoras que no utilizan Intel, asi como en las estaciones de trabajo, en especial las que utilizan chips de alto desempeño (RISC). Estas tienen, en general, la potencia de computo de una micro computadora, aunque se dediquen a un solo usuario, por lo que es lógico que estén equipadas con un sistema operativo para micro computadoras.

Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de 1980 ha sido el crecimiento de las redes de computadoras con sistemas operativos en red y sistemas operativos distribuidos. En un sistema operativo en red, los usuarios están consientes de máquinas remotas y pueden conectarse con ellas para copiar archivos. Cada máquina ejecuta su propio sistema local y tiene su propio usuario.

Por el contrario un sistema distribuido es aquel que aparece como un sistema tradicional de un solo procesador, aunque este compuesto por varios. En este los usuarios no deben ser cocientes del lugar donde se ejecute su programa o del lugar donde se encuentran sus archivos, esto es manejado de forma automática por el sistema operativo.

Unix es un sistema operativo portable multitarea y multiusuario desarrollado a principios de 1969 por un grupo de empleados de BELL LABORATORYS de AT&T.Este sistema nació después de que su creador Ken Thompson programo un juego llamado Space travel, pero noto que correrlo en una computadora de General Electric resulto ser demasiado costoso (79 USD por partida) por lo que reescribió el juego en lenguaje ensamblador para una DEC PDP 7. Este hecho junto con su experiencia en MULTICS lo animo a escribir UNIX.

No es hasta 1970 que se tiene la primer referencia oficial de UNIX como sistema operativo cuando consiguen implementar la herramienta de procesamiento de texto e integrarlo a una máquina PDP 11-20. En 1970 se reescribe UNIX pero esta vez en lenguaje C por lo que pudo ser fácilmente modificado para implementarse en otras máquinas y así se volvió portable.

Hacia 1991, un estudiante de ciencias de la computación de la Universidad de Helsinki, llamado Linus Torvalds desarrolló un núcleo para computadoras con arquitectura x86 de Intel que emulaba muchas de las funcionalidades de UNIX y lo lanzó en forma de código abierto en 1991, bajo el nombre de Linux. En 1992, el Proyecto GNU comenzó a utilizar el núcleo Linux junto a sus programas.

De UNIX se desprenden varias familias de sistemas operativos aparte de la de LINUX, como BSD, AIX, XENIX y a su ves de estas familas se desprenden otras como en el caso de LINUX donde podemos encontrar la familia Red Hat, Slackware, DEBIAN entre otras. Todas con sus distintas distribuciones libres y comerciales.

El 24 de enero de 1984, Apple Computer Inc. (ahora Apple Inc.) introdujo la computadora personal Macintosh, con el modelo Macintosh 128K, el cual incluía el sistema operativo Mac OS, conocido en esa época como System Software (Software de sistema).

A la Macintosh a menudo se le atribuye la popularización de las interfaces gráficas de usuario. El Mac OS ha sido pre-instalado en casi todos los computadores Macintosh vendidos. El sistema operativo también se vende en forma separada en las tiendas de Apple y en línea. El Mac OS original estaba basado parcialmente en el Lisa OS, previamente comercializado por Apple para la computadora Lisa en 1983 y, como parte de un acuerdo que permitía a Xerox comprar acciones de Apple a un precio favorable, también usaba conceptos del Xerox PARC Xerox Alto, el cual Steve Jobs y otros miembros del equipo Macintosh habían visto.

En un principio Mac OX fue escrito y llamado como Mac Os Clasic de código propio de Aple Computer, pero es en la versión Mac Os X que se decidió en desarrollar basados basándose en Mac Os Clasic, NextSTEP y UNIX
Varios fabricantes de computadores a través de los años han hecho clones de Macintosh capaces de ejecutar Mac OS, en particular Power Computing, UMAX y Motorola. Estas máquinas ejecutaron varias versiones del sistema operativo clásico de Mac. En 1997 Steve Jobs cerró el programa de licencia clon al regresar a Apple.

En 2008 el fabricante estadounidense Psystar Corporation anunció un ordenador de bajo coste (499 USD) que ejecutaba Mac OS X 10.5 Leopard. Amenazados por las batallas legales, Psystar denominó a su sistema OpenMac y posteriormente Open Computer. Actualmente Apple sigue en litigio con esta compañía a la que pretende hacer pagar por daños y perjuicios, por cada clon vendido y por los costes de la batalla legal.

En 2009 el fabricante HyperMegaNet UG lanzó un ordenador "Macintosh Compatible" bajo la marca comercial PearC basándose en el hecho de que la Licencia de software no puede aceptarse al no poder ser leída antes de adquirir el producto puesto que se encuentra dentro de la caja en la que viene el ordenador por lo que la parte que apela a la no instalación de OS X en hardware que no sea Apple es nula a todos los efectos, al menos en Alemania.

Clasificación de los sistemas operativos

Según administración de tareas
  • Monotarea: Solamente permite ejecutar un proceso (aparte de los procesos del propio SO) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización y/o interrupción.
  • Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de SO. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente.
Según su administración de usuarios
  • Monousuario: Si sólo permite ejecutar los programas de un usuario al mismo tiempo.
  • Multiusuario: Si permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.
Según el manejo de recursos
  • Centralizado: Si permite usar los recursos de una sola computadora.
  • Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos...) de más de una computadora al mismo tiempo.
Según el tipo de su núcleo
  • Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.
  • Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.4
  • Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente.
  • Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.
Referencias
  • Mchoes,F.(2001).Sistemas operativos (Tercera edición) México. Thomson
  • Tanembaun A.(2003). Sistemas operativos modernos. México. Pearson Educación.
  • Sistema operativo. (2012, 15 de mayo). Wikipedia, La enciclopedia libre. Fecha de consulta: 00:32, mayo 18, 2012 desde http://es.wikipedia.org/w/index.php?title=Sistema_operativo&oldid=56185783.
  • Núcleo (informática). (2012, 11 de abril). Wikipedia, La enciclopedia libre. Fecha de consulta: 00:35, mayo 18, 2012 desde http://es.wikipedia.org/w/index.php?title=N%C3%BAcleo_(inform%C3%A1tica)&oldid=55299756.
  • Mac OS. (2012, 10 de mayo). Wikipedia, La enciclopedia libre. Fecha de consulta: 00:40, mayo 18, 2012 desde http://es.wikipedia.org/w/index.php?title=Mac_OS&oldid=56063564.