De Wikipedia, la enciclopedia libre
Ir a navegaciónSaltar a buscar

El tenedor de recursos es un tenedor o una sección de un archivo de Manzana 's Mac OS clásico sistema operativo , que también fue trasladada a las modernas macOS para la compatibilidad, utilizado para almacenar datos estructurados junto con los datos no estructurados almacenados dentro del tenedor de datos .

Una bifurcación de recursos almacena información en una forma específica, que contiene detalles como mapas de bits de iconos, las formas de las ventanas, las definiciones de los menús y su contenido y el código de la aplicación ( código de máquina ). Por ejemplo, un archivo de procesamiento de texto puede almacenar su texto en la bifurcación de datos, mientras almacena las imágenes incrustadas en la bifurcación de recursos del mismo archivo. La bifurcación de recursos es utilizada principalmente por ejecutables , pero cada archivo puede tener una bifurcación de recursos.

El sistema de archivos de Macintosh

Originalmente concebida e implementada por el programador Bruce Horn , la bifurcación de recursos se usó para tres propósitos con el sistema de archivos de Macintosh :

  • Se usaba para almacenar todos los datos gráficos en el disco hasta que se necesitaban, luego se recuperaban, dibujaban en la pantalla y se tiraban. Esta variante de software de memoria virtual ayudó a Apple a reducir los requisitos de memoria de 1 MB en Apple Lisa a 128 KB en Macintosh.
  • Debido a que todas las imágenes y el texto se almacenaron por separado en una bifurcación de recursos, podría usarse para permitir que un no programador traduzca una aplicación para un mercado extranjero, un proceso llamado internacionalización y localización .
  • Podría usarse para distribuir casi todos los componentes de una aplicación en un solo archivo, reduciendo el desorden y simplificando la instalación y eliminación de aplicaciones.

La bifurcación de recursos se implementa en todos los sistemas de archivos utilizados para las unidades del sistema en Macintosh ( MFS , HFS y HFS Plus ). La presencia de una bifurcación de recursos facilita el almacenamiento de una variedad de información adicional, como permitir que el sistema muestre el icono correcto para un archivo y lo abra sin la necesidad de una extensión de archivo en el nombre del archivo. Si bien el acceso a la bifurcación de datos funciona como el acceso a archivos en cualquier otro sistema operativo (elija un archivo, elija un desplazamiento de bytes, lea algunos datos), el acceso a la bifurcación de recursos funciona más como extraer registros estructurados de una base de datos . ( Microsoft Windowstambién tiene un concepto de " recursos ", pero estos no tienen ninguna relación con los recursos en Mac OS).

La bifurcación de recursos se usa a veces para almacenar los metadatos de un archivo, aunque también se puede usar para almacenar los datos reales, como era el caso de los archivos de fuentes en los sistemas operativos clásicos de Mac. Tenga en cuenta que los sistemas de archivos de Macintosh también tienen un área separada para metadatos distinta de la bifurcación de datos o de recursos. Al ser parte de la entrada de catálogo del archivo, es mucho más rápido acceder a él. Sin embargo, la cantidad de datos almacenados aquí es mínima, siendo solo las marcas de tiempo de creación y modificación, el tipo de archivo y los códigos de creador, las longitudes de bifurcación y el nombre del archivo. Algunos archivos solo tienen una bifurcación de recursos. Las aplicaciones clásicas de 68k son un ejemplo, donde incluso el código ejecutable está contenido en recursos de tipo 'CÓDIGO'. PowerPC posterior Los binarios almacenan el código ejecutable en la bifurcación de datos.

Como las bifurcaciones de recursos solo se admiten en los sistemas de archivos HFS, HFS Plus y APFS, no se pueden utilizar en sistemas operativos que utilicen otros sistemas de archivos. En la actualidad, HFS solo es compatible con el sistema operativo Macintosh, lo que significa que solo las máquinas que ejecutan Mac OS pueden utilizar bifurcaciones de recursos. Incluso en un sistema Mac OS, las bifurcaciones de recursos no se pueden utilizar si se ha instalado el sistema de archivos Unix.. En el sistema de archivos HFS Plus, que actualmente es el sistema más comúnmente utilizado en Mac OS, se pueden realizar ajustes para permitir que otras bifurcaciones, además de las bifurcaciones de datos y recursos, creen una aplicación de "múltiples bifurcaciones". Sin embargo, como las bifurcaciones pueden dificultar el intercambio de archivos con otros sistemas operativos, esta función no es de uso común. Incluso en macOS, las bifurcaciones de recursos ya no se utilizan.

Actualmente, macOS admite bifurcaciones de recursos en recursos compartidos SMB de Windows mediante la creación de un archivo oculto con los caracteres "._" agregados al principio del nombre del archivo, en el mismo directorio que el archivo de bifurcación de datos.

Identificadores de recursos

Cada recurso tiene un identificador OSType (un valor de cuatro bytes) y un ID (una palabra firmada de 16 bits ), así como un nombre opcional. Hay tipos de recursos estandarizados para cuadros de diálogo (' ), imágenes (' '), sonidos (' ') e incluso para binarios ejecutables (' ') que, hasta la llegada del procesador PowerPC , se almacenaban sin excepción en el recurso tenedor. Las subrutinas para renderizar ventanas se almacenan en su propio tipo de recursos (' '), subrutinas para renderizar menús en los suyos ('DITLPICTsnd CODE WDEFMDEF'), y si hay un tipo de datos que cree que no se ajusta a ninguna de las categorías estandarizadas, también puede usar un tipo propio (por ejemplo,' John'); en realidad, cualquier valor de cuatro caracteres o 32 bits puede servir como tipo de recurso. Esta disposición permitió a los usuarios personalizar fácilmente no solo aplicaciones individuales sino también el sistema operativo en sí, utilizando herramientas como ResEdit para modificar los recursos de un archivo de aplicación o cualquiera de los archivos del sistema.

Dentro de una aplicación u otro código, los recursos se pueden cargar simplemente usando una combinación de su tipo, ID o nombre, sin importar cómo y dónde se almacenan en la bifurcación de recursos. Al cliente se le devuelve un identificador al recurso cargado al que luego se puede acceder como cualquier otro dato basado en el montón. El componente del sistema operativo que facilita esto es el Administrador de recursos.. Además de abstraer los detalles del almacenamiento de datos de los datos en sí, el Administrador de recursos también organiza conjuntos de bifurcaciones de recursos abiertos en una pila, con el archivo abierto más recientemente en la parte superior. Cuando intente cargar un recurso, primero se buscará en la parte superior de la pila (tal vez en la bifurcación de recursos del documento actual), luego en la siguiente (la bifurcación de recursos de la aplicación) y luego en la siguiente (bifurcaciones de recursos del sistema). Esta disposición es muy poderosa: permite que los recursos locales anulen los más globales en la parte inferior, por lo que una aplicación puede proporcionar sus propios íconos o fuentes en lugar de los del sistema estándar, por ejemplo. También permite que una aplicación cargue recursos desde el sistema utilizando la misma API que cualquier otro recurso, sin importar dónde o cómo se almacena ese recurso: en la aplicación,todos los recursos están igualmente disponibles y son fáciles de usar. El sistema reserva ID de recursos en un rango determinado para ayudar a evitar conflictos de recursos que surjan de esto. Las API de Resource Manager permiten al programador manipular la pila y modificar el comportamiento de búsqueda.

Editar bifurcaciones de recursos

Como la bifurcación de recursos se puede editar con un editor de recursos como ResEdit , se puede utilizar para localizar y personalizar software . Además, la mayoría de los editores de recursos permiten la edición visual de datos. En macOS , es posible utilizar recursos al desarrollar una aplicación. Sin embargo, si es posible que sea necesario utilizar la aplicación en UFS , también es posible configurarla para que toda la bifurcación de recursos se mueva a la bifurcación de datos, utilizando la configuración de Archivo de recursos sin procesar. Los entornos de desarrollo integrados distribuidos de forma gratuita por Apple Inc. , que incluyen MPW y Apple Developer's Tools , incluyen un compiladorllamado Rez. Esto usa un lenguaje dedicado, también llamado Rez, que se puede usar para crear una bifurcación de recursos compilando el código fuente . También se incluye un descompilador, DeRez, que se puede usar para cambiar una bifurcación de recursos a código Rez.

En la estructura de la bifurcación de recursos, hay un dato llamado "mapa de recursos" que almacena las posiciones de los elementos de datos de recursos. Esto se puede utilizar para permitir el acceso aleatorio a los datos de recursos en función de los ID y nombres definidos. Se puede pensar que la bifurcación de recursos consta esencialmente de dos objetos, el mapa de recursos y los datos de recursos en sí, pero de hecho cada tipo de datos es una estructura jerárquica que almacena múltiples elementos de datos. El formato en el que se almacena la información de los datos de recursos se define en función de los tipos de información, que se conocen como "tipos de recursos". Los datos de recursos a menudo hacen referencias a otros tipos de datos.

En MacOS, horquillas se nombran archivo /..namedfork/ forkname , por ejemplo , el tenedor de recursos de la IMG_0593.jpg IMG_0593.jpg archivo es / .. namedfork / rsrc. El lscomando admite una -l@opción que enumera las bifurcaciones de un archivo.

Cómo se accede a una bifurcación de recursos

Las bifurcaciones de recursos aparecen como el atributo extendido com.apple.ResourceFork. [1]

Anteriormente, se accedía a las bifurcaciones de recursos a través de la API 'Resource Manager' . Esta API ahora está obsoleta. [2]

Bajo la API obsoleta:

  1. Cuando se accede a una bifurcación de recursos, los datos que incluyen la posición de inicio y la longitud de los datos de recursos y el mapa de recursos se leen desde el encabezado.
  2. Si se ha especificado un tipo de recurso para leer, se realiza una verificación para asegurarse de que ese tipo está presente en la lista de recursos, y el número de elementos de datos que contienen ese tipo y sus compensaciones en la lista de referencia de recursos desde la posición inicial de se encuentra el mapa de recursos.
  3. Se encuentra el ID del recurso, el desplazamiento del nombre del recurso, las propiedades del recurso y el desplazamiento de los datos desde la posición inicial de los datos del recurso.
  4. Si los datos del recurso con el ID o el nombre especificado están presentes en los datos del recurso, se accede al desplazamiento obtenido anteriormente, se encuentra la longitud de los datos y todos los datos almacenados allí se leen y se devuelven como el valor de retorno.

Las API del administrador de archivos, como por ejemplo, PBOpenRF()también permitieron el acceso a la bifurcación de recursos sin procesar; sin embargo, deben usarse solo para aplicaciones tales como copiar un archivo; Apple advierte enérgicamente contra el uso de la bifurcación de recursos como una "segunda bifurcación de datos".

Desde la interfaz POSIX , se puede acceder a la bifurcación de recursos como filename/..namedfork/rsrco como filename/rsrc; la forma más corta quedó obsoleta en Mac OS X v10.4 y se eliminó por completo en Mac OS X v10.7 . [3]

Tipos de datos en una bifurcación de recursos

Los elementos más pequeños que componen una bifurcación de recursos se denominan tipos de datos. Hay varios tipos de datos. Una vez que se accede a una bifurcación de recursos, se puede encontrar su contenido leyéndolo según corresponda para los tipos de datos definidos de antemano. La colocación de definiciones dentro del programa que indiquen cómo se tratarán los datos también permite almacenar recursos llamados recursos TMPL. El uso de este método aumenta la visibilidad de los datos cuando se ven con un programa como ResEdit, lo que simplifica la edición posterior. Como la plataforma Macintosh se originó con procesadores basados ​​en Motorola (68k y PPC), los datos se serializan en el disco en formato big-endian .

La siguiente es una lista de los principales tipos de datos, en orden alfabético.

Principales tipos de recursos

Los códigos de tipo a continuación, al igual que los tipos de datos anteriores, se utilizan como identificadores de tipo para más que las bifurcaciones de recursos en sí: se utilizan para identificar archivos en sí mismos, para describir datos en el portapapeles y mucho más.

Tenga en cuenta que los tipos deben tener 4 bytes de longitud, por lo que los tipos como snd y STR en realidad tienen un espacio (0x20) al final.

Principales editores de recursos

ResEditar
Distribuido gratuitamente por Apple. Puede utilizarse para la edición visual de datos de recursos. Si se conoce la estructura de los datos, puede mostrar una variedad de diferentes tipos de datos en un formato visual. No se ejecuta en macOS modernos.
Resorcerer
Caro, pero popular, ya que se puede utilizar para la edición visual de muchos más tipos de datos que ResEdit.
HexEdit
Un editor binario, que de hecho se usa normalmente más para editar la bifurcación de datos que la bifurcación de recursos.
ResKnife
Editor de código abierto para Mac OS X ; ya no se mantiene.
Rezycle
Una herramienta de macOS que extrae recursos de una bifurcación de recursos en archivos binarios separados mientras convierte muchos tipos en formatos adecuados para el desarrollo moderno.
resource_dasm
Un extractor de recursos de código abierto para macOS, también capaz de convertir muchos recursos en formatos modernos.

Problemas de compatibilidad

La complejidad de la programación con bifurcaciones de recursos ha provocado problemas de compatibilidad al acceder a otros sistemas de archivos a través de protocolos de intercambio de archivos como AFP , SMB , NFS y FTP , al almacenar en volúmenes que no son HFS o al transmitir archivos a otros sistemas de otras formas ( como por correo electrónico). El protocolo AFP admite de forma nativa las bifurcaciones de recursos, por lo que las bifurcaciones de recursos se transmiten normalmente a estos volúmenes tal cual y el servidor las almacena de forma transparente para los clientes. El protocolo SMB admite un sistema de metadatos de archivos similar a las bifurcaciones de Macintosh conocidos como flujos de datos alternativos (en adelante, ADS). macOS no admitía el almacenamiento de bifurcaciones de recursos en ADSes en volúmenes SMB de forma predeterminada hasta Mac OS X v10.6. En versiones anteriores del sistema operativo, incluidas las versiones actualizadas de 10.6, esta función se puede habilitar con un cambio de parámetro o creando un archivo especial. [4]

Los protocolos de intercambio de archivos en red, como NFSv3 y FTP, no tienen un concepto de metadatos de archivos, por lo que no hay forma de almacenar de forma nativa las bifurcaciones de recursos. Esto también es cierto cuando se escribe en ciertos tipos de sistemas de archivos locales, incluido UFS, y en volúmenes SMB donde la compatibilidad con Alternate Data Stream no está habilitada. En esos casos, macOS almacena metadatos y bifurcaciones de recursos mediante una técnica llamada AppleDouble , en la que la bifurcación de datos se escribe como un archivo, y la bifurcación de recursos y los metadatos se escriben como un archivo completamente independiente precedido por una convención de nomenclatura "._". Por ejemplo: ExampleFile.psd contendría la bifurcación de datos y ._ExampleFile.psd contendría la bifurcación de recursos y los metadatos.

Pueden surgir problemas de compatibilidad porque macOS manejará el almacenamiento de las bifurcaciones de recursos de manera diferente, según la versión de macOS, la configuración y el tipo de sistema de archivos. Por ejemplo, en una red SMB con una combinación de clientes 10,5 y 10,6. Un cliente 10.6 recién instalado buscará y almacenará bifurcaciones de recursos en un volumen SMB en ADSes, pero el cliente 10.5 ignorará (por defecto) los ADS y usará el formato AppleDouble para manejar bifurcaciones. Si un servidor de archivos admite tanto AFP como NFS, los clientes que usan NFS almacenarán archivos en formato AppleDouble , mientras que los usuarios de AFP almacenarán la bifurcación de recursos de forma nativa. En esos casos, la compatibilidad a veces se puede mantener obligando a los clientes a usar o no usar el formato AppleDouble .

Muchos servidores de archivos que ofrecen compatibilidad con AFP no admiten de forma nativa bifurcaciones de recursos en sus sistemas de archivos locales. En esos casos, las bifurcaciones pueden almacenarse de formas especiales, como archivos con nombres especiales, directorios especiales o incluso flujos de datos alternativos.

Otro desafío es preservar las bifurcaciones de recursos cuando se transmiten archivos utilizando aplicaciones que no son compatibles con las bifurcaciones de recursos o con ciertos métodos de transferencia, incluidos el correo electrónico y FTP. Se han creado varios formatos de archivo, como MacBinary y BinHex , para manejar esto. Herramientas del sistema de línea de comandos SplitForksy FixupResourceForkspermiten el acoplamiento y fusión manual de bifurcaciones de recursos. Además, un servidor de archivos que busque presentar sistemas de archivos a clientes Macintosh debe acomodar la bifurcación de recursos así como la bifurcación de datos de los archivos; Los servidores UNIX que brindan soporte AFP generalmente implementan esto con directorios ocultos.

Las aplicaciones más antiguas escritas con la API de Carbon tienen un problema potencial cuando se migran a las Mac Intel actuales . Si bien el Administrador de recursos y el sistema operativo saben cómo deserializar los datos correctamente para recursos comunes como " snd o" moov, los recursos creados con recursos TMPL deben intercambiarse bytes manualmente para garantizar la interoperabilidad de archivos entre PPC y las versiones basadas en Intel de una aplicación. (Si bien el mapa de recursos y otros detalles de implementación son de gran alcance , el Administrador de recursos por sí solo no tiene ningún conocimiento del contenido de un recurso genérico y, por lo tanto, no puede realizar el intercambio de bytes automáticamente).

Hasta la llegada de Mac OS X v10.4 , las utilidades de línea de comandos estándar de UNIX en macOS (como cpy mv) no respetaban las bifurcaciones de recursos. Para copiar archivos con bifurcaciones de recursos, era necesario utilizar dittoo CpMac y MvMac.

Otros sistemas operativos

El concepto de un administrador de recursos para objetos gráficos, para ahorrar memoria, se originó en el paquete OOZE en Xerox Alto en Smalltalk-76. [5] El concepto es ahora en gran parte universal en todos los sistemas operativos modernos. Sin embargo, el concepto de bifurcación de recursos sigue siendo peculiar de Macintosh. La mayoría de los sistemas operativos utilizan un archivo binario que contiene recursos, que luego se "clava" al final de un archivo de programa existente. Esta solución se usa en Microsoft Windows, por ejemplo, y soluciones similares se usan con el sistema X Window , aunque los recursos a menudo se dejan como un archivo separado.

El NTFS de Windows NT puede admitir bifurcaciones (y, por lo tanto, puede ser un servidor de archivos para archivos Mac), la característica nativa que proporciona ese soporte se denomina flujo de datos alternativo . Las funciones del sistema operativo Windows (como la pestaña Resumen estándar en la página Propiedades para archivos que no son de Office) y las aplicaciones de Windows las utilizan y Microsoft estaba desarrollando un sistema de archivos de próxima generación que tiene este tipo de función como base.

Las primeras versiones de BeOS implementaron una base de datos dentro del sistema de archivos, que podría usarse de manera análoga a una bifurcación de recursos. Los problemas de rendimiento llevaron a un cambio en versiones posteriores a un sistema de atributos de sistema de archivos complejos. Bajo este sistema, los recursos se manejaban de una manera algo más análoga a la Mac.

AmigaOS no utiliza archivos bifurcados. Sus archivos ejecutables están divididos internamente en una estructura modular de piezas de gran tamaño ( hunk ) capaces de almacenar el código, datos, e información adicional. De manera similar, los archivos de datos y proyectos tienen una estructura de fragmentos codificada en el estándar IFF . Otros tipos de archivos se almacenan de manera similar a otros sistemas operativos. Aunque no es estrictamente una bifurcación de recursos, AmigaOS almacena metadatos en archivos conocidos como .infoarchivos. .infolos archivos se pueden identificar por la .infoextensión; por ejemplo, si guarda un proyecto en un disco, se guardarán dos archivos MyProjecty MyProject.info. MyProjectserían los datos reales del proyecto yMyProject.infocontendría el icono del proyecto, información sobre qué programa se necesita para abrir el proyecto (ya que no hay ningún enlace de aplicación en AmigaOS), opciones especiales del proyecto y cualquier comentario del usuario. .infolos archivos son invisibles en el escritorio de Amiga ( Workbench ). El icono del escritorio, tomado del .infomismo, es la metáfora de la interfaz a través de la cual el usuario interactúa tanto con el proyecto en sí como con su .infoarchivo asociado . Un cuadro de diálogo al que se puede acceder haciendo clic con el botón derecho en el icono permite al usuario ver y modificar los metadatos presentes en el .infoarchivo. .infolos archivos se pueden ver como archivos individuales en la interfaz de línea de comandos o en un administrador de archivos . Clones modernos de AmigaOS (AROS , MorphOS y AOS4 ) heredan la estructura (completa con metadatos) de los .infoarchivos de versiones anteriores de AmigaOS y también pueden aceptar archivos gráficos PNG estándar como mapas de bits de iconos en sus .infoarchivos.

Los siguientes sistemas operativos NeXTSTEP y OPENSTEP , su sucesor, macOS y otros sistemas como RISC OS implementaron otra solución. En estos sistemas, los recursos se dejan en un formato original, por ejemplo, las imágenes se incluyen como archivos TIFF completos en lugar de codificarse en algún tipo de contenedor. Luego, estos recursos se colocan en un directorio junto con el código ejecutable y los "datos sin procesar". El directorio (llamado " paquete " o " directorio de la aplicación") se presenta al usuario como la aplicación en sí. Esta solución proporciona la misma funcionalidad que la bifurcación de recursos, pero permite que los recursos sean manipulados fácilmente por cualquier aplicación; no se necesita un" editor de recursos "(como ResEdit ) . Desde la interfaz de línea de comandos, el paquete parece ser un directorio normal. Este enfoque no era una opción en el Mac OS clásico , ya que el sistema de archivos ( MFS ) no admitía directorios de catálogo separados. Cuando se incluyó la compatibilidad con archivos de catálogo en Mac OS, con el sistema de archivos HFS, se retuvo la bifurcación de recursos. MacOS conserva la API clásica de Resource Manager como parte de su Carbonbibliotecas para compatibilidad con versiones anteriores. Sin embargo, los propios recursos ahora se pueden almacenar en archivos de datos separados dentro del sistema de archivos; el Administrador de recursos ahora oculta este cambio de implementación del código del cliente.

Ver también

  • Fork (sistema de archivos)

Referencias

  1. ^ "Bifurcaciones de recursos de Mac OS X" . Consultado el 22 de octubre de 2012 .
  2. ^ "Referencia del administrador de recursos" . Consultado el 22 de octubre de 2012 .
  3. ^ "Uso de nombres de ruta" . developer.apple.com . 2002-12-18. Archivado desde el original el 18 de diciembre de 2002 . Consultado el 18 de diciembre de 2002 .CS1 maint: bot: estado de URL original desconocido ( enlace )
  4. ^ "OS X v10.5, v10.6: Acerca de las transmisiones con nombre en servidores NAS, OS X y Windows montados en SMB" . Consultado el 19 de abril de 2010 .
  5. ^ "La historia temprana de Smalltalk" . Consultado el 24 de julio de 2008 .

Enlaces externos

  • Descripción del formato de archivo de recursos
  • Biblioteca de recursos para desarrolladores de Apple: referencia del administrador de recursos
  • Biblioteca de recursos para desarrolladores de Apple: administración de recursos, paquetes
  • El Gran Modelo Unificado  - Historia de la bifurcación de recursos, de folklore.org
  • Rezycle  : herramienta de extracción de recursos
  • Servicios de Mac OS X  : un servicio de Mac OS X para eliminar la bifurcación de recursos de un archivo a través del menú contextual
  • ¿Qué pasa con las bifurcaciones de recursos de Mac OS X, los atributos extendidos, los flujos NTFS y los archivos Dot-Undercore?
  • Cuando guardo un archivo usando el protocolo SMB, ¿qué información se guarda en los archivos de "punto-subrayado" (._)? ¿Cómo se almacena esta información en un sistema de archivos NTFS?