Sistema operativo experimental de IBM
Sistema operativo
CP-40 fue un precursor de investigación para CP-67 , que a su vez era parte del entonces revolucionario CP[-67]/CMS de IBM , un sistema operativo de tiempo compartido de máquina virtual / memoria virtual para el IBM System/360 Model 67 , y el padre de la familia VM de IBM . CP-40 ejecutó múltiples instancias de sistemas operativos cliente, particularmente CMS , el Cambridge Monitor System , [1] construido como parte del mismo esfuerzo. Al igual que CP-67, CP-40 y la primera versión de CMS fueron desarrollados por el personal del Cambridge Scientific Center (CSC) de IBM, trabajando en estrecha colaboración con investigadores del MIT en Project MAC y Lincoln Laboratory . El uso de producción de CP-40/CMS comenzó en enero de 1967. CP-40 se ejecutó en un IBM System/360 Model 40 único y especialmente modificado .
Objetivos del proyecto
El CP-40 fue un sistema de investigación único. Sus objetivos declarados eran:
- Proporcionar información de investigación al equipo System/360 Modelo 67 que trabajaba en Poughkeepsie, quienes estaban innovando con el concepto aún no probado de memoria virtual.
- Apoyar los requisitos de tiempo compartido de CSC en Cambridge.
Sin embargo, también había una importante misión no oficial: demostrar el compromiso de IBM con los usuarios de tiempo compartido como el MIT y su capacidad para dar soporte a ellos. CP-40 (y su sucesor) lograron sus objetivos desde puntos de vista técnicos y sociales: ayudaron a demostrar la viabilidad de las máquinas virtuales, a establecer una cultura de usuarios de tiempo compartido y a lanzar una industria de servicios informáticos remotos. El proyecto se vio envuelto en una guerra política interna de IBM sobre el tiempo compartido frente al procesamiento por lotes; y no logró ganarse los corazones y las mentes de la comunidad académica de la informática, que finalmente se alejó de IBM en favor de sistemas como Multics , UNIX , TENEX y varios sistemas operativos DEC . En última instancia, los conceptos de virtualización desarrollados en el proyecto CP-40 dieron frutos en diversas áreas y siguen siendo importantes hoy en día.
Características
CP-40 fue el primer sistema operativo que implementó la virtualización completa, es decir, proporcionó un entorno de máquina virtual que soportaba todos los aspectos de su sistema informático de destino (un S/360-40), de modo que otros sistemas operativos S/360 pudieran instalarse, probarse y usarse como si se tratara de una máquina independiente. CP-40 admitía catorce máquinas virtuales simultáneas. Cada máquina virtual se ejecutaba en "estado de problema": las instrucciones privilegiadas, como las operaciones de E/S, causaban excepciones, que luego eran detectadas por el programa de control y simuladas. De manera similar, las referencias a ubicaciones de memoria virtual que no estaban presentes en la memoria principal causaban errores de página , que nuevamente eran manejados por el programa de control en lugar de reflejarse en la máquina virtual. Se pueden encontrar más detalles sobre esta implementación en CP/CMS (arquitectura) .
La arquitectura básica y la interfaz de usuario de CP-40 se trasladaron a CP-67/CMS , que evolucionó hasta convertirse en la actual línea de productos VM de IBM.
Plataforma de hardware
No había un Modelo 67 disponible para construir el CP-40, por lo que se diseñó y construyó un dispositivo de memoria virtual personalizado basado en memoria asociativa (la "caja CAT" [2] ) para CSC. Esto implicó cambios tanto de hardware como de microcódigo en un System/360 Modelo 40 especialmente modificado. Estos cambios le dieron a la unidad la tecnología necesaria para la virtualización completa del hardware del System/360. Este Modelo 40 modificado influyó en el diseño del futuro Modelo 67, que estaba destinado a satisfacer las necesidades de la misma comunidad de usuarios de tiempo compartido (en particular, el Proyecto MAC del MIT y los Laboratorios Bell , aunque ambos sitios se convirtieron en notables fracasos de ventas de IBM).
Durante este período IBM implementó tres sistemas de memoria virtual distintos:
- La "Blaauw Box" (llamada así por Gerry Blaauw ), parte del diseño original del S/360-67
- El "CAT Box" (Cambridge Address Translator), añadido al S/360-40 de CSC para ejecutar CP-40
- La "DAT Box" (traducción dinámica de direcciones), anunciada como una incorporación a la serie S/370 en 1972
Todos estos sistemas eran diferentes, pero guardaban un cierto parecido familiar. La caja CAT del CP-40 fue un hito clave. Pugh et al. [3] citan un artículo del IEEE [4] sobre el hardware de memoria virtual del CP-40 y afirman que era "único en el sentido de que incluía un banco de registros de búsqueda paralela para acelerar la traducción dinámica de direcciones. Con fondos proporcionados por Cambridge, los ingenieros de IBM... construyeron una memoria asociativa de 64 registros y la integraron en un 360/40. El resultado, único en su tipo, se envió a Cambridge a principios de 1966".
Aunque la compatibilidad con la virtualización era un objetivo explícito del Modelo 40 modificado de CSC, aparentemente no fue así en el caso del diseño original del Modelo 67. El hecho de que las capacidades de virtualización se implementaran finalmente en el -67, y permitieran así el éxito del CP-67/CMS , habla de la tenacidad y la capacidad de persuasión del equipo de CSC.
CMS según CP-40
CMS se creó por primera vez en 1964 en CSC para ejecutarse como un sistema operativo "cliente" bajo CP-40. El líder del proyecto CMS fue John Harmon. Aunque cualquier sistema operativo S/360 podía ejecutarse en una máquina virtual CP-40, se decidió que un nuevo sistema operativo interactivo simple y de un solo usuario sería lo mejor para admitir usuarios interactivos de tiempo compartido. Esto evitaría la complejidad y la sobrecarga de ejecutar un sistema multiusuario como CTSS . (Compare esto con OS/MVT-TSO de IBM y sus sucesores: esencialmente un sistema operativo de tiempo compartido que se ejecuta como una sola tarea bajo un sistema operativo por lotes de IBM. Con CMS, cada usuario interactivo obtiene una máquina virtual privada).
En septiembre de 1965, ya se habían tomado muchas decisiones importantes sobre el diseño del CMS:
- Comandos fáciles de usar, con modo predeterminado, parámetros no requeridos siempre que sea posible (para facilitar el uso y la capacitación, y para minimizar los requisitos de control del trabajo)
- Un conjunto básico de comandos y macros del sistema de archivos; una convención de nombres de archivos simple, basada en el nombre de archivo, el tipo de archivo y el modo de archivo (modo de archivo = identificador de disco lógico o minidisco , una forma de asignación de letra de unidad )
- Registros asignados a bloques de tamaño fijo, que pueden leerse o escribirse por número de registro relativo
- Archivos que podrían crearse simplemente escribiendo en ellos, sin necesidad de operaciones especiales de "creación"
- Modos de archivo predeterminados, que permiten buscar discos en un orden fijo
Estos fueron cambios radicales con respecto a la difícil denominación de archivos, el control de trabajos (a través de JCL) y otros requisitos de los sistemas operativos "reales" de IBM. [5] (Algunos de estos conceptos habían sido objetivos para los sistemas operativos de otros proveedores, como Control Data Corporation y DEC ).
El diseño del sistema de archivos de CMS, con su estructura de directorios plana , se mantuvo deliberadamente simple. Creasy señala: "Se eligió esta estructura de múltiples discos, cada uno con un solo directorio, para que fuera simple pero útil. Los directorios vinculados de múltiples niveles, con archivos almacenados en áreas comunes, habían sido la tendencia de diseño cuando comenzamos. Simplificamos el diseño de este y otros componentes de CMS para reducir la complejidad de implementación". [6]
Los programas de aplicación que se ejecutaban bajo CMS se ejecutaban dentro del mismo espacio de direcciones. Accedían a los servicios del sistema, como el sistema de archivos de CMS, a través de una interfaz de programación sencilla al núcleo de CMS , que residía en la memoria baja dentro de la máquina virtual de CMS. Se proporcionaba una variedad de llamadas al sistema, la mayoría de las cuales serían familiares para los programadores de CMS actuales. (Dado que las aplicaciones se ejecutaban en la máquina virtual de CMS, podrían comportarse mal, sobrescribiendo datos de CMS, utilizando instrucciones privilegiadas o realizando otras acciones que podrían tomar el control de la máquina virtual o hacerla colapsar. Por supuesto, al hacerlo no podrían afectar a otras máquinas virtuales, que estaban todas aisladas entre sí; ni podrían dañar el programa de control subyacente. A diferencia de la mayoría de los sistemas operativos, los fallos de CP rara vez se debían a errores de aplicación, y por lo tanto eran relativamente raros).
Notas históricas
Las siguientes notas proporcionan citas breves, principalmente de Pugh, Varian y Creasy [ver referencias], que ilustran el contexto de desarrollo de CP-40. Se proporcionan citas directas en lugar de paráfrasis, porque las perspectivas de los autores influyen en sus interpretaciones. Véase también Historia de CP/CMS para obtener más contexto.
- Génesis del proyecto CP-40:
- Rasmussen, de la CSC, tenía "muchas dudas" sobre el TSS/360 y decidió que sus recursos inactivos de la CSC debían utilizarse para crear un "sistema de tiempo compartido creíble para el S/360", que se conocería como CP-40. El líder del proyecto fue Robert Creasy, que había sido programador del CTSS . [7]
- Los objetivos del CP-40 incluían tanto la realización de investigaciones (obtención y análisis de datos sobre sistemas y software, incluido el uso de memoria asociativa) como la satisfacción de los propios requisitos informáticos del CSC mediante el uso compartido del tiempo. Varian añade: "El verdadero propósito del proyecto era construir un sistema de tiempo compartido, pero los demás objetivos también eran genuinos y siempre se enfatizaban para disfrazar los aspectos "contraestratégicos" del proyecto". Creasy describe los objetivos del CP/CMS de esta manera: debía ser "un sistema de tiempo compartido de segunda generación para el recién anunciado IBM System/360... [que] respaldaría todas las actividades del centro de Cambridge, incluidas actividades tan diversas como la investigación de sistemas operativos, el desarrollo de aplicaciones y la preparación de informes por parte de programadores, científicos, secretarios y gerentes. Poco después de su inicio, resultó conveniente que el sistema fuera reconocido y apoyado financieramente desde fuera del centro como una herramienta para evaluar y probar el rendimiento de los sistemas operativos". [8]
- La investigación de CSC fue importante para IBM, porque en ese momento "no se sabía mucho sobre los sistemas de memoria virtual". Varian cita a LW Comeau: "El compromiso [de IBM] con la memoria virtual no estaba respaldado por ninguna experiencia exitosa... Lo que era aterrador era que nadie que estuviera fijando esta dirección de memoria virtual en IBM sabía por qué [el sistema de memoria virtual contemporáneo Ferranti] Atlas no funcionaba". (Comeau concluyó más tarde que el Atlas había sufrido un efecto de thrashing , que no se estudió hasta que se observó en el IBM M44/44X y en el CP-40.) [9] [10]
- Diseño del CP-40: Pugh et al. escriben que: "En 1964... IBM Research recomendaba el uso de principios de máquinas virtuales a los planificadores de tiempo compartido... [que fueron] recogidos por el equipo de Cambridge [CSC], que quería, entre otras cosas, un sistema capaz de probar sistemas operativos". Una decisión de diseño clave, tomada por Creasy y Comeau a finales de 1964, fue basar CP-40 no sólo en memoria virtual sino en máquinas virtuales (al principio llamadas pseudo-máquinas , hasta que el término posterior fue apropiado del proyecto IBM M44/44X – que Creasy describe como teniendo "ideas similares pero independientes". [11] Creasy proporciona una descripción clara de la estrategia de virtualización de CP, basada en el conjunto de instrucciones S/360 , que consistía en instrucciones privilegiadas de "estado de supervisor" distintas de las instrucciones normales de "estado de problema": "Cada programa de máquina virtual [CP] se ejecuta realmente [enteramente] en estado de problema.... Las instrucciones privilegiadas... [son] reproducidas por CP dentro de las máquinas virtuales...." Al ejecutar un SO en estado de problema, todas las instrucciones "complicadas" serían interceptadas automáticamente por el hardware. Esto dejó sólo un problema principal de virtualización: referencias de memoria. "La experiencia [con CTSS]... sugirió la necesidad de una reubicación dinámica del programa... para dividir los programas en piezas que pudieran ser movidas, fuera y dentro de la memoria independientemente uno del otro." [12]
- Máquinas virtuales CP-40:
- Los proyectos de investigación anteriores que involucraban el concepto de máquina virtual, como el IBM M44/44X, no habían intentado crear un duplicado virtual exacto de una máquina real. Creasy: "[Eran] lo suficientemente parecidos... como para demostrar que 'lo suficientemente parecido' no contaba".
- CP-40 dio el paso audaz de la virtualización completa , creando catorce entornos virtuales S/360, cada uno con un tamaño de memoria virtual fijo de 256K, acceso mapeado a particiones de disco y acceso en cola a dispositivos de registro de unidades (por ejemplo, impresoras). Comeau: "[La creación de la virtualización completa] permitió el desarrollo simultáneo de CP y CMS; nos permitió medir sistemas no virtuales, SO y DOS, en un entorno de memoria virtual, y también proporcionó un alto nivel de integridad y seguridad". [13] [14]
- Además de revelar el valor de la virtualización completa, el IBM M44/44X experimental "implantó la idea de que el concepto de máquina virtual no es necesariamente menos eficiente que los enfoques más convencionales", un supuesto central en la arquitectura CP-40, y que finalmente resultó muy exitoso. [15]
- CP-40 pronto soportaría "hasta una docena de máquinas virtuales System/360" bajo control de terminal [la mayoría de las fuentes indican catorce]. (CP-67 más tarde "explotó... la traducción de direcciones... y aumentó la velocidad... para duplicar la capacidad" de CP-40. [16] )
- CMS según CP-40:
- Acerca de la decisión de separar CMS y CP, Creasy escribe: "La implementación de CTSS ilustró la necesidad de un diseño modular para la evolución del sistema. Aunque tuvo éxito como sistema de producción, las interconexiones y dependencias de su diseño supervisor dificultaron la extensión y el cambio. Un concepto clave del diseño CP/CMS fue la bifurcación de la gestión de recursos informáticos y el soporte al usuario. En efecto, el diseño integrado [de CTSS] se dividió en CP y CMS". El valor de la experiencia adquirida en el proyecto CTSS no se puede exagerar. [17]
- Acerca de los primeros CMS, Creasy escribe: CMS "ofrecía un servicio de usuario único sin los problemas de compartir, asignar y proteger". [18] El desarrollo inicial de CMS implicaba arrancar CMS bajo BPS , uno de los primeros sistemas de soporte de S/360, hasta que CMS estaba lo suficientemente avanzado como para arrancar de forma independiente. Finalmente, el desarrollo se trasladó a máquinas virtuales bajo CP. [19]
Véase también
Referencias
- ^ Programa de control-67/Sistema de monitorización de Cambridge (GH20-0857-1) . IBM. Octubre de 1971.
- ^ Varian (1997), pág. 11 (la "caja CAT")
- ^ Pugh, Johnson y Palmer (1991), pág. 741 (nota 218 del cap. 6)
- ^ AB Lindquist; RR Seeber; LW Comeau (diciembre de 1966). "Un sistema de tiempo compartido que utiliza una memoria asociativa". Actas del IEEE . 54 (12): 1774–1779. doi :10.1109/PROC.1966.5261.
- ^ Varian (1997), p. 14 – novedad de la interfaz CMS
- ^ Creasy (1981), pág. 489 – sistema de archivos planos
- ^ Varian (1997), págs. 3, 9, 16 – génesis del proyecto CP-40
- ^ Creasy (1981), pág. 485 – objetivos de diseño
- ^ W. O'Neill, "Experiencia en el uso de un sistema de multiprogramación de tiempo compartido con hardware de reubicación de direcciones dinámicas", Proc. AFIPS Computer Conference 30 (Conferencia de informática conjunta de primavera, 1967), págs. 611-621 – thrashing on IBM M44/44X
- ^ LW Comeau, "Operating System/360 Paging Studies", Simposio sobre sistemas de jerarquía de almacenamiento de IBM, diciembre de 1966: una paliza al Atlas, citado en Varian (1997), pág. 17.
- ^ Creasy (1981), pág. 485 – similar pero independiente del IBM M44/44X
- ^ Creasy (1981), p. 486 – estrategia de virtualización: ejecución del estado del problema, más traducción de direcciones
- ^ Varian (1997), págs. 9, 13
- ^ Comeau (1982), págs. 40, 42-43, citado en Varian (1997), págs. 9, 13
- ^ L. Talkington, "Una buena idea y todavía en crecimiento", White Plains Development Center Newsletter , vol. 2, núm. 3 (marzo de 1969), citado en Varian (1997), pág. 10.
- ^ Pugh, Johnson y Palmer (1991), págs. 364-365
- ^ Creasy (1981), pág. 485 – separando CP de CMS
- ^ Creasy (1981), pág. 485 – alcance del CMS
- ^ Varian (1997), págs. 12, 15-16: Arranque de CMS bajo BPS
Lectura adicional
- Adair, R. J.; Bayles, R. U.; Comeau, L. W.; Creasy, R. J. (1966). Un sistema de máquina virtual para el 360/40 (Informe). Cambridge, MA: IBM, Cambridge Scientific Center. Informe 320-2007., citado en Varian (1997) y Creasy (1981)
- Comeau, L. W. (septiembre de 1982). "CP-40, el origen del VM/370". Actas de SEAS AM82 .
- Creasy, R. J. (1981). "El origen del sistema de tiempo compartido VM/370" (PDF) . IBM Journal of Research & Development . 25 (5): 483–490. doi :10.1147/rd.255.0483.
- Lingquist, A. B.; Seeber, R. R.; Comeau, L. W. (1966). "Un sistema de tiempo compartido que utiliza una memoria asociativa". Proc. IEEE . 54 (12): 1774–1779. doi :10.1109/PROC.1966.5261.
- Pugh, Emerson W.; Johnson, Lyle R.; Palmer, John H. (1991). Sistemas IBM 360 y primeros 370. Cambridge, MA: MIT Press. ISBN 0-262-16123-0.
- Varian, Melinda (1997). VM y la comunidad VM, pasado, presente y futuro (PDF) . SHARE 89 Sesiones 9059-9061.
Árbol genealógico