jueves, 26 de enero de 2017

Sistemas operativos:

Primera generación: Válvulas de vacio 1944.
Después de los infructuosos esfuerzos de Babbage, se progresó poco en la construcción de computadoras digitales hasta la Segunda Guerra Mundial. Alrededor de la mitad de la década de los cuarenta, Howard Aiken en Hardvard, Jon Von Neumann en el Instituto de Estudios Avanzados en Princeton, J. Presper Eckert y William Mauchley en la Universidad de Pennsylvania y Konrad Zuse en Alemania, entre otros, lograron construir máquinas de cálculo mediante bulbos. Estás máquinas eras enormes y llenaban cuartos completos con decenas de miles de bulbos, eran mucho más lentas que la computadora casera más económica en la actualidad.
En esos primeros días, un grupo singular de personas diseñaba, construía, programaba, operaba y daba mantenimiento a cada máquina. Toda la programación se realizaba en lenguaje de maquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones básicas de la máquina. Los lenguajes de programación se desconocían (incluso el lenguaje ensamblador). Los primeros sistemas operativos eran extraños (no se oía de los sistemas operativos). El modo usual de operación consistía en que el programador firmaba para tener acceso a un bloque de tiempo en la hoja de registro situada en la pared, después bajaba al cuarto de máquinas, insertaba su conexión (tablero enchufable) en la computadora y pasaba unas horas esperando que ninguno de los 20,000 tubos o más bulbos se quemara durante la ejecución. La inmensa mayoría de los problemas eran cálculos numéricos directos, como por ejemplo el cálculo de valores para tablas de senos y cosenos.

A inicios de la década de los cincuenta, la rutina había mejorado un poco con la introducción de la tarjetas perforadas. Ahora era posible escribir  los programas en tarjetas y leerlos, en vez de utilizar tableros enchufables; por lo demás el procedimiento era el mismo.
Segunda generación de Sistemas Operativos: Transistores 1960.
La introducción del transistor a mediados de la década de 1950 alteró el panorama radicalmente. Las computadoras  se  hicieron  lo  bastante  confiables  como  para  poderse  fabricar  y  vender  a  clientes comerciales con la expectativa de que seguirían funcionando el tiempo suficiente para realizar algo de trabajo útil. Por primera vez, había una separación clara entre diseñadores, constructores, operadores, programadores y personal de mantenimiento.
Estas máquinas se encerraban en cuartos de computadora con acondicionamiento de aire especial, con equipos de operadores profesionales para operarias. Sólo las grandes empresas, o las principales dependencias del gobierno o universidades, podían solventar el costo de muchos millones de dólares. Para ejecutar un trabajo (es decir, un programa o serie de programas), un programador escribía primero el programa en papel (en FORTRAN o ensamblador) y luego lo perforaba en tarjetas. Después, llevaba el grupo de tarjetas al cuarto de entrada y lo entregaba a  uno de los operadores.
Cuando la computadora terminaba el trabajo que estaba ejecutando en ese momento, un operador acudía  a la  impresora,  separaba  la  salida  impresa  y  la  llevaba  al  cuarto  de  salida  donde  el programador podía recogerla después. Luego, el   operador tomaba  uno  de  los  grupos de  tarjetas traídos del cuarto de entrada y lo introducía en el lector. Si se requería el compilador de FORTRAN, el operador  tenía  que  traerlo  de  un  archivero  e  introducirlo  en  el  lector.  Gran  parte  del  tiempo  de computadora se desperdiciaba mientras los operadores iban de un lugar a otro, en el cuarto de la máquina.
Dado el alto costo del equipo, no es sorprendente que la gente pronto buscara formas de reducir el desperdicio de tiempo. La solución que se adoptó generalmente fue el sistema por lotes. El principio de este modo de operación consistía en juntar una serie de trabajos en el cuarto de entrada, leerlos y grabarlos en una cinta magnética usando una computadora pequeña y (relativamente) económica, como una IBM 1401, que era muy buena para leer tarjetas, copiar cintas e imprimir salidas, pero no para realizar cálculos numéricos. Otras máquinas, mucho más costosas, como la IBM 7094, se usaban para la computación propiamente dicha, ver Figura 2.
Tercera generación de sistemas operativos: Circuitos integrados 1964-1970.
A principios de la década de 1960, la mayoría de los fabricantes de computadoras tenían dos líneas de producto distintas y totalmente incompatibles. Por un lado estaban las computadoras científicas a gran escala, orientadas hacia las palabras, como la 7094, que se usaban para cálculos numéricos en ciencias e ingeniería. Por el otro, estaban las computadoras comerciales orientadas hacia los caracteres, como la 1401, que los bancos y las compañías de seguros utilizaban amplia- mente para ordenar e imprimir desde cinta.
La creación y mantenimiento de dos líneas de producto totalmente distintas era una situación costosa para los fabricantes. Además, muchos clientes de computadoras nuevas necesitaban inicialmente una máquina pequeña que más adelante les resultaba insuficiente, de modo que querían una máquina más grande que ejecutara todos sus viejos programas, pero más rápidamente.
IBM trató de resolver simultáneamente ambos problemas introduciendo la System/360. La 360 era una serie de máquinas de software compatible que iban desde tamaños comparables a la 1401 hasta computadoras mucho más potentes que la 7094. Las máquinas diferían sólo en el precio y el rendimiento (memoria máxima, velocidad del procesador, número de dispositivos de E/S permitidos, etc.). 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 estaba diseñada para manejar computación tanto científica como comercial. Así, una sola familia de máquinas podía satisfacer las necesidades de todos los clientes. En años subsecuentes IBM produjo sucesoras comparables a la línea 360, usando tecnología más moderna, conocidas como series 370, 4300, 3080 y 3090.
A pesar de su enorme tamaño y de sus problemas, OS/360 y los sistemas operativos de tercera generación parecidos a él producidos por otros fabricantes de computadoras lograron satisfacer a sus clientes en un grado razonable, y también popularizaron varias técnicas clave que no existían en los  sistemas  operativos de la segunda generación. Tal vez la más importante de ellas haya sido la  multiprogramación.  En la 7094,  cuando  el  trabajo  actual  hacía  una  pausa  para  esperar  que se  completara  una  operación de cinta  u  otra  operación  de  E/S,  la  CPU  simplemente  permanecía ociosa  hasta que la E/S terminaba. En los cálculos científicos, con  gran  uso  de  CPU,  la  E/S  es poco frecuente, así que el tiempo  desperdiciado  no es significativo. En el procesamiento de datos comerciales, el tiempo de espera por E/S puede ser el 80090% del tiempo total, de modo que algo debía hacerse para evitar que la CPU estuviera ociosa tanto tiempo.
La solución a la que se llegó fue dividir la memoria en varias secciones, con un trabajo distinto en cada partición, como se muestra en la Figura 3. Mientras un trabajo estaba esperando  que terminara su E/S, otro podía estar usando el CPU. Si se podían tener en la memoria principal suficientes trabajos a la vez, el CPU podía mantenerse ocupada casi todo el tiempo. Tener múltiples trabajos en la memoria a la vez requiere hardware especial para proteger cada trabajo contra espionaje por parte de los demás, pero la 360 y otros sistemas de tercera generación estaban equipados con este hardware.
Cuarta generación de Sistemas Operativos: Microprocesadores 1971-1988.
El microprocesador (o simplemente procesador) es el circuito integrado central más complejo de un sistema informático; a modo de ilustración, se le suele llamar por analogía el «cerebro» de un computador.
Es el encargado de ejecutar los programas, desde el sistema operativo hasta las aplicaciones de usuario; sólo ejecuta instrucciones programadas en lenguaje de bajo nivel, realizando operaciones aritméticas y lógicas simples, tales como sumar, restar, multiplicar, dividir, las lógicas binarias y accesos a memoria.1
Puede contener una o más unidades centrales de procesamiento (CPU) constituidas, esencialmente, por registros, una unidad de control, una unidad aritmética lógica (ALU) y una unidad de cálculo en coma flotante (conocida antiguamente como «coprocesador matemático»).
El microprocesador está conectado generalmente mediante un zócalo específico de la placa base de la computadora; normalmente para su correcto y estable funcionamiento, se le incorpora un sistema de refrigeración que consta de un disipador de calor fabricado en algún material de alta conductividad térmica, como cobre o aluminio, y de uno o más ventiladores que eliminan el exceso del calor absorbido por el disipador. Entre el disipador y la cápsula del microprocesador usualmente se coloca pasta térmica para mejorar la conductividad del calor. Existen otros métodos más eficaces, como la refrigeración líquida o el uso de células peltier para refrigeración extrema, aunque estas técnicas se utilizan casi exclusivamente para aplicaciones especiales, tales como en las prácticas de overclocking.
Quinta generación de Sistemas operativos: Microelectronica  1984-1988.
Una tecnología en microelectrónica se entiende como el conjunto de reglas, normas, requisitos, materiales y procesos que aplicados en una secuencia determinada, permite obtener como producto final un circuito integrado, que son dispositivos electrónicos miniaturizados. Los más importantes son circuitos integrados de Silicio corriente.La microelectrónica es la tecnología mediante la cual se diseñan dispositivos electrónicos empacados en grandes densidades en una pastilla única de semiconductor.
Sexta generación de Sistemas operativos: Arquitecturas paralelas 1995- actualidad.
La computación paralela es una forma de cómputo en la que muchas instrucciones se ejecutan simultáneamente,1 operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos años, sobre todo en la computación de altas prestaciones, pero el interés en ella ha decrecido últimamente debido a las limitaciones físicas que impiden el aumento de la frecuencia.n. 1 2 Como el consumo de energía —y por consiguiente la generación de calor— de las computadoras constituye una preocupación en los últimos años.n. 2 3 la computación en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multinúcleo.n. 3 4
Las computadoras paralelas pueden clasificarse según el nivel de paralelismo que admite su hardware: equipos con procesadores multinúcleo y multi-procesador que tienen múltiples elementos de procesamiento dentro de una sola máquina y los clústeres, MPPS y grids que utilizan varios equipos para trabajar en la misma tarea. Muchas veces, para acelerar tareas específicas, se utilizan arquitecturas especializadas de computación en paralelo junto a procesadores tradicionales.
Los programas informáticos paralelos son más difíciles de escribir que los secuenciales,5 porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los más comunes. La comunicación y sincronización entre diferentes subtareas son algunos de los mayores obstáculos para obtener un buen rendimiento del programa paralelo.

La máxima aceleración posible de un programa como resultado de la paralelización se conoce como la ley de Amdahl.

No hay comentarios:

Publicar un comentario