fbpx
Wikipedia

Grandes sistemas de Burroughs

Los grandes sistemas de Burroughs fueron los más grandes de tres series de computadores mainframes de Burroughs Corporation. Fundada en los años 1880, Burroughs era la más vieja entidad que continuaba operando en el área de la computación, pero hacia finales de la década de 1950, su equipo de computación todavía estaba limitado a las máquinas de contabilidad electromecánicas tales como la Sensimatic; las cuales no tenían nada para competir con sus rivales tradicionales como IBM y NCR que habían comenzado a producir computadores de mayor escala, o con la recientemente fundada UNIVAC. La primera máquina, el B5000, fue diseñada en 1961 y Burroughs buscaba resolver su tardía entrada en el mercado con la estrategia de un diseño completamente diferente, basado en las más avanzadas ideas computacionales disponibles en ese tiempo. Los computadores que han usado esta arquitectura todavía estaban en producción en 2010 como las máquinas ClearPath/MCP de Unisys. Ahora, Unisys usa los procesadores Intel Xeon, y corre en sus servidores los sistemas operativos MCP, Microsoft Windows y Linux.

B5000

El primer miembro de la serie, el B5000, fue diseñado a principios de 1961 por un equipo de ingenieros bajo la dirección de Robert (Bob) Barton. Fue una máquina única, muy adelantada a su tiempo. Ha sido listada por el influyente arquitecto de computadores John Mashey como una de las arquitecturas que más admira. "Yo siempre pensé que era uno de los más innovadores ejemplos de diseño combinado de hardware/software que haya visto, y mucho más adelantado a su tiempo".[1]

Características únicas

  • Todo el código es automáticamente reentrante (La figura 4.5 de la Monografía ACM muestra en pocas palabras el por qué): los programadores no tienen que hacer nada, sino solo usar los dos simples primitivos mostrados, para tener cualquier código en cualquier lenguaje de programación distribuido a través de los procesadores. Este es quizás el canónico, pero no significa el único beneficio de estas importantes características que distinguen a esta arquitectura:
    • Arquitectura data-driven tagged y basada en descriptor
    • El hardware fue diseñado para soportar los requerimientos del software
    • El hardware diseñado para soportar exclusivamente lenguajes de programación de alto nivel
    • No hay lenguaje ensamblador o assembler; todo el software del sistema está escrito en una variedad extendida de ALGOL
    • No hay registros accesibles al programador
    • Conjunto de instrucciones simplificado
    • Arquitectura de Pila (para soportar lenguajes algorítmicos de alto nivel)
    • Soporte para sistema operativo de alto nivel (Master Control Program)
  • Soporte para multiprocesamiento maestro/esclavo
  • Soporte para otros lenguajes como COBOL
  • Manipulaciones poderosas de cadenas de caracteres
  • Arquitectura segura prohibiendo acceso no autorizado a datos o disrupciones de operaciones
  • Temprana detección de error soportando el desarrollo y las pruebas (testing) de software
  • La primera implementación comercial de la memoria virtual
  • Los sucesores todavía existen en las máquinas ClearPath/MCP de Unisys
  • Influenció muchas de las técnicas computacionales de hoy

En el texto siguiente, las designaciones de la máquina, B5000, Serie A, y ClearPath/MCP son usadas intercambiablemente aunque éstas combinan innecesariamente las características y conceptos de varias máquinas y deberán ser corregidas algún día para mantener claramente las distinciones entre el 5000, 5500, 6500 y secuencia, y la Serie A.

Diseño de sistema único

El B5000 fue revolucionario en su tiempo al ser la arquitectura y el conjunto de instrucciones diseñados tomando en consideración las necesidades del software. Esto era un alejamiento del diseño del sistema de computación de ese tiempo, donde un procesador y su conjunto de instrucciones serían diseñados y después entregados a la gente del software, y todavía es así. Es decir, las arquitecturas modernas como el x86 o el PPC son esencialmente arquitecturas basadas en conjuntos de instrucciones tradicionales en vez de diseños holísticos como los sistemas originales de Burroughs.

Soporte de lenguaje

El B5000 fue diseñado para soportar exclusivamente lenguajes de alto nivel. Esto ocurrió en un tiempo en que tales lenguajes comenzaban a ser prominentes con FORTRAN y luego COBOL. FORTRAN y COBOL eran considerados lenguajes débiles por algunos, comparado con técnicas modernas de software, así que fue adoptado un lenguaje nuevo que no había sido probado, ALGOL-60. El dialecto del ALGOL seleccionado para el B5000 fue el Elliott ALGOL, primero diseñado e implementado por C.A.R. Hoare en un Elliot 503. Éste era una extensión práctica del ALGOL con instrucciones de I/O (que el ALGOL había ignorado) y poderosas instrucciones de procesamiento de cadenas. La famosa conferencia de Turing de Hoare fue sobre este tema.

Así el B5000 fue basado en un lenguaje muy poderoso. La mayoría de los otros proveedores solamente podían soñar en implementar un compilador ALGOL y la mayor parte de la industria descartó el ALGOL pues no lo podían implementar. Sin embargo, un brillante joven estudiante llamado Donald Knuth había implementado previamente el ALGOL-58 en una máquina anterior de Burroughs durante tres meses de verano. Muchos descartaron el ALGOL, creyendo equivocadamente que los lenguajes de alto nivel no podían tener la misma potencia que el ensamblador, y así no se dieron cuenta del potencial del ALGOL como lenguaje de programación de sistemas, una opinión no revisada hasta el desarrollo del lenguaje de programación C.

El compilador del ALGOL de Burroughs era muy rápido - éste impresionó al científico holandés Edsger Dijkstra cuando sometió un programa para ser compilado en la planta de Pasadena del B5000. Su mazo de tarjetas fue compilado casi inmediatamente y él quiso inmediatamente varias máquinas para su universidad (Universidad Técnica de Eindhoven) de regreso en Europa. El compilador era rápido por varias razones, pero la razón primaria era que era un "compilador de un solo paso" (one-pass compiler). Los computadores tempranos no tenían suficiente memoria para almacenar el código fuente, así que los compiladores (e incluso los ensambladores) usualmente necesitaban leer el código fuente más de una vez. La sintaxis del ALGOL requiere que cada variable (u otro objeto) sea declarada antes de ser usada, así que es factible escribir un compilador ALGOL que lea los datos solamente una vez. Este concepto tiene implicaciones teóricas profundas, pero también permite la compilación muy rápida. Los grandes sistemas de Burroughs podían compilar tan rápidamente como leían el código fuente de las tarjetas perforadas, y tenían los lectores de tarjetas más rápidos en la industria.

El poderoso compilador COBOL de Burroughs era también un compilador de un paso e igualmente rápido. Un programa COBOL de 4000 tarjetas se compilaba tan rápidamente como las 1000 tarjetas por minuto en que los lectores podían leer el código. El programa estaba listo para usarse tan pronto como las tarjetas pasaran a través del lector.

Historia

El primero de los grandes sistemas de Burroughs fue el B5000. Diseñado en 1961, era un computador de segunda generación usando lógica de transistor discreto y memoria de núcleo magnético. Las máquinas sucesoras siguieron las tendencias de desarrollo de hardware para reimplementar la arquitectura en nueva lógica durante los próximos 25 años, con el B5500, B6500, B5700, B6700, B7700, B6800, B7800, y finalmente la Serie A de Burroughs. Después de que Burroughs se convirtió en parte de Unisys, Unisys continuó desarrollando nuevas máquinas basadas en el MCP CMOS ASIC. Estas máquinas iban desde el Libra 100 hasta el Libra 500, con el Libra 590 siendo anunciado en el año 2005. Posteriores Libras, incluyendo el 590, también incorporaron los procesadores Intel Xeon y pueden correr la arquitectura de grandes sistemas de Burroughs en emulación así como en los procesadores MCP CMOS. No está claro si Unisys continuará el desarrollo de nuevos MCP CMOS ASICs.

Burroughs (1961-1986)
B5000 1961 Sistema inicial, computador de 2.ª generación (transistor)
B5500 1964 Mejora de la velocidad 3x(?)[2]
B6500 1969 Computador de 3.ª generación (circuitos integrados), hasta 4 procesadores
B5700 1971 Nuevo nombre para el B5500
B6700 1971 Nuevo nombre/corrección de error para el B6500
B7700 1972 Procesador más rápido, caché para la pila, hasta 8 procesadores.
B6800 1977? Memoria de semiconductor, arquitectura NUMA
B7800 1977? Memoria de semiconductor, más rápido, hasta 16? procesadores
A Series 1984 Reimplementado en un diseño personalizado Motorola ECL MCA1, luego MCA2 gate arrays
Unisys (1986-presente))
Micro A 1989 "Mainframe" de escritorio con un procesador en un simple chip SCAMP[3]​ processor.
Clearpath HMP NX 4000 198? ??
Clearpath HMP NX 5000 199? ??
Clearpath HMP LX 5000 1998 Implementa grandes sistemas de Burroughs solo en emulación (procesadores Intel Xeon)[4]
Libra 100 2002? ??
Libra 200 200x? ??
Libra 300 200x? ??
Libra 400 200x? ??
Libra 500 2005? ej. Libra 595[5]
Libra 600 2006? ??

ALGOL

Los grandes sistemas de Burroughs implementaron una arquitectura de pila derivada del ALGOL, a diferencia de arquitecturas lineares tales como las del PDP-11, Motorola M68k, e Itanium y arquitecturas segmentadas como x86 y Texas Instruments. (Esto se refiere a la disposición de la memoria y cómo un programa la usa).

Mientras que el B5000 fue diseñado específicamente alrededor del ALGOL, esto fue solamente un punto de partida. Otros lenguajes orientados a los negocios como COBOL también eran bien soportados, más notablemente por los poderosos operadores de string que fueron incluidos para el desarrollo de compiladores rápidos.

El ALGOL usado en el B5000 es un subconjunto extendido del ALGOL. Incluye poderosas instrucciones de manipulación de string pero excluye ciertas construcciones del ALGOL, notablemente los parámetros formales no especificados. Un mecanismo DEFINE responde a un propósito similar a los #defines encontrados en C, pero está completamente integrado en el lenguaje en lugar de ser un preprocesador. El tipo de datos EVENT facilita la coordinación entre los procesos, y los bloques ON FAULT activan el manejo de fallas del programa.

El nivel de usuario del ALGOL no incluye muchas de las construcciones inseguras necesarias por el sistema operativo u otro software de sistema. Dos niveles de extensiones del lenguaje proporcionan las construcciones adicionales: ESPOL y NEWP para escribir el MCP y el software estrechamente relacionado, y DCALGOL y DMALGOL para proporcionar extensiones más específicas para las clases específicas de software de sistema.

ESPOL y NEWP

Originalmente, el sistema operativo MCP del B5000 fue escrito en una extensión ALGOL llamada Executive Systems Programming Oriented Language (ESPOL), (Lenguaje Orientado a la Programación de Sistemas Ejecutivos). A mediados de los años 1970 fue remplazado por un lenguaje llamado NEWP. Aunque NEWP probablemente solo significaba "New Programming language" (Nuevo Lenguaje de Programación), las leyendas rodean el nombre. Una historia común (quizás apócrifa) alrededor de Burroughs en ese entonces sugirió que el nombre viene de "No Executive Washroom Privileges" (No Privilegios al Servicio Ejecutivo). Otra historia es que aproximadamente en 1976, John McClintock de Burroughs (el ingeniero de software que desarrolló el NEWP) llamado el lenguaje "NEWP" después de que se le preguntó, otra vez, "¿ya tiene un nombre?": contestando "nyoooop" (no), él adoptó eso como un nombre. NEWP, era también un subconjunto de la extensión del ALGOL, pero fue más seguro que ESPOL, y eliminó algunas complejidades poco usadas del ALGOL. De hecho, todas las construcciones inseguras son rechazadas por el compilador NEWP a menos que haya un bloque específicamente marcado para permitir esas instrucciones. Estos bloques marcadores proporcionan un mecanismo de protección multi-nivel.

Los programas de NEWP que contienen construcciones inseguras son inicialmente no ejecutables. El administrador de seguridad de un sistema tienen la capacidad de "bendecir" tales programas y hacerlos ejecutables, pero los usuarios normales no pueden hacer esto. (Incluso los "usuarios privilegiados", quienes normalmente tienen privilegios de root, pueden no estar capacitados para hacer esto dependiendo de la configuración elegida por el sitio). Mientras NEWP puede ser usado para escribir programas generales y tiene un número de características diseñadas para los grandes proyectos de software, no soporta todo lo que hace ALGOL.

NEWP tiene un número de facilidades para permitir proyectos de software en grande, tales como el sistema operativo, incluyendo interfaces nombradas (funciones y datos), grupos de interfaces, módulos, y supermódulos. Los módulos agrupan datos y funciones juntos, permitiendo el fácil acceso a los datos como globales dentro del módulo. Las interfaces permiten a un módulo importar y exportar funciones y datos. Los supermódulos permiten que los módulos sean agrupados.

DCALGOL y el Message Control Systems (MCS)

El segundo de nivel intermedio de seguridad entre el código del sistema operativo (en NEWP) y los programas de usuario (en ALGOL) es para los programas middleware, que son escritos en Data Comms ALGOL (DCALGOL). Esto se utiliza para la recepción y despacho de mensajes, que remueve mensajes los queues de entrada y los coloca en los queues para manejar otros procesos en el sistema. El middleware como COMS (introducido alrededor de 1984) recibe mensajes desde alrededor de la red y despacha estos mensajes a procesos de manejo específicos o a un Message Control System (MCS) (sistema de control de mensaje) como por ejemplo "Command AND Edit" (CANDE) (Comando y edita), el ambiente de desarrollo de programas.

Los MCS son elementos de software dignos de mención - ellos controlan las sesiones de usuario y proporcionan seguimiento del estado del usuario sin tener que correr procesos por usuario puesto que una sola pila de MCS puede ser compartido por muchos usuarios. El balance de carga también puede ser alcanzado a nivel del MCS. Por ejemplo diciendo que se quieren manejar 30 usuarios por pila, en este caso si se tienen 31 a 60 usuarios, se tendrán dos pilas, de 61 a 90 usuarios, tres pilas, etc. Esto da a las máquinas B5000 una gran ventaja de desempeño en un servidor puesto que no se necesita iniciar otro proceso de usuario y así crear una nueva pila cada vez que un usuario se conecta al sistema. Así que se pueden servir efectivamente los usuarios con los MCSs (independientemente de si requieren estado o no). Los MCSs también proporcionan la espina dorsal del procesamiento transaccional a gran escala.

El MCS hablaba con un coprocesador externo, el Terminal Control Processor (TCP) (procesador de control de terminal). Este era un minicomputador de 24 bits con una arquitectura de registro convencional y capacidad de hardware de entrada-salida para manejar miles de terminales remotos. El TCP y el B6500 se comunicaban por mensajes en memoria, esencialmente paquetes, en términos de hoy, y el MCS hacía el procesamiento de esos mensajes del lado del B6500. El TCP tenía un ensamblador, pero éste era el compilador ALGOL del B6500. Había una función del ALGOL para cada clase de instrucción del TCP, y si se llamara esa función entonces los correspondientes bits de instrucción TCP serían emitidos a la salida. Un programa TCP era un programa ALGOL que no abarcaba nada más que una lista larga de llamadas a estas funciones, una para cada declaración de lenguaje ensamblador. Esencialmente el ALGOL actuaba como el paso macro de un macro ensamblador. El primer paso era el compilador de ALGOL; el segundo paso corría el programa resultante (en el B6500) que entonces emitiría el binario para el TCP.

DMALGOL y las bases de datos

Otra variante del ALGOL es el Data Management ALGOL (DMALGOL) (ALGOL de gestión de datos). DMALGOL es ALGOL extendido para compilar el software de bases de datos DMSII desde los archivos de descripción de base de datos creados por el compilador DASDL. Los diseñadores y los administradores de base de datos compilan descripciones de base de datos para generar el código DMALGOL adaptado para las tablas y los índices especificados. Los administradores nunca necesitan escribir ellos mismos en DMALGOL. Los programas a nivel de usuario normales obtienen el acceso a la base de datos al usar el código escrito en lenguajes de aplicación, principalmente ALGOL y COBOL, extendidos con instrucciones de base de datos y directivas de tratamiento transaccional. La característica más notable de DMALGOL son sus mecanismos de procesamiento para generar el código para manejar las tablas y los índices.

El procesamiento de DMALGOL incluye variables y bucles, y puede generar nombres basados en variables de tiempo de compilación. Esto permite la adaptación mucho más allá de lo que puede ser hecho por facilidades de procesamiento que carecen bucles.

El DMALGOL es usado para proporcionar las rutinas de acceso adaptadas para las bases de datos DMSII. Después de que una base de datos es definida usando el Data Access and Structure Definition Language (DASDL) (Lenguaje de Definición Estructurado y de Acceso de Datos), el esquema es traducido por el preprocesador en rutinas adaptadas de acceso DMALGOL y después compilado. Esto significa que, a diferencia de otras implementaciones de DBMS, a menudo no hay necesidad de código if/then/else específico de base de datos en tiempo de ejecución. En los años 1970, estas "adaptaciones" fueron usadas muy extensivamente para reducir el tamaño y el tiempo de ejecución del código. Fue usado mucho menos en años posteriores, en parte porque el ajuste fino de bajo nivel para la memoria y la velocidad llegó a ser menos crítico, y en parte porque eliminando el preprocesamiento hace la codificación más simple y por lo tanto permitiendo optimizaciones más importantes.

En años posteriores, ya no siendo una preocupación el tamaño de código del compilador, la mayor parte de las construcciones de preprocesamiento fueron hechas disponibles en el nivel de usuario de ALGOL. Solamente las construcciones inseguras y el procesamiento directo del archivo de descripción de la base de datos permanecen restringidas a DMALGOL.

Roy Guck de Burroughs fue uno de los principales desarrolladores de DMSII.

Arquitectura de pila

En muchos de los primeros sistemas y lenguajes, a menudo se les decía a los programadores que no hicieran sus rutinas demasiado pequeñas porque las llamadas y retornos de procedimiento eran operaciones costosas, tenían que ser realizados un número de operaciones para mantener el pila. El B5000 fue diseñado como una máquina de pila - todos los datos del programa eran guardados en la pila a excepción de los arreglos (que incluyen strings y objetos). Esto significó que las operaciones de la pila fueron optimizadas para la eficacia. Como una máquina orientada a pila, no había registros direccionables para el programador.

La multitarea también era muy eficiente en las máquinas B5000. Hay una instrucción específica para realizar cambios de proceso - MVST (mueve pila).[6]​ Cada pila representa un proceso (una tarea o un hilo) y las tareas pueden resultar bloqueadas esperando peticiones de recursos (que incluye esperar a un procesador para correr en él si la tarea ha sido interrumpida debido a la multitarea preemptiva). Los programas de usuario no pueden realizar un MVST, y en el sistema operativo hay solamente una línea de código donde es hecho esto.

Así que un cambio de proceso procede algo similar a esto - un proceso pide un recurso que no está disponible inmediatamente, quizá una lectura de un registro de un archivo desde un bloque que no está actualmente en memoria, o el temporizador del sistema (timer) ha disparado una interrupción. Entonces se entra al código del sistema operativo y corre encima de la pila del usuario. Apaga los temporizadores del proceso del usuario. El proceso actual es puesto en la cola (queue) apropiada para el recurso pedido, o la cola esperando por el procesador si esto es un cambio de contexto preemtivo. El sistema operativo determina el primer proceso en la cola e invoca la instrucción move_stack, que hace al proceso en la cabeza de la cola activo.

Velocidad de la pila y desempeño

Algunos de los detractores de la arquitectura B5000 creyeron que la arquitectura de pila era inherentemente lenta comparada con las arquitecturas basadas en registros. El truco para la velocidad del sistema es guardar los datos tan cerca al procesador como sea posible. En la pila del B5000, esto fue hecho asignando las dos posiciones superiores de la pila a dos registros, A y B. La mayoría de las operaciones son realizadas en esas dos posiciones del tope de la pila. En máquinas más rápidas después del B5000, una mayor parte de la pila se podía mantener en registros o un caché cerca del procesador.

Así los diseñadores de los sistemas B5000 actuales pueden optimizar en cualquier cosa que sea la última técnica, y los programadores no tienen que ajustar su código para que corra más rápido - incluso no necesitan recompilar, protegiendo así la inversión en software. Se sabe que algunos programas han corrido por años sobre muchas mejoras del procesador. Tales mejoras en velocidad son limitadas en las máquinas basadas en registros.

Otro punto para la velocidad, según lo promovido por los diseñadores RISC, era que la velocidad de procesador es considerablemente más rápida si todo está en un solo chip. Esto era un punto válido en los años 1970, cuando las arquitecturas más complejas tales como el B5000 requirieron demasiados transistores para caber en un solo chip. Sin embargo, éste no es el caso hoy en día, y cada máquina sucesora del B5000 ahora cabe en un solo chip, así como también las técnicas de soporte de desempeño tales como cachés y tuberías de instrucción (instruction pipelines).

De hecho, la línea Series A de sucesores del B5000 incluyó el primer mainframe en un simple chip, el Micro-A de finales de los años 1980. Este chip de "mainframe" (llamado Single-Chip A-series Mainframe Processor (SCAMP))descansaba en una tarjeta de circuito impreso enchufable basada en Intel.

Cómo los programas se mapean en la arquitectura de la pila

Aquí hay un ejemplo de cómo los programas se mapean en la arquitectura de la pila

begin
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — Éste es el nivel léxico 2 (el nivel cero es reservado para el sistema operativo — y el nivel 1 para los segmentos de código). — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
 — En el nivel 2 ponemos las variables globales para nuestro programa. 
 integer i, j, k real f, g array a [0:9] 
 procedure p (real p1, p2) value p1 — p1 pasó por valor, p2 pasó implícitamente por referencia. begin — — — — — — — — — — — — — — — — — — — Este bloque está en el nivel léxico 3 — — — — — — — — — — — — — — — — — — real r1, r2
r2 := p1 * 5 p2 := r2 — Esto fija 'g' al valor de r2 p1 := r2 — Esto fija 'p1' al valor de r2, pero no 'f' — Puesto que esto sobreescribe el valor original de f en p1, esto muy probablemente indica — un error. Pocos de los sucesores del ALGOL han corregido esta situación — haciendo los parámetros por valor como solo lectura – la mayoría no lo han hecho.
 if r2 > 10 then begin — — — — — — — — — — — — — — — — — — — — — — — — — — — — — Una variable declarada aquí hace a éste el nivel léxico 4 — — — — — — — — — — — — — — — — — — — — — — — — — — — — integer n
— La declaración de una variable hace a esto un bloque, que invocará algún — código de construcción de pila. Normalmente, Ud. no declarará las variables aquí, — en tal caso esto sería una declaración compuesta, no un bloque.
 ... <== La pila de ejemplo está ejecutándose en alguna parte aquí end end 
 ..... 
 p (f, g) end 

Cada stack frame (marco de pila) corresponde a un nivel léxico en el ambiente de ejecución actual. Como usted puede ver, el nivel léxico es el anidamiento textual estático de un programa, no el anidamiento de llamada dinámica. Las reglas de visibilidad del ALGOL, un lenguaje diseñado para compiladores de un solo paso, significa que solamente las variables declaradas antes de la posición actual son visibles en esa parte del código a excepción de declaraciones hacia adelante (forward declarations). Todas las variables declaradas en bloques de encerramiento son visibles. Otro caso es que las variables del mismo nombre pueden ser declaradas en bloques internos y éstas efectivamente ocultan a las variables externas que llegan a ser inaccesibles.

Puesto que el anidamiento léxico es estático, es muy raro encontrar a un programa anidado más de cinco niveles de profundidad, y podría argüirse que tales programas serían pobremente estructurados. Las máquinas B5000 permiten el anidamiento de hasta 32 niveles. Los procedimientos pueden ser invocados de cuatro maneras - normal, llamada, proceso, y ejecución.

Procedimientos

Un procedimiento es llamado de la manera normal en que cualquier lenguaje invoca una rutina, suspendiendo la rutina que llama hasta que el procedimiento invocado retorne.

El mecanismo de llamada invoca a un procedimiento como corrutina. Las corrutinas tienen tareas asociadas, donde el control es pasado explícitamente entre las tareas por medio de una instrucción CONTINUE. Estos son procesos síncronos.

El mecanismo de proceso invoca a un procedimiento como una tarea asíncrona y en este caso una pila separada es iniciada comenzando en el nivel léxico del procedimiento procesado. Como la tarea es asíncrona, a diferencia de las corrutinas, no hay manera de saber exactamente cuando el control será pasado entre las tareas. Note también que el procedimiento procesado todavía tiene acceso al ambiente de encerramiento y esto es un mecanismo muy eficiente de comunicación entre procesos (Inter Process Communication (IPC)). Puesto que dos o más tareas tienen ahora acceso a las variables comunes, las tareas deben ser sincronizadas para prevenir condiciones de carrera, que es manejado por el tipo de datos EVENT (evento), donde los procesos pueden esperar (WAIT) en un evento hasta que sean causados por otro proceso cooperativo. Los eventos también permiten la sincronización de exclusión mutua a través de las funciones PROCEDURE y LIBERATE. Si por cualquier razón la tarea hija muere, la tarea que llama puede continuar - sin embargo, si muere el proceso padre, entonces todos los procesos hijo son terminados automáticamente. En una máquina con más de un procesador, los procesos pueden correr simultáneamente. Este mecanismo de evento es un activador básico para el multiprocesamiento además de la multitarea.

Tipo de invocación de ejecución

El último tipo de invocación es la ejecución. Esto hace correr a un procedimiento como una tarea independiente que pueda continuar después de que el proceso que la originó termine. Por esta razón, el proceso hijo no puede tener acceso a variables en el ambiente del padre, y todos los parámetros pasajeros al procedimiento invocado deben ser llamados por valor.

Así el Burroughs Extended ALGOL tenía todas las características del multiprocesamiento y sincronización de lenguajes posteriores como el Ada, con el beneficio adicional que el soporte para los procesos asíncronos fue incorporado a nivel del hardware.

Procedimientos en línea

Una última posibilidad es que un procedimiento pueda ser declarado INLINE (en línea), eso es cuando el compilador ve una referencia a él, y el código para el procedimiento es generado en línea para ahorrar los gastos indirectos de una llamada de procedimiento. Esto es hecho mejor para pequeñas partes de código y es como una definición, excepto que usted no consiga los problemas con los parámetros que usted pueda con las definiciones. Esta facilidad está disponible en NEWP.

Llamadas asíncronas

En el programa de ejemplo solamente son usadas las llamadas normales, así que toda la información estará en una sola pila. Para las llamadas asíncronas, la pila estaría dividida en múltiples pilas de modo que los procesos compartan datos pero corran asíncronamente.

Ventajas de la estructura de la pila

Una cosa agradable de la estructura de la pila es que si un programa falla, es tomada una descarga de la pila y es muy fácil para un programador descubrir exactamente cuál era el estado del programa cuando estaba corriendo. Compare eso a los vaciados de memoria (memory dumps) y el intercambio de paquetes de otros sistemas.

Otra cosa acerca de la estructura de la pila es que los programas son implícitamente recursivos. El FORTRAN no era una lenguaje recursivo y era quizás un obstáculo a la comprensión de la gente, de cómo el ALGOL debía ser implementado para tener recursión. En el B5000, esto no era un problema - de hecho, tenían el problema reverso, cómo evitar que los programas fueran recursivos. Al la final ellos no le prestaron atención, incluso el compilador FORTRAN de Burroughs era recursivo, puesto que era improductivo pararlo para que no fuera así.

Así el FORTRAN de Burroughs fue mejor que cualquier otra implementación de FORTRAN.[cita requerida] de hecho, Burroughs comenzó a ser conocido por sus superiores compiladores e implementaciones de lenguajes, incluyendo el orientado a objetos Simula (un sobreconjunto del ALGOL), y Kenneth Iverson, el diseñador del APL, declaró que la implementación de Burroughs del APL era la mejor que él había visto.[cita requerida] Por otro lado, John McCarthy, el diseñador del lenguaje LISP, discrepó, puesto que el LISP fue basado en código modificable,[cita requerida] a él no le gustaba el código no modificable del B5000,[cita requerida] pero de todos modos la mayoría de las implementaciones del LISP correrían en un ambiente interpretativo.

Observe también que las pilas automáticamente usan tanta memoria como es necesaria para un proceso. No había que hacer SYSGENs en los sistemas de Burroughs, como con los sistemas de la competencia, para preconfigurar las particiones de la memoria en las cuales correrían las tareas. De hecho, Burroughs era realmente campeón en "plug and play" en el sentido que los periféricos adicionales se podían enchufar en el sistema sin tener que recompilar el sistema operativo con nuevas tablas de periféricos. Así estas máquinas podían verse como los precursores de los dispositivos de hoy como el USB y el firewire.

Arquitectura basada en etiquetas

El aspecto más definitorio del B5000 es que es una máquina de pila según lo tratado arriba. Sin embargo, otras dos características muy importantes de la arquitectura son que está basada en etiquetas (tags) y descriptores.

En el B5000 original, existía un bit en cada palabra para identificarla como una palabra de código o de datos. Esto era un mecanismo de seguridad para parar programas que pudieran corromper código, de la manera en que lo hacen hoy los crackers.

Una ventaja para el código inmodificable es que el código B5000 es completamente reentrante: no importa cuántos usuarios están corriendo un programa, siempre habrá solamente una copia del código en memoria, así ahorrando una cantidad sustancial de memoria; estas máquinas eran realmente muy eficientes en el uso de la memoria y el disco.

Más adelante, cuando el B6500 fue diseñado, se dieron cuenta de que la distinción de 1 bit entre el código y los datos era una idea poderosa y fue extendida a tres bits fuera de la palabra de 48 bits para formar una etiqueta (tag). Los bits de datos están en los bits 0-47 y la etiqueta está en los bits 48-50. El bit 48 era de solo lectura, así las etiquetas impares indicaban palabras de control que no se podían escribir por un programa de nivel de usuario. A las palabras del código se les dieron la etiqueta 3. Aquí hay una lista de las etiquetas y de su función:

Etiqueta Tipo de palabra Descripción
0 Data Todo tipo de datos del usuario y del sistema (Datos de texto y números de simple precisión
2 Double Double Precision data (Dato de doble precisión)
4 SIW Step Index word (used in loops) (Palabra de salto de índice (usada para bucles))
6 Uninitialized data (Dato no inicializado)
SCW Software Control Word (used to cut back the stack) (Palabra de control de software (usada para reducir la pila))
1 IRW Indirect Reference Word (Palabra de referencia indirecta)
SIRW Stuffed Indirect Reference Word (palabra de referencia indirecta)
3 Code Program code word (palabra de código de programa)
MSCW Mark Stack Control Word (Marca de palabra de control de la pila)
RCW Return Control Word (Palabra de control de retorno)
TOSCW Top of Stack Control Word (Palabra de control del tope de la pila)
SD Segment Descriptor (Descriptor de segmento)
5 Descriptor Data block descriptors (Descriptor de bloque de datos)
7 PCW Program Control Word (Palabra de Control de Programa)

Nota: Internamente, algunas de las máquinas tenían palabras de 60 bits, con los bits adicionales usados para propósitos de ingeniería como por ejemplo un campo de corrección de error de código Hamming, pero éstos nunca fueron vistos por los programadores.

Nota: La encarnación actual de estas máquinas, el Unisys ClearPath ha extendido las etiquetas a cuatro bits. El nivel de microcódigo que especificaba etiquetas de cuatro bit fue referido como nivel Gamma.

Las palabras marcadas (etiquetadas) con números pares son datos de usuario que pueden ser modificados por un programa de usuario como un estado de usuario. las palabras marcadas con números impares son creadas y usadas directamente por el hardware y representan un estado de ejecución del programa. Puesto que estas palabras son creadas y consumidas por instrucciones específicas o el hardware, el formato exacto de estas palabras puede cambiar con la implementación del hardware y los programas de usuario no necesitan ser recompilados, puesto que el mismo flujo del código producirá los mismos resultados, aunque el formato de la palabra del sistema pudiera haber cambiado.

Las palabras con etiqueta 1 representan direcciones de datos en el stack. El normal IRW simplemente almacena una pareja de direcciones a los datos en la pila actual. La SIRW referencia datos en cualquier pila al incluir un número de pila en la dirección.

Las palabras con etiqueta 5 son los descriptores, que son descritos más completamente en la siguiente sección. Las palabras de etiqueta 5 representan direcciones de datos fuera del stack.

La etiqueta 7 es la palabra de control de programa (PCW) que describe un punto de entrada del procedimiento. Cuando los operadores encuentran un PCW, se entra en el procedimiento. El operador ENTR explícitamente entra en un procedimiento (rutina sin valor de retorno). Las funciones (rutinas con valor de retorno) son implícitamente entradas por los operadores tales como llamada de valor (VALC). Note que las rutinas globales están almacenadas en los ambientes D[2] como SIRWs que apuntan a un PCW almacenado en el diccionario del segmento de código en el ambiente D[1]. El ambiente de D[1] no es almacenado en el stack actual porque puede ser referenciado por todos los procesos que comparten este código. Así el código es reentrante y compartido.

La etiqueta 3 representa palabras de código en sí mismas, que no ocurrirán en el stack. La etiqueta 3 es también usada para las palabras de control del stack MSCW, RCW, TOSCW.

Arquitectura basada en descriptores

La figura a la izquierda muestra cómo la arquitectura de los sistemas grandes de Burroughs era fundamental una arquitectura de hardware para la programación orientada a objetos, algo que todavía no existe en arquitecturas convencionales.

Influencia del B5000

Indudablemente, hay influencia directa del B5000 en la gama actual del rango de mainframes ClearPath de Unisys, que son los descendientes directos del B5000 y todavía tienen el sistema operativo MCP después de 40 años de desarrollo consistente. Ahora la esta arquitectura es llamada emode (por modo de emulación), puesto que la arquitectura B5000 puede ser implementada en muchas plataformas. También iba a estar un nmode (modo nativo), pero este fue eliminado,[cita requerida] así que a menudo se puede oír que las máquinas sucesoras del B5000 son referidas como "máquinas emode".

Las máquinas B5000 fueron programadas exclusivamente en lenguajes de alto nivel, no hay ensamblador, obviamente esto no se aplicaría al emode, el cual es entrado para correr en el hardware base y rompe así la base fundamental de la arquitectura arriba indicada excepto cuando se indica abajo.

La arquitectura de pila del B5000 inspiró a Chuck Moore, el diseñador del lenguaje de programación Forth, quien encontró al B5500 mientras estaba en el MIT. En , Moore describió la influencia, observando que las instrucciones DUP, DROP y SWAP del Forth vinieron de las instrucciones correspondientes del B5500 (DUPL, DLET, EXCH).

Los sistemas de Hewlett-Packard (HP) fueron influenciados por el B5000, puesto que algunos ingenieros de Burroughs encontraron luego un empleo diseñando máquinas para HP y éstas también eran máquinas de pila. El trabajo de Bob Barton sobre la notación polaca inversa (RPN) encontró su camino en las calculadoras HP comenzando con la HP 9100A, y notablemente la HP-35 y las calculadoras subsecuentes.

Los sistemas NonStop diseñados por Tandem Computers a finales de los años 1970 y principios de los 1980 eran también máquinas de pila, influenciadas por el B5000 indirectamente a través de la conexión con HP, ya que varios de los primeros ingenieros de Tandem venían de HP. Alrededor 1990, estos sistemas migraron a una arquitectura RISC y ahora contienen solamente peculiares vestigios de su arquitectura de pila.

Bob Barton era también muy influyente en Alan Kay. Kay también fue impresionado por la arquitectura data-driven tagged del B5000 y esto influenció su pensamiento en sus desarrollos de la programación orientada a objetos y el Smalltalk.

Otra faceta de la arquitectura B5000 fue que era una arquitectura segura que corría directamente en el hardware. Esta técnica tiene descendientes en las máquinas virtuales de hoy en sus tentativas de proporcionar ambientes seguros. Un notable producto es la máquina virtual de Java, que proporciona una caja de arena segura en la cual corren las aplicaciones.

El valor de la arquitectura de hardware atando lo que existió antes del emode sería substancialmente preservado en el Intel iAPXx86 hasta el punto que el MCP fuera el único programa de control pero el soporte proporcionado por los hardwares comunes sigue siendo inferior al del modo nativo. Una arquitectura de procesador Intel poco conocida que realmente precedió al iAPXx86 (el Intel iAPX 432) había proporcionado una base física equivalente, puesto que esencialmente también era una arquitectura de flujo de datos orientada al objeto.

Referencias

  1. John Mashey (15 de agosto de 2006). «Admired designs / designs to study». comp.arch. 1155671202.964792.162180@b28g2000cwb.googlegroups.com. Consultado el 15 de diciembre de 2007. 
  2. Burroughs 3rd Generation.
  3. SCAMP picture at dave's Old computers
  4. Unisys Accelerates Mainframe Rebirth with New ClearPath Enterprise Servers, Aggressive New Pricing. - Business Wire - HighBeam Research
  5. Organick, Elliot (1973). Computer System Organization. ACM. pp. 115–117. ISBN 0125282508. 

Lectura adicional

  • Barton, Robert S. "A New Approach to the Functional Design of a Digital Computer" Proceedings of the Western Joint Computer Conference. ACM (1961).
  • Charles Babbage Institute, , University of Minnesota, Minneapolis. The Burroughs 5000 computer series is discussed by individuals responsible for its development and marketing from 1957 through the 1960s in a 1985 conference sponsored by AFIPS and Burroughs Corporation.
  • Gray, George. , Unisys History Newsletter, Volume 3, Number 1, March 1999.
  • Gray, George. , Unisys History Newsletter, Volume 3, Number 5, October 1999.
  • Hauck, E.A., Dent, Ben A. "Burroughs B6500/B7500 Stack Mechanism", SJCC (1968) pp. 245-251.
  • McKeeman, William M. "Language Directed Computer Design", Fall Joint Computer Conference, (1967) pp.413-417.
  • Organick, Elliot I. "Computer System Organization The B5700/B6700 series", Academic Press (1973)
  • Waychoff, Richard, , September 27, 1979

Véase también

  •   Datos: Q3359776

grandes, sistemas, burroughs, grandes, sistemas, burroughs, fueron, más, grandes, tres, series, computadores, mainframes, burroughs, corporation, fundada, años, 1880, burroughs, más, vieja, entidad, continuaba, operando, área, computación, pero, hacia, finales. Los grandes sistemas de Burroughs fueron los mas grandes de tres series de computadores mainframes de Burroughs Corporation Fundada en los anos 1880 Burroughs era la mas vieja entidad que continuaba operando en el area de la computacion pero hacia finales de la decada de 1950 su equipo de computacion todavia estaba limitado a las maquinas de contabilidad electromecanicas tales como la Sensimatic las cuales no tenian nada para competir con sus rivales tradicionales como IBM y NCR que habian comenzado a producir computadores de mayor escala o con la recientemente fundada UNIVAC La primera maquina el B5000 fue disenada en 1961 y Burroughs buscaba resolver su tardia entrada en el mercado con la estrategia de un diseno completamente diferente basado en las mas avanzadas ideas computacionales disponibles en ese tiempo Los computadores que han usado esta arquitectura todavia estaban en produccion en 2010 como las maquinas ClearPath MCP de Unisys Ahora Unisys usa los procesadores Intel Xeon y corre en sus servidores los sistemas operativos MCP Microsoft Windows y Linux Indice 1 B5000 2 Caracteristicas unicas 2 1 Diseno de sistema unico 2 2 Soporte de lenguaje 3 Historia 4 ALGOL 4 1 ESPOL y NEWP 4 2 DCALGOL y el Message Control Systems MCS 4 3 DMALGOL y las bases de datos 5 Arquitectura de pila 5 1 Velocidad de la pila y desempeno 5 2 Como los programas se mapean en la arquitectura de la pila 5 3 Procedimientos 5 3 1 Tipo de invocacion de ejecucion 5 3 2 Procedimientos en linea 5 3 3 Llamadas asincronas 5 4 Ventajas de la estructura de la pila 6 Arquitectura basada en etiquetas 7 Arquitectura basada en descriptores 8 Influencia del B5000 9 Referencias 10 Lectura adicional 11 Vease tambienB5000 EditarEl primer miembro de la serie el B5000 fue disenado a principios de 1961 por un equipo de ingenieros bajo la direccion de Robert Bob Barton Fue una maquina unica muy adelantada a su tiempo Ha sido listada por el influyente arquitecto de computadores John Mashey como una de las arquitecturas que mas admira Yo siempre pense que era uno de los mas innovadores ejemplos de diseno combinado de hardware software que haya visto y mucho mas adelantado a su tiempo 1 Caracteristicas unicas EditarTodo el codigo es automaticamente reentrante La figura 4 5 de la Monografia ACM muestra en pocas palabras el por que los programadores no tienen que hacer nada sino solo usar los dos simples primitivos mostrados para tener cualquier codigo en cualquier lenguaje de programacion distribuido a traves de los procesadores Este es quizas el canonico pero no significa el unico beneficio de estas importantes caracteristicas que distinguen a esta arquitectura Arquitectura data driven tagged y basada en descriptor El hardware fue disenado para soportar los requerimientos del software El hardware disenado para soportar exclusivamente lenguajes de programacion de alto nivel No hay lenguaje ensamblador o assembler todo el software del sistema esta escrito en una variedad extendida de ALGOL No hay registros accesibles al programador Conjunto de instrucciones simplificado Arquitectura de Pila para soportar lenguajes algoritmicos de alto nivel Soporte para sistema operativo de alto nivel Master Control Program Soporte para multiprocesamiento maestro esclavo Soporte para otros lenguajes como COBOL Manipulaciones poderosas de cadenas de caracteres Arquitectura segura prohibiendo acceso no autorizado a datos o disrupciones de operaciones Temprana deteccion de error soportando el desarrollo y las pruebas testing de software La primera implementacion comercial de la memoria virtual Los sucesores todavia existen en las maquinas ClearPath MCP de Unisys Influencio muchas de las tecnicas computacionales de hoyEn el texto siguiente las designaciones de la maquina B5000 Serie A y ClearPath MCP son usadas intercambiablemente aunque estas combinan innecesariamente las caracteristicas y conceptos de varias maquinas y deberan ser corregidas algun dia para mantener claramente las distinciones entre el 5000 5500 6500 y secuencia y la Serie A Diseno de sistema unico Editar El B5000 fue revolucionario en su tiempo al ser la arquitectura y el conjunto de instrucciones disenados tomando en consideracion las necesidades del software Esto era un alejamiento del diseno del sistema de computacion de ese tiempo donde un procesador y su conjunto de instrucciones serian disenados y despues entregados a la gente del software y todavia es asi Es decir las arquitecturas modernas como el x86 o el PPC son esencialmente arquitecturas basadas en conjuntos de instrucciones tradicionales en vez de disenos holisticos como los sistemas originales de Burroughs Soporte de lenguaje Editar El B5000 fue disenado para soportar exclusivamente lenguajes de alto nivel Esto ocurrio en un tiempo en que tales lenguajes comenzaban a ser prominentes con FORTRAN y luego COBOL FORTRAN y COBOL eran considerados lenguajes debiles por algunos comparado con tecnicas modernas de software asi que fue adoptado un lenguaje nuevo que no habia sido probado ALGOL 60 El dialecto del ALGOL seleccionado para el B5000 fue el Elliott ALGOL primero disenado e implementado por C A R Hoare en un Elliot 503 Este era una extension practica del ALGOL con instrucciones de I O que el ALGOL habia ignorado y poderosas instrucciones de procesamiento de cadenas La famosa conferencia de Turing de Hoare fue sobre este tema Asi el B5000 fue basado en un lenguaje muy poderoso La mayoria de los otros proveedores solamente podian sonar en implementar un compilador ALGOL y la mayor parte de la industria descarto el ALGOL pues no lo podian implementar Sin embargo un brillante joven estudiante llamado Donald Knuth habia implementado previamente el ALGOL 58 en una maquina anterior de Burroughs durante tres meses de verano Muchos descartaron el ALGOL creyendo equivocadamente que los lenguajes de alto nivel no podian tener la misma potencia que el ensamblador y asi no se dieron cuenta del potencial del ALGOL como lenguaje de programacion de sistemas una opinion no revisada hasta el desarrollo del lenguaje de programacion C El compilador del ALGOL de Burroughs era muy rapido este impresiono al cientifico holandes Edsger Dijkstra cuando sometio un programa para ser compilado en la planta de Pasadena del B5000 Su mazo de tarjetas fue compilado casi inmediatamente y el quiso inmediatamente varias maquinas para su universidad Universidad Tecnica de Eindhoven de regreso en Europa El compilador era rapido por varias razones pero la razon primaria era que era un compilador de un solo paso one pass compiler Los computadores tempranos no tenian suficiente memoria para almacenar el codigo fuente asi que los compiladores e incluso los ensambladores usualmente necesitaban leer el codigo fuente mas de una vez La sintaxis del ALGOL requiere que cada variable u otro objeto sea declarada antes de ser usada asi que es factible escribir un compilador ALGOL que lea los datos solamente una vez Este concepto tiene implicaciones teoricas profundas pero tambien permite la compilacion muy rapida Los grandes sistemas de Burroughs podian compilar tan rapidamente como leian el codigo fuente de las tarjetas perforadas y tenian los lectores de tarjetas mas rapidos en la industria El poderoso compilador COBOL de Burroughs era tambien un compilador de un paso e igualmente rapido Un programa COBOL de 4000 tarjetas se compilaba tan rapidamente como las 1000 tarjetas por minuto en que los lectores podian leer el codigo El programa estaba listo para usarse tan pronto como las tarjetas pasaran a traves del lector Historia EditarEl primero de los grandes sistemas de Burroughs fue el B5000 Disenado en 1961 era un computador de segunda generacion usando logica de transistor discreto y memoria de nucleo magnetico Las maquinas sucesoras siguieron las tendencias de desarrollo de hardware para reimplementar la arquitectura en nueva logica durante los proximos 25 anos con el B5500 B6500 B5700 B6700 B7700 B6800 B7800 y finalmente la Serie A de Burroughs Despues de que Burroughs se convirtio en parte de Unisys Unisys continuo desarrollando nuevas maquinas basadas en el MCP CMOS ASIC Estas maquinas iban desde el Libra 100 hasta el Libra 500 con el Libra 590 siendo anunciado en el ano 2005 Posteriores Libras incluyendo el 590 tambien incorporaron los procesadores Intel Xeon y pueden correr la arquitectura de grandes sistemas de Burroughs en emulacion asi como en los procesadores MCP CMOS No esta claro si Unisys continuara el desarrollo de nuevos MCP CMOS ASICs Burroughs 1961 1986 B5000 1961 Sistema inicial computador de 2 ª generacion transistor B5500 1964 Mejora de la velocidad 3x 2 B6500 1969 Computador de 3 ª generacion circuitos integrados hasta 4 procesadoresB5700 1971 Nuevo nombre para el B5500B6700 1971 Nuevo nombre correccion de error para el B6500B7700 1972 Procesador mas rapido cache para la pila hasta 8 procesadores B6800 1977 Memoria de semiconductor arquitectura NUMAB7800 1977 Memoria de semiconductor mas rapido hasta 16 procesadoresA Series 1984 Reimplementado en un diseno personalizado Motorola ECL MCA1 luego MCA2 gate arraysUnisys 1986 presente Micro A 1989 Mainframe de escritorio con un procesador en un simple chip SCAMP 3 processor Clearpath HMP NX 4000 198 Clearpath HMP NX 5000 199 Clearpath HMP LX 5000 1998 Implementa grandes sistemas de Burroughs solo en emulacion procesadores Intel Xeon 4 Libra 100 2002 Libra 200 200x Libra 300 200x Libra 400 200x Libra 500 2005 ej Libra 595 5 Libra 600 2006 ALGOL EditarArticulo principal ALGOL Los grandes sistemas de Burroughs implementaron una arquitectura de pila derivada del ALGOL a diferencia de arquitecturas lineares tales como las del PDP 11 Motorola M68k e Itanium y arquitecturas segmentadas como x86 y Texas Instruments Esto se refiere a la disposicion de la memoria y como un programa la usa Mientras que el B5000 fue disenado especificamente alrededor del ALGOL esto fue solamente un punto de partida Otros lenguajes orientados a los negocios como COBOL tambien eran bien soportados mas notablemente por los poderosos operadores de string que fueron incluidos para el desarrollo de compiladores rapidos El ALGOL usado en el B5000 es un subconjunto extendido del ALGOL Incluye poderosas instrucciones de manipulacion de string pero excluye ciertas construcciones del ALGOL notablemente los parametros formales no especificados Un mecanismo DEFINE responde a un proposito similar a los defines encontrados en C pero esta completamente integrado en el lenguaje en lugar de ser un preprocesador El tipo de datos EVENT facilita la coordinacion entre los procesos y los bloques ON FAULT activan el manejo de fallas del programa El nivel de usuario del ALGOL no incluye muchas de las construcciones inseguras necesarias por el sistema operativo u otro software de sistema Dos niveles de extensiones del lenguaje proporcionan las construcciones adicionales ESPOL y NEWP para escribir el MCP y el software estrechamente relacionado y DCALGOL y DMALGOL para proporcionar extensiones mas especificas para las clases especificas de software de sistema ESPOL y NEWP Editar Originalmente el sistema operativo MCP del B5000 fue escrito en una extension ALGOL llamada Executive Systems Programming Oriented Language ESPOL Lenguaje Orientado a la Programacion de Sistemas Ejecutivos A mediados de los anos 1970 fue remplazado por un lenguaje llamado NEWP Aunque NEWP probablemente solo significaba New Programming language Nuevo Lenguaje de Programacion las leyendas rodean el nombre Una historia comun quizas apocrifa alrededor de Burroughs en ese entonces sugirio que el nombre viene de No Executive Washroom Privileges No Privilegios al Servicio Ejecutivo Otra historia es que aproximadamente en 1976 John McClintock de Burroughs el ingeniero de software que desarrollo el NEWP llamado el lenguaje NEWP despues de que se le pregunto otra vez ya tiene un nombre contestando nyoooop no el adopto eso como un nombre NEWP era tambien un subconjunto de la extension del ALGOL pero fue mas seguro que ESPOL y elimino algunas complejidades poco usadas del ALGOL De hecho todas las construcciones inseguras son rechazadas por el compilador NEWP a menos que haya un bloque especificamente marcado para permitir esas instrucciones Estos bloques marcadores proporcionan un mecanismo de proteccion multi nivel Los programas de NEWP que contienen construcciones inseguras son inicialmente no ejecutables El administrador de seguridad de un sistema tienen la capacidad de bendecir tales programas y hacerlos ejecutables pero los usuarios normales no pueden hacer esto Incluso los usuarios privilegiados quienes normalmente tienen privilegios de root pueden no estar capacitados para hacer esto dependiendo de la configuracion elegida por el sitio Mientras NEWP puede ser usado para escribir programas generales y tiene un numero de caracteristicas disenadas para los grandes proyectos de software no soporta todo lo que hace ALGOL NEWP tiene un numero de facilidades para permitir proyectos de software en grande tales como el sistema operativo incluyendo interfaces nombradas funciones y datos grupos de interfaces modulos y supermodulos Los modulos agrupan datos y funciones juntos permitiendo el facil acceso a los datos como globales dentro del modulo Las interfaces permiten a un modulo importar y exportar funciones y datos Los supermodulos permiten que los modulos sean agrupados DCALGOL y el Message Control Systems MCS Editar El segundo de nivel intermedio de seguridad entre el codigo del sistema operativo en NEWP y los programas de usuario en ALGOL es para los programas middleware que son escritos en Data Comms ALGOL DCALGOL Esto se utiliza para la recepcion y despacho de mensajes que remueve mensajes los queues de entrada y los coloca en los queues para manejar otros procesos en el sistema El middleware como COMS introducido alrededor de 1984 recibe mensajes desde alrededor de la red y despacha estos mensajes a procesos de manejo especificos o a un Message Control System MCS sistema de control de mensaje como por ejemplo Command AND Edit CANDE Comando y edita el ambiente de desarrollo de programas Los MCS son elementos de software dignos de mencion ellos controlan las sesiones de usuario y proporcionan seguimiento del estado del usuario sin tener que correr procesos por usuario puesto que una sola pila de MCS puede ser compartido por muchos usuarios El balance de carga tambien puede ser alcanzado a nivel del MCS Por ejemplo diciendo que se quieren manejar 30 usuarios por pila en este caso si se tienen 31 a 60 usuarios se tendran dos pilas de 61 a 90 usuarios tres pilas etc Esto da a las maquinas B5000 una gran ventaja de desempeno en un servidor puesto que no se necesita iniciar otro proceso de usuario y asi crear una nueva pila cada vez que un usuario se conecta al sistema Asi que se pueden servir efectivamente los usuarios con los MCSs independientemente de si requieren estado o no Los MCSs tambien proporcionan la espina dorsal del procesamiento transaccional a gran escala El MCS hablaba con un coprocesador externo el Terminal Control Processor TCP procesador de control de terminal Este era un minicomputador de 24 bits con una arquitectura de registro convencional y capacidad de hardware de entrada salida para manejar miles de terminales remotos El TCP y el B6500 se comunicaban por mensajes en memoria esencialmente paquetes en terminos de hoy y el MCS hacia el procesamiento de esos mensajes del lado del B6500 El TCP tenia un ensamblador pero este era el compilador ALGOL del B6500 Habia una funcion del ALGOL para cada clase de instruccion del TCP y si se llamara esa funcion entonces los correspondientes bits de instruccion TCP serian emitidos a la salida Un programa TCP era un programa ALGOL que no abarcaba nada mas que una lista larga de llamadas a estas funciones una para cada declaracion de lenguaje ensamblador Esencialmente el ALGOL actuaba como el paso macro de un macro ensamblador El primer paso era el compilador de ALGOL el segundo paso corria el programa resultante en el B6500 que entonces emitiria el binario para el TCP DMALGOL y las bases de datos Editar Otra variante del ALGOL es el Data Management ALGOL DMALGOL ALGOL de gestion de datos DMALGOL es ALGOL extendido para compilar el software de bases de datos DMSII desde los archivos de descripcion de base de datos creados por el compilador DASDL Los disenadores y los administradores de base de datos compilan descripciones de base de datos para generar el codigo DMALGOL adaptado para las tablas y los indices especificados Los administradores nunca necesitan escribir ellos mismos en DMALGOL Los programas a nivel de usuario normales obtienen el acceso a la base de datos al usar el codigo escrito en lenguajes de aplicacion principalmente ALGOL y COBOL extendidos con instrucciones de base de datos y directivas de tratamiento transaccional La caracteristica mas notable de DMALGOL son sus mecanismos de procesamiento para generar el codigo para manejar las tablas y los indices El procesamiento de DMALGOL incluye variables y bucles y puede generar nombres basados en variables de tiempo de compilacion Esto permite la adaptacion mucho mas alla de lo que puede ser hecho por facilidades de procesamiento que carecen bucles El DMALGOL es usado para proporcionar las rutinas de acceso adaptadas para las bases de datos DMSII Despues de que una base de datos es definida usando el Data Access and Structure Definition Language DASDL Lenguaje de Definicion Estructurado y de Acceso de Datos el esquema es traducido por el preprocesador en rutinas adaptadas de acceso DMALGOL y despues compilado Esto significa que a diferencia de otras implementaciones de DBMS a menudo no hay necesidad de codigo if then else especifico de base de datos en tiempo de ejecucion En los anos 1970 estas adaptaciones fueron usadas muy extensivamente para reducir el tamano y el tiempo de ejecucion del codigo Fue usado mucho menos en anos posteriores en parte porque el ajuste fino de bajo nivel para la memoria y la velocidad llego a ser menos critico y en parte porque eliminando el preprocesamiento hace la codificacion mas simple y por lo tanto permitiendo optimizaciones mas importantes En anos posteriores ya no siendo una preocupacion el tamano de codigo del compilador la mayor parte de las construcciones de preprocesamiento fueron hechas disponibles en el nivel de usuario de ALGOL Solamente las construcciones inseguras y el procesamiento directo del archivo de descripcion de la base de datos permanecen restringidas a DMALGOL Roy Guck de Burroughs fue uno de los principales desarrolladores de DMSII Arquitectura de pila EditarEn muchos de los primeros sistemas y lenguajes a menudo se les decia a los programadores que no hicieran sus rutinas demasiado pequenas porque las llamadas y retornos de procedimiento eran operaciones costosas tenian que ser realizados un numero de operaciones para mantener el pila El B5000 fue disenado como una maquina de pila todos los datos del programa eran guardados en la pila a excepcion de los arreglos que incluyen strings y objetos Esto significo que las operaciones de la pila fueron optimizadas para la eficacia Como una maquina orientada a pila no habia registros direccionables para el programador La multitarea tambien era muy eficiente en las maquinas B5000 Hay una instruccion especifica para realizar cambios de proceso MVST mueve pila 6 Cada pila representa un proceso una tarea o un hilo y las tareas pueden resultar bloqueadas esperando peticiones de recursos que incluye esperar a un procesador para correr en el si la tarea ha sido interrumpida debido a la multitarea preemptiva Los programas de usuario no pueden realizar un MVST y en el sistema operativo hay solamente una linea de codigo donde es hecho esto Asi que un cambio de proceso procede algo similar a esto un proceso pide un recurso que no esta disponible inmediatamente quiza una lectura de un registro de un archivo desde un bloque que no esta actualmente en memoria o el temporizador del sistema timer ha disparado una interrupcion Entonces se entra al codigo del sistema operativo y corre encima de la pila del usuario Apaga los temporizadores del proceso del usuario El proceso actual es puesto en la cola queue apropiada para el recurso pedido o la cola esperando por el procesador si esto es un cambio de contexto preemtivo El sistema operativo determina el primer proceso en la cola e invoca la instruccion move stack que hace al proceso en la cabeza de la cola activo Velocidad de la pila y desempeno Editar Algunos de los detractores de la arquitectura B5000 creyeron que la arquitectura de pila era inherentemente lenta comparada con las arquitecturas basadas en registros El truco para la velocidad del sistema es guardar los datos tan cerca al procesador como sea posible En la pila del B5000 esto fue hecho asignando las dos posiciones superiores de la pila a dos registros A y B La mayoria de las operaciones son realizadas en esas dos posiciones del tope de la pila En maquinas mas rapidas despues del B5000 una mayor parte de la pila se podia mantener en registros o un cache cerca del procesador Asi los disenadores de los sistemas B5000 actuales pueden optimizar en cualquier cosa que sea la ultima tecnica y los programadores no tienen que ajustar su codigo para que corra mas rapido incluso no necesitan recompilar protegiendo asi la inversion en software Se sabe que algunos programas han corrido por anos sobre muchas mejoras del procesador Tales mejoras en velocidad son limitadas en las maquinas basadas en registros Otro punto para la velocidad segun lo promovido por los disenadores RISC era que la velocidad de procesador es considerablemente mas rapida si todo esta en un solo chip Esto era un punto valido en los anos 1970 cuando las arquitecturas mas complejas tales como el B5000 requirieron demasiados transistores para caber en un solo chip Sin embargo este no es el caso hoy en dia y cada maquina sucesora del B5000 ahora cabe en un solo chip asi como tambien las tecnicas de soporte de desempeno tales como caches y tuberias de instruccion instruction pipelines De hecho la linea Series A de sucesores del B5000 incluyo el primer mainframe en un simple chip el Micro A de finales de los anos 1980 Este chip de mainframe llamado Single Chip A series Mainframe Processor SCAMP descansaba en una tarjeta de circuito impreso enchufable basada en Intel Como los programas se mapean en la arquitectura de la pila Editar Aqui hay un ejemplo de como los programas se mapean en la arquitectura de la pila begin Este es el nivel lexico 2 el nivel cero es reservado para el sistema operativo y el nivel 1 para los segmentos de codigo En el nivel 2 ponemos las variables globales para nuestro programa integer i j k real f g array a 0 9 procedure p real p1 p2 value p1 p1 paso por valor p2 paso implicitamente por referencia begin Este bloque esta en el nivel lexico 3 real r1 r2 r2 p1 5 p2 r2 Esto fija g al valor de r2 p1 r2 Esto fija p1 al valor de r2 pero no f Puesto que esto sobreescribe el valor original de f en p1 esto muy probablemente indica un error Pocos de los sucesores del ALGOL han corregido esta situacion haciendo los parametros por valor como solo lectura la mayoria no lo han hecho if r2 gt 10 then begin Una variable declarada aqui hace a este el nivel lexico 4 integer n La declaracion de una variable hace a esto un bloque que invocara algun codigo de construccion de pila Normalmente Ud no declarara las variables aqui en tal caso esto seria una declaracion compuesta no un bloque lt La pila de ejemplo esta ejecutandose en alguna parte aqui end end p f g end Cada stack frame marco de pila corresponde a un nivel lexico en el ambiente de ejecucion actual Como usted puede ver el nivel lexico es el anidamiento textual estatico de un programa no el anidamiento de llamada dinamica Las reglas de visibilidad del ALGOL un lenguaje disenado para compiladores de un solo paso significa que solamente las variables declaradas antes de la posicion actual son visibles en esa parte del codigo a excepcion de declaraciones hacia adelante forward declarations Todas las variables declaradas en bloques de encerramiento son visibles Otro caso es que las variables del mismo nombre pueden ser declaradas en bloques internos y estas efectivamente ocultan a las variables externas que llegan a ser inaccesibles Puesto que el anidamiento lexico es estatico es muy raro encontrar a un programa anidado mas de cinco niveles de profundidad y podria arguirse que tales programas serian pobremente estructurados Las maquinas B5000 permiten el anidamiento de hasta 32 niveles Los procedimientos pueden ser invocados de cuatro maneras normal llamada proceso y ejecucion Procedimientos Editar Un procedimiento es llamado de la manera normal en que cualquier lenguaje invoca una rutina suspendiendo la rutina que llama hasta que el procedimiento invocado retorne El mecanismo de llamada invoca a un procedimiento como corrutina Las corrutinas tienen tareas asociadas donde el control es pasado explicitamente entre las tareas por medio de una instruccion CONTINUE Estos son procesos sincronos El mecanismo de proceso invoca a un procedimiento como una tarea asincrona y en este caso una pila separada es iniciada comenzando en el nivel lexico del procedimiento procesado Como la tarea es asincrona a diferencia de las corrutinas no hay manera de saber exactamente cuando el control sera pasado entre las tareas Note tambien que el procedimiento procesado todavia tiene acceso al ambiente de encerramiento y esto es un mecanismo muy eficiente de comunicacion entre procesos Inter Process Communication IPC Puesto que dos o mas tareas tienen ahora acceso a las variables comunes las tareas deben ser sincronizadas para prevenir condiciones de carrera que es manejado por el tipo de datos EVENT evento donde los procesos pueden esperar WAIT en un evento hasta que sean causados por otro proceso cooperativo Los eventos tambien permiten la sincronizacion de exclusion mutua a traves de las funciones PROCEDURE y LIBERATE Si por cualquier razon la tarea hija muere la tarea que llama puede continuar sin embargo si muere el proceso padre entonces todos los procesos hijo son terminados automaticamente En una maquina con mas de un procesador los procesos pueden correr simultaneamente Este mecanismo de evento es un activador basico para el multiprocesamiento ademas de la multitarea Tipo de invocacion de ejecucion Editar El ultimo tipo de invocacion es la ejecucion Esto hace correr a un procedimiento como una tarea independiente que pueda continuar despues de que el proceso que la origino termine Por esta razon el proceso hijo no puede tener acceso a variables en el ambiente del padre y todos los parametros pasajeros al procedimiento invocado deben ser llamados por valor Asi el Burroughs Extended ALGOL tenia todas las caracteristicas del multiprocesamiento y sincronizacion de lenguajes posteriores como el Ada con el beneficio adicional que el soporte para los procesos asincronos fue incorporado a nivel del hardware Procedimientos en linea Editar Una ultima posibilidad es que un procedimiento pueda ser declarado INLINE en linea eso es cuando el compilador ve una referencia a el y el codigo para el procedimiento es generado en linea para ahorrar los gastos indirectos de una llamada de procedimiento Esto es hecho mejor para pequenas partes de codigo y es como una definicion excepto que usted no consiga los problemas con los parametros que usted pueda con las definiciones Esta facilidad esta disponible en NEWP Llamadas asincronas Editar En el programa de ejemplo solamente son usadas las llamadas normales asi que toda la informacion estara en una sola pila Para las llamadas asincronas la pila estaria dividida en multiples pilas de modo que los procesos compartan datos pero corran asincronamente Ventajas de la estructura de la pila Editar Una cosa agradable de la estructura de la pila es que si un programa falla es tomada una descarga de la pila y es muy facil para un programador descubrir exactamente cual era el estado del programa cuando estaba corriendo Compare eso a los vaciados de memoria memory dumps y el intercambio de paquetes de otros sistemas Otra cosa acerca de la estructura de la pila es que los programas son implicitamente recursivos El FORTRAN no era una lenguaje recursivo y era quizas un obstaculo a la comprension de la gente de como el ALGOL debia ser implementado para tener recursion En el B5000 esto no era un problema de hecho tenian el problema reverso como evitar que los programas fueran recursivos Al la final ellos no le prestaron atencion incluso el compilador FORTRAN de Burroughs era recursivo puesto que era improductivo pararlo para que no fuera asi Asi el FORTRAN de Burroughs fue mejor que cualquier otra implementacion de FORTRAN cita requerida de hecho Burroughs comenzo a ser conocido por sus superiores compiladores e implementaciones de lenguajes incluyendo el orientado a objetos Simula un sobreconjunto del ALGOL y Kenneth Iverson el disenador del APL declaro que la implementacion de Burroughs del APL era la mejor que el habia visto cita requerida Por otro lado John McCarthy el disenador del lenguaje LISP discrepo puesto que el LISP fue basado en codigo modificable cita requerida a el no le gustaba el codigo no modificable del B5000 cita requerida pero de todos modos la mayoria de las implementaciones del LISP correrian en un ambiente interpretativo Observe tambien que las pilas automaticamente usan tanta memoria como es necesaria para un proceso No habia que hacer SYSGENs en los sistemas de Burroughs como con los sistemas de la competencia para preconfigurar las particiones de la memoria en las cuales correrian las tareas De hecho Burroughs era realmente campeon en plug and play en el sentido que los perifericos adicionales se podian enchufar en el sistema sin tener que recompilar el sistema operativo con nuevas tablas de perifericos Asi estas maquinas podian verse como los precursores de los dispositivos de hoy como el USB y el firewire Arquitectura basada en etiquetas EditarEl aspecto mas definitorio del B5000 es que es una maquina de pila segun lo tratado arriba Sin embargo otras dos caracteristicas muy importantes de la arquitectura son que esta basada en etiquetas tags y descriptores En el B5000 original existia un bit en cada palabra para identificarla como una palabra de codigo o de datos Esto era un mecanismo de seguridad para parar programas que pudieran corromper codigo de la manera en que lo hacen hoy los crackers Una ventaja para el codigo inmodificable es que el codigo B5000 es completamente reentrante no importa cuantos usuarios estan corriendo un programa siempre habra solamente una copia del codigo en memoria asi ahorrando una cantidad sustancial de memoria estas maquinas eran realmente muy eficientes en el uso de la memoria y el disco Mas adelante cuando el B6500 fue disenado se dieron cuenta de que la distincion de 1 bit entre el codigo y los datos era una idea poderosa y fue extendida a tres bits fuera de la palabra de 48 bits para formar una etiqueta tag Los bits de datos estan en los bits 0 47 y la etiqueta esta en los bits 48 50 El bit 48 era de solo lectura asi las etiquetas impares indicaban palabras de control que no se podian escribir por un programa de nivel de usuario A las palabras del codigo se les dieron la etiqueta 3 Aqui hay una lista de las etiquetas y de su funcion Etiqueta Tipo de palabra Descripcion0 Data Todo tipo de datos del usuario y del sistema Datos de texto y numeros de simple precision2 Double Double Precision data Dato de doble precision 4 SIW Step Index word used in loops Palabra de salto de indice usada para bucles 6 Uninitialized data Dato no inicializado SCW Software Control Word used to cut back the stack Palabra de control de software usada para reducir la pila 1 IRW Indirect Reference Word Palabra de referencia indirecta SIRW Stuffed Indirect Reference Word palabra de referencia indirecta 3 Code Program code word palabra de codigo de programa MSCW Mark Stack Control Word Marca de palabra de control de la pila RCW Return Control Word Palabra de control de retorno TOSCW Top of Stack Control Word Palabra de control del tope de la pila SD Segment Descriptor Descriptor de segmento 5 Descriptor Data block descriptors Descriptor de bloque de datos 7 PCW Program Control Word Palabra de Control de Programa Nota Internamente algunas de las maquinas tenian palabras de 60 bits con los bits adicionales usados para propositos de ingenieria como por ejemplo un campo de correccion de error de codigo Hamming pero estos nunca fueron vistos por los programadores Nota La encarnacion actual de estas maquinas el Unisys ClearPath ha extendido las etiquetas a cuatro bits El nivel de microcodigo que especificaba etiquetas de cuatro bit fue referido como nivel Gamma Las palabras marcadas etiquetadas con numeros pares son datos de usuario que pueden ser modificados por un programa de usuario como un estado de usuario las palabras marcadas con numeros impares son creadas y usadas directamente por el hardware y representan un estado de ejecucion del programa Puesto que estas palabras son creadas y consumidas por instrucciones especificas o el hardware el formato exacto de estas palabras puede cambiar con la implementacion del hardware y los programas de usuario no necesitan ser recompilados puesto que el mismo flujo del codigo producira los mismos resultados aunque el formato de la palabra del sistema pudiera haber cambiado Las palabras con etiqueta 1 representan direcciones de datos en el stack El normal IRW simplemente almacena una pareja de direcciones a los datos en la pila actual La SIRW referencia datos en cualquier pila al incluir un numero de pila en la direccion Las palabras con etiqueta 5 son los descriptores que son descritos mas completamente en la siguiente seccion Las palabras de etiqueta 5 representan direcciones de datos fuera del stack La etiqueta 7 es la palabra de control de programa PCW que describe un punto de entrada del procedimiento Cuando los operadores encuentran un PCW se entra en el procedimiento El operador ENTR explicitamente entra en un procedimiento rutina sin valor de retorno Las funciones rutinas con valor de retorno son implicitamente entradas por los operadores tales como llamada de valor VALC Note que las rutinas globales estan almacenadas en los ambientes D 2 como SIRWs que apuntan a un PCW almacenado en el diccionario del segmento de codigo en el ambiente D 1 El ambiente de D 1 no es almacenado en el stack actual porque puede ser referenciado por todos los procesos que comparten este codigo Asi el codigo es reentrante y compartido La etiqueta 3 representa palabras de codigo en si mismas que no ocurriran en el stack La etiqueta 3 es tambien usada para las palabras de control del stack MSCW RCW TOSCW Arquitectura basada en descriptores EditarArticulo principal Descriptores de los grandes sistemas de Burroughs La figura a la izquierda muestra como la arquitectura de los sistemas grandes de Burroughs era fundamental una arquitectura de hardware para la programacion orientada a objetos algo que todavia no existe en arquitecturas convencionales Influencia del B5000 EditarIndudablemente hay influencia directa del B5000 en la gama actual del rango de mainframes ClearPath de Unisys que son los descendientes directos del B5000 y todavia tienen el sistema operativo MCP despues de 40 anos de desarrollo consistente Ahora la esta arquitectura es llamada emode por modo de emulacion puesto que la arquitectura B5000 puede ser implementada en muchas plataformas Tambien iba a estar un nmode modo nativo pero este fue eliminado cita requerida asi que a menudo se puede oir que las maquinas sucesoras del B5000 son referidas como maquinas emode Las maquinas B5000 fueron programadas exclusivamente en lenguajes de alto nivel no hay ensamblador obviamente esto no se aplicaria al emode el cual es entrado para correr en el hardware base y rompe asi la base fundamental de la arquitectura arriba indicada excepto cuando se indica abajo La arquitectura de pila del B5000 inspiro a Chuck Moore el disenador del lenguaje de programacion Forth quien encontro al B5500 mientras estaba en el MIT En Forth The Early Years Moore describio la influencia observando que las instrucciones DUP DROP y SWAP del Forth vinieron de las instrucciones correspondientes del B5500 DUPL DLET EXCH Los sistemas de Hewlett Packard HP fueron influenciados por el B5000 puesto que algunos ingenieros de Burroughs encontraron luego un empleo disenando maquinas para HP y estas tambien eran maquinas de pila El trabajo de Bob Barton sobre la notacion polaca inversa RPN encontro su camino en las calculadoras HP comenzando con la HP 9100A y notablemente la HP 35 y las calculadoras subsecuentes Los sistemas NonStop disenados por Tandem Computers a finales de los anos 1970 y principios de los 1980 eran tambien maquinas de pila influenciadas por el B5000 indirectamente a traves de la conexion con HP ya que varios de los primeros ingenieros de Tandem venian de HP Alrededor 1990 estos sistemas migraron a una arquitectura RISC y ahora contienen solamente peculiares vestigios de su arquitectura de pila Bob Barton era tambien muy influyente en Alan Kay Kay tambien fue impresionado por la arquitectura data driven tagged del B5000 y esto influencio su pensamiento en sus desarrollos de la programacion orientada a objetos y el Smalltalk Otra faceta de la arquitectura B5000 fue que era una arquitectura segura que corria directamente en el hardware Esta tecnica tiene descendientes en las maquinas virtuales de hoy en sus tentativas de proporcionar ambientes seguros Un notable producto es la maquina virtual de Java que proporciona una caja de arena segura en la cual corren las aplicaciones El valor de la arquitectura de hardware atando lo que existio antes del emode seria substancialmente preservado en el Intel iAPXx86 hasta el punto que el MCP fuera el unico programa de control pero el soporte proporcionado por los hardwares comunes sigue siendo inferior al del modo nativo Una arquitectura de procesador Intel poco conocida que realmente precedio al iAPXx86 el Intel iAPX 432 habia proporcionado una base fisica equivalente puesto que esencialmente tambien era una arquitectura de flujo de datos orientada al objeto Referencias Editar John Mashey 15 de agosto de 2006 Admired designs designs to study comp arch 1155671202 964792 162180 b28g2000cwb googlegroups com Consultado el 15 de diciembre de 2007 Burroughs 3rd Generation SCAMP picture at dave s Old computers Unisys Accelerates Mainframe Rebirth with New ClearPath Enterprise Servers Aggressive New Pricing Business Wire HighBeam Research Libra 595 Organick Elliot 1973 Computer System Organization ACM pp 115 117 ISBN 0125282508 Lectura adicional EditarBarton Robert S A New Approach to the Functional Design of a Digital Computer Proceedings of the Western Joint Computer Conference ACM 1961 Charles Babbage Institute Burroughs B 5000 Conference University of Minnesota Minneapolis The Burroughs 5000 computer series is discussed by individuals responsible for its development and marketing from 1957 through the 1960s in a 1985 conference sponsored by AFIPS and Burroughs Corporation Gray George Some Burroughs Transistor Computers Unisys History Newsletter Volume 3 Number 1 March 1999 Gray George Burroughs Third Generation Computers Unisys History Newsletter Volume 3 Number 5 October 1999 Hauck E A Dent Ben A Burroughs B6500 B7500 Stack Mechanism SJCC 1968 pp 245 251 McKeeman William M Language Directed Computer Design Fall Joint Computer Conference 1967 pp 413 417 Organick Elliot I Computer System Organization The B5700 B6700 series Academic Press 1973 Waychoff Richard Stories of the B5000 and People Who Were There September 27 1979Vease tambien EditarBurroughs Maquina de pila Lenguaje de programacion orientado a pila Forth Datos Q3359776 Obtenido de https es wikipedia org w index php title Grandes sistemas de Burroughs amp oldid 141960903, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos