En informática , un descriptor de datos es una estructura que contiene información que describe datos.
Los descriptores de datos pueden usarse en compiladores , [1] como una estructura de software en tiempo de ejecución en lenguajes como Ada [2] o PL / I , o como una estructura de hardware en algunas computadoras como los sistemas grandes de Burroughs .
Los descriptores de datos se utilizan normalmente en tiempo de ejecución para pasar información de argumentos a las subrutinas llamadas . HP OpenVMS [3] y Multics [4] tienen estándares independientes del lenguaje de todo el sistema para descriptores de argumentos. Los descriptores también se utilizan para contener información sobre datos que solo se conocen por completo en tiempo de ejecución, como una matriz asignada dinámicamente .
Ejemplos de
IBM Enterprise PL / I utiliza el siguiente descriptor para describir una cadena de caracteres : [5]
+ -------- + -------- + -------- + -------- + | desc | cadena | | banderas | | tipo | tipo | (res) | | + -------- + -------- + -------- + -------- + | longitud máxima de la cuerda | | | + -------- + -------- + -------- + -------- + byte 0 1 2 3
- 'desc type' es 2 para indicar que se trata de un descriptor de elemento en lugar de un descriptor de matriz o estructura.
- 'tipo de cadena' indica que se trata de un carácter o una cadena de bits, con longitud variable o no variable. 2 indica una cadena de caracteres no variable (de longitud fija).
- '(res)' es un byte reservado que no se usa para cadenas de caracteres.
- 'banderas' indican la codificación de la cadena, EBCDIC o ASCII , y la codificación de la longitud de las diferentes cadenas.
- 'longitud máxima de cadena' es la longitud real de la cadena para cadenas no variables, o la longitud máxima para cadenas variables.
Aquí está la fuente de un descriptor de matriz de Multics. [6] Las definiciones incluyen una estructura para la información de la matriz base y una estructura para cada dimensión. (Multics se ejecutó en sistemas con palabras de 36 bits).
alineado basado en matriz dcl 1,2 bit de tipo_nodo (9) no alineado,2 bits reservados (34) no alineados,2 número_de_dimensiones fijo (7) no alineado,2 own_number_of_dimensions fijo (7) no alineado,2 element_boundary fijo (3) no alineado,2 unidades de tamaño fijo (3) sin alinear,2 offset_units fijo (3) no alineado,2 bits entrelazados (1) no alineados,2 c_element_size fijo (24),2 c_element_size_bits fijo (24),2 c_virtual_origin fijo (24),2 element_size ptr no alineado,2 element_size_bits ptr no alineado,2 ptr virtual_origin no alineado,2 symtab_virtual_origin ptr no alineado,2 symtab_element_size ptr no alineado,2 límites ptr no alineados,2 element_descriptor ptr unaligned;dcl 1 basado en límite alineado,2 bit de tipo_nodo (9),2 c_lower fijo (24),2 c_upper fijo (24),2 c_multiplier fijo (24),2 c_desc_multiplier fijo (24),2 ptr inferior desalineado,2 ptr superior desalineado,2 multiplicador ptr no alineado,2 desc_multiplier ptr no alineado,2 symtab_lower ptr no alineado,2 symtab_upper ptr no alineado,2 symtab_multiplier ptr no alineado,2 ptr siguiente no alineado;
Ver también
Referencias
- ^ Holt, Richard C. (julio de 1987). "Descriptores de datos: un modelo de datos y direccionamiento en tiempo de compilación". Transacciones ACM sobre lenguajes y sistemas de programación . 9 (3): 367–389. doi : 10.1145 / 24039.24051 .
- ^ Schonberg, Ed. "Ada comparada con C ++" . Las ventajas de Ada 95 . Consultado el 15 de enero de 2013 .
- ^ Hewlett Packard. "Capítulo 7 Descriptores de argumentos de OpenVMS" . Documentación de sistemas HP OpenVMS . Consultado el 11 de julio de 2020 .
- ^ Honeywell, Inc. (1979). Manual del programador de Multics - Guía de los escritores del subsistema (PDF) . págs. 2–13-2–18.
- ^ Corporación IBM (2006). Enterprise PL / I para z / OS Guía de programación (PDF) . pag. 385.
- ^ MIT / Honeywell. "matriz.incl.pl1" . Multics / ldd / include . Consultado el 20 de enero de 2012 .