stringtranslate.com

NUEVOP

El New Executive Programming Language ( NEWP ) es un lenguaje de sistema interno de sintaxis estructurada para los sistemas de Programa de Control Maestro (MCP) de Unisys . El lenguaje se utiliza para escribir el sistema operativo MCP y otro software de utilidad del sistema , aunque también se puede utilizar para escribir software de sistema de usuario con la restricción de no utilizar el modo UNSAFE.

Varias construcciones lo separan del ALGOL extendido en el que se basa. Los operadores de lenguaje como MEMORY, que permite el acceso directo a la memoria, son utilizados estrictamente solo por el MCP. [1] NEWP reemplazó al lenguaje orientado a problemas de sistemas ejecutivos de Burroughs (ESPOL) en la década de 1970.

NEWP está estrechamente ligado a las características y semánticas de la plataforma y del propio MCP. Dado que este es el caso, nunca ha habido una necesidad de lenguaje ensamblador en estos sistemas desde ESPOL en 1961, y no se proporciona ningún ensamblador, ni siquiera para uso interno de Burroughs/Unisys. Los programadores de NEWP (y ESPOL) están familiarizados con la forma en que la máquina funciona como una máquina de pila y el conjunto de instrucciones, ya que cada declaración fuente se relaciona estrechamente con las instrucciones de máquina generadas . Esto contribuye a que la plataforma sea un sistema de multiprocesamiento seguro, ya que los programadores generales no pueden usar ningún ensamblador y NEWP en sí mismo se limita principalmente a escribir un sistema operativo, particularmente el MCP.

La programación del sistema no se realiza únicamente en un único lenguaje de sistema, sino en un conjunto de lenguajes de sistema que incluyen ALGOL extendido, [2] DCALGOL, [3] DMALGOL, [4] cada uno adecuado para diferentes niveles de programación del sistema, lo que garantiza la separación de preocupaciones .

Los clientes pueden utilizar NEWP para crear parches específicos del sitio para el MCP, así como para sus propias utilidades del sistema. Si bien NEWP puede generar programas ejecutables, dichos programas no pueden utilizar el modo UNSAFE, que está destinado únicamente al funcionamiento interno del MCP.

Constructos principales

NEWP es un lenguaje estructurado en bloques muy similar a Extended ALGOL. Aunque es un lenguaje de sistema de nivel inferior al de Extended ALGOL, NEWP incluye una comprobación de tipos más estricta. Por lo tanto, los programas compilables con ALGOL podrían no compilarse con NEWP. NEWP incluye varias características de sistema que no están disponibles en ALGOL, y las variantes de ALGOL DMALGOL y DCALGOL tienen extensiones que no están en NEWP específicamente para la gestión de datos en bases de datos, como DMSII y Semantic Information Manager (SIM), y DCALGOL para el procesamiento de transacciones y servidores de nivel superior con colas de solicitudes como en COMS (Communications Management System).

NEWP incluye varias características tomadas de otros lenguajes de programación que ayudan en la ingeniería de software. Entre ellas se encuentran los módulos (y, más tarde, los supermódulos), que agrupan funciones y sus datos, con interfaces de importación y exportación definidas. Esto permite la encapsulación de datos y la integridad de los módulos.

Modo INSEGURO

Dado que NEWP está diseñado para usarse como lenguaje de sistema operativo, permite el uso de varias construcciones inseguras. Si bien las funciones son de uso muy limitado, son fundamentales para el funcionamiento del sistema y, por lo tanto, están limitadas a áreas específicas del sistema operativo. El modo inseguro es para operaciones específicas del hardware. Cualquier bloque que contenga instrucciones inseguras debe anotarse con el tipo específico de elementos inseguros utilizados.

Los elementos no seguros solo se permiten dentro del sistema operativo. Los programas ejecutables generados por NEWP no pueden usar elementos no seguros (no hay bloques no seguros). Un bloque (una unidad que comienza con 'BEGIN' y termina con 'END') puede incluir directivas de bloque entre corchetes. UNSAFE es una directiva e incluye varias configuraciones no seguras. Por ejemplo:

 COMIENZA [NO SEGURO (DESCRIPTOR, PALABRA)] FIN;

Los elementos no seguros son declaraciones y sentencias adicionales. Entre las declaraciones no seguras adicionales se incluyen DESCRIPTOR, WORD y HARDLOCK.

DESCRIPTOR: Los descriptores son descriptores de bloques de memoria que incluyen la dirección y otros metadatos de bloques, como la longitud del bloque, el tipo de datos de la máquina (byte o palabra) y el bit de presencia para la operación de memoria virtual. Los descriptores proporcionan un alto nivel de protección de bloques de memoria sin posibilidad de desbordamiento o subdesbordamiento de la memoria (búfer). Como palabras de control, los descriptores no pueden ser manipulados directamente por ningún elemento de software que no sea el propio sistema operativo MCP, lo que garantiza la seguridad de la memoria.

HARDLOCK permite el bloqueo de bajo nivel en recursos compartidos de bajo nivel.

WORD permite el acceso arbitrario a cualquier palabra, incluidas las palabras de control de máquina (aquellas con etiquetas impares) y a los bits de las etiquetas en sí. Ningún otro software puede modificar arbitrariamente las palabras de control o las etiquetas.

Las anotaciones INSEGURAS incluyen: DESCRIPTOR, MACHINEOPS, MEMORIA, MISC, REFERENCIA, REGISTROS, UPLEVEL, PALABRA.

MEMORIA: En los niveles muy bajos de un sistema operativo, debe ser capaz de tratar a la máquina como una sola entidad con una sola memoria física. UNSAFE (MEMORY) permite al MCP ver la memoria completa como una gran matriz unidimensional declarada globalmente como M en el nivel léxico 0 (D[0]) . El alcance de M está restringido a los bloques anotados con UNSAFE [MEMORY]. Cada índice de matriz de M es la dirección de una palabra en la memoria. El uso de M está restringido a niveles muy bajos del sistema operativo MCP.

REGISTROS: Al ser una máquina de pila, los registros del procesador generalmente están ocultos al software (no son vistos por los programadores), incluidos los registros de la parte superior de la pila. Los detalles de los registros pueden variar entre las implementaciones de hardware, por lo que es deseable que el software no tenga ninguna dependencia de los detalles de los registros. Algunos registros controlan el funcionamiento específico del hardware. Cualquier software fuera de secciones específicas del MCP no debería ver los registros. Por lo tanto, la mayoría del software es independiente de muchos detalles del hardware, que se encuentran aislados en secciones del propio sistema operativo del MCP.

MACHINEOPS: Como no hay lenguaje ensamblador ni ensamblador, NEWP proporciona elementos intrínsecos (determinadas instrucciones NEWP) para generar operaciones críticas específicas de la máquina. Sin ensamblador, los programadores generales no pueden escribir programas que socaven la seguridad del sistema. Los operadores de la máquina se habilitan mediante la anotación de bloque UNSAFE (MACHINEOPS).

Dos de estos intrínsecos notables son STOP, que genera la instrucción de máquina STOP, y MOVESTACK, que genera la instrucción MVST que da como resultado un intercambio de procesos (un proceso representado por una pila), que vacía el estado específico del proceso en la pila actual y restaura el estado del proceso de destino (pila). A pesar de la importancia de esta instrucción intrínseca para la operación de multiprocesamiento del sistema, la intrínseca en sí solo ocurre en un lugar en todo el MCP.

Tenga en cuenta que las llamadas MCP se ejecutan en la pila del proceso actual. Sin embargo, hay algunos procesos MCP que son "ejecutores independientes".

Si un programa NEWP no utiliza ningún elemento inseguro, se puede compilar y ejecutar como un programa de nivel de usuario. Si se utilizan elementos inseguros (en bloques anotados como UNSAFE), el compilador marca el código como no ejecutable. Un programa de este tipo se puede ejecutar si un administrador de seguridad lo autoriza (habilita específicamente) con el comando de consola adecuado.

Folklore

El origen exacto del nombre del lenguaje 'NEWP' está envuelto en la historia y el misterio. Se rumorea que NEWP en realidad significa "Nearly Every Word Pascal " (Casi todas las palabras Pascal), después de una iniciativa de ingeniería de la Costa Oeste para trasladar los lenguajes de Burroughs, como ALGOL, a una sintaxis más parecida a Pascal.

También se contó que significaba “Sin privilegios para ejecutivos en el baño”, supuestamente después de que sus diseñadores cayeran en desgracia ante la gerencia. Algunos ingenieros pensaron que “Nada funciona a la perfección” era un apodo más apropiado.

Por otra parte, el diseñador eligió NEWP como nombre del compilador/lenguaje en un momento dado, cuando se le presionó para que le pusiera un nombre con el que se gestionaría el código del compilador. Significaba "NEW Programming Language", un nombre básicamente aburrido con la desafortunada propiedad de que la parte "nueva" del nombre se volvería incorrecta rápidamente.

El diseñador original del proyecto era tejano y pronto comenzó a describir el nombre como la respuesta a la pregunta "¿Ya está terminado?". NEWP sonaba como una versión del oeste de Texas de "no". Una vez que se lanzó el proyecto, el nombre se "redefinió" para que significara "Sin privilegios de baño para ejecutivos", una descripción del tipo de persona que probablemente usaría el lenguaje.

Durante un tiempo, se realizó un concurso para encontrar un mejor nombre para el compilador y el lenguaje, pero a esa altura, el nombre NEWP ya había echado raíces demasiado profundas.

Véase también

Referencias

  1. ^ "Software ClearPath MCP: Manual de referencia de programación NEWP" (PDF) . Unisys Corporation . Junio ​​de 2023.
  2. ^ "Software ClearPath MCP: Manual de referencia de programación ALGOL" (PDF) . Unisys Corporation . Junio ​​de 2023.
  3. ^ "Software ClearPath MCP: Manual de referencia de programación DCALGOL" (PDF) . Unisys Corporation . Mayo de 2021.
  4. ^ "Software ClearPath MCP: Manual de referencia de programación DMALGOL" (PDF) . Unisys Corporation . Junio ​​de 2023.