Articulo de referencia

Bifurcación de recursos

Una bifurcación de recursos es una bifurcación de un archivo en el sistema operativo Mac OS clásico de Apple que se utiliza para almacenar datos estructurados. Es una de las dos...

Una bifurcación de recursos es una bifurcación de un archivo en el sistema operativo Mac OS clásico de Apple que se utiliza para almacenar datos estructurados. Es una de las dos bifurcaciones de un archivo, junto con la bifurcación de datos , que almacena datos que el sistema operativo trata como no estructurados. [ 1 ] : 1-4 La capacidad de bifurcación de recursos se ha mantenido en el macOS moderno para garantizar la compatibilidad.

Una bifurcación de recursos almacena información en un formato específico, que contiene detalles como mapas de bits de iconos, formas de ventanas, definiciones de menús y su contenido, y código de aplicación ( código máquina ). Cualquier archivo puede tener una bifurcación de recursos, no solo las aplicaciones; por ejemplo, la posición en pantalla de la ventana de un documento podría almacenarse como un recurso en la bifurcación de recursos del documento, separada del contenido del documento almacenado en la bifurcación de datos. [ 1 ] : 1-5

Diseño

El concepto de recursos y bifurcaciones de recursos fue concebido e implementado por el programador de Apple Bruce Horn . [ 2 ] Se inspiró en el entorno de programación dinámica y orientada a objetos de Smalltalk , y específicamente en el sistema de memoria virtual orientado a objetos OOZE diseñado por Ted Kaehler . [ 3 ]

En el sistema operativo Mac OS clásico, los recursos y las bifurcaciones de recursos cumplían varias funciones:

Compatibilidad con el sistema de archivos

Las bifurcaciones de recursos son compatibles de forma nativa en todos los sistemas de archivos utilizados para las unidades del sistema en el Mac OS clásico ( MFS , HFS y HFS Plus ), y en el APFS exclusivo de macOS (pero no en UFS , [ 5 ] una opción compatible para las unidades del sistema en las primeras versiones de Mac OS X). La presencia de una bifurcación de recursos facilita el almacenamiento de una variedad de información adicional, como un icono que el escritorio debe mostrar para ese archivo. Mientras que la bifurcación de datos permite el acceso aleatorio a cualquier desplazamiento dentro de ella, el acceso a la bifurcación de recursos funciona como la extracción de registros estructurados de una base de datos .

Los sistemas de archivos de Macintosh almacenan metadatos distintos de los datos o de la bifurcación de recursos, como las marcas de tiempo de creación y modificación, el tipo de archivo y los códigos de creador, y la longitud de las bifurcaciones.

Algunos archivos solo tienen una bifurcación de recursos. Un ejemplo es un archivo de fuente en el Mac OS clásico. Otro ejemplo es una aplicación Classic 68k , donde incluso el código ejecutable está contenido en recursos de tipo 'CODE'. Los binarios posteriores de PowerPC almacenaban el código ejecutable en la bifurcación de datos.

Dado que las bifurcaciones de recursos solo eran compatibles con los sistemas de archivos de Macintosh, incluidos MFS, HFS, HFS Plus y APFS, no se podían copiar a los sistemas de archivos de otros sistemas operativos . Los formatos Mac BinHex y MacBinary se crearon para codificar bifurcaciones de recursos y datos en un solo archivo, para su transferencia entre sistemas. A/UX admitía bifurcaciones de recursos en sistemas de archivos Unix mediante los formatos AppleSingle y AppleDouble . A partir de Mac OS X Tiger , AppleDouble se utilizó para almacenar bifurcaciones de recursos en sistemas de archivos como recursos compartidos SMB de Windows y volúmenes FAT32 .

En el sistema de archivos HFS Plus, se pueden realizar configuraciones para permitir otras bifurcaciones además de las bifurcaciones de datos y recursos, para crear una aplicación "multi-fork". [ 6 ]

A partir del 7 de agosto de 2002, Apple recomendó que los desarrolladores no incluyeran recursos en bifurcaciones de recursos en binarios Mach-O en Mac OS X. [ 7 ]

identificadores de recursos

Cada recurso tiene un identificador OSType (un valor de cuatro bytes), un ID (una palabra de 16 bits con signo ) y un nombre opcional. Hay tipos de recursos estandarizados para cuadros de diálogo ( ), imágenes ( ), sonidos ( ) y binarios ejecutables ( ) que, hasta la llegada del procesador PowerPC , se almacenaban sin excepción en la bifurcación de recursos. Las subrutinas para renderizar ventanas se almacenan en su propio tipo de recursos ( ), y las subrutinas para renderizar menús en el suyo ( ). Esta disposición permitía a los usuarios personalizar fácilmente no solo las aplicaciones individuales, sino también el propio sistema operativo, utilizando herramientas como ResEdit para modificar los recursos de un archivo de aplicación o de cualquier archivo del sistema.DITLPICTsnd  CODEWDEFMDEF

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 ni dónde estén almacenados en la bifurcación de recursos. El cliente recibe un identificador para el recurso cargado, al que puede acceder como a cualquier otro dato almacenado 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, el Administrador de recursos también organiza conjuntos de bifurcaciones de recursos abiertas en una pila, con el archivo abierto más recientemente en la parte superior. Al intentar cargar un recurso, buscará primero en la parte superior de la pila (quizás 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 organización es muy potente, ya que permite que los recursos locales anulen los más globales que se encuentran más abajo ; por ejemplo, una aplicación puede proporcionar sus propios iconos o fuentes en lugar de los estándar del sistema. También permite que una aplicación cargue recursos del sistema utilizando la misma API que cualquier otro recurso, independientemente de dónde o cómo esté almacenado. Para la aplicación, todos los recursos están igualmente disponibles y son fáciles de usar. El sistema reserva identificadores de recursos dentro de un rango determinado para evitar conflictos. Las API del Administrador de recursos permiten al programador manipular la pila y modificar el comportamiento de búsqueda.   

Edición

Como la bifurcación de recursos se puede editar con un editor de recursos como ResEdit , se puede usar 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 usar recursos al desarrollar una aplicación. Sin embargo, si la aplicación puede necesitar usarse en UFS , también es posible configurarla para que toda la bifurcación de recursos se mueva a la bifurcación de datos, usando la configuración de Archivo de recursos sin procesar . Los entornos de desarrollo integrados distribuidos gratuitamente por Apple Inc. , que incluyen MPW y Apple Developer's Tools , incluyen un compilador llamado Rez. [ 1 ] : 1-3 Este 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 convertir una bifurcación de recursos de nuevo en 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. [ 1 ] : 1-8 Esto se puede usar para permitir el acceso aleatorio a los datos de recursos en función de los ID y nombres definidos. La bifurcación de recursos puede considerarse como compuesta esencialmente por tres objetos: el encabezado del recurso, el mapa de recursos y los datos de recursos en sí, [ 1 ] : 1-4, 1-5 pero de hecho cada tipo de dato es una estructura jerárquica que almacena múltiples elementos de datos. El formato en el que se almacena la información en 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 referencia a otros tipos de datos.

Acceso

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

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

Bajo la API obsoleta:

  1. Cuando se accede a una bifurcación de recursos, se leen desde el encabezado datos que incluyen la posición inicial y la longitud de los datos del recurso y el mapa del recurso.
  2. Si se ha especificado un tipo de recurso para leer, se realiza una comprobación para asegurarse de que ese tipo está presente en la lista de recursos, y se encuentra el número de elementos de datos que contienen ese tipo y sus desplazamientos en la lista de referencias de recursos desde la posición inicial del 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 nombre especificado están presentes en los datos del recurso, se accede al desplazamiento obtenido anteriormente, se encuentra la longitud de los datos y se leen todos los datos almacenados allí, que se devuelven como valor de retorno.

Las API del administrador de archivos también PBOpenRF()permitían el acceso a la bifurcación de recursos sin procesar; sin embargo, solo debían usarse para aplicaciones como copiar un archivo . Apple advierte enfáticamente contra el uso de la bifurcación de recursos como una "segunda bifurcación de datos". [ 10 ] [ 1 ] : 1-5 

Desde la interfaz POSIX , se podía 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 . [ 11 ]

Tipos

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

Los tipos deben tener una longitud de 4 bytes, por lo que tipos como snd y STR tienen un espacio (0x20) al final.

Editores

ResEdit
Distribuido gratuitamente por Apple. Permite la edición visual de datos de recursos. Si se conoce la estructura de los datos, puede mostrar diversos tipos de datos en formato visual. No funciona en versiones modernas de macOS.
Hechicero
Es caro, pero popular, ya que permite 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 recibe mantenimiento.
Ciclo
Una herramienta de macOS que extrae recursos de una bifurcación de recursos en archivos binarios separados, convirtiendo muchos tipos a formatos adecuados para el desarrollo moderno. [ 12 ]
recurso_dasm
Un extractor de recursos de código abierto para macOS y Linux, capaz también de convertir muchos recursos a formatos modernos. [ 13 ]
ResForge
Editor de recursos para macOS, capaz de editar archivos de bifurcación de recursos clásicos y formatos relacionados. Compatible con macOS 10.14 o posterior. Se ejecuta de forma nativa tanto en procesadores Intel de 64 bits como en Apple Silicon. [ 14 ]

Compatibilidad

Debido a que la bifurcación de recursos es una característica específica de Mac, ha generado problemas de compatibilidad al almacenar archivos de Mac en sistemas de archivos que no admiten bifurcaciones de recursos de forma nativa, como FAT , al almacenarlos en recursos compartidos de red o al transmitirlos a través de una red, por ejemplo, mediante correo electrónico .

AFP admite bifurcaciones de recursos de forma nativa. Muchos servidores AFP utilizan internamente sistemas de archivos sin soporte para bifurcaciones de recursos y, por lo tanto, almacenan estas bifurcaciones de otras maneras, como en un archivo o directorio especial o en un flujo de datos alternativo . Sin embargo, esto ocurre internamente en el servidor, de modo que, desde la perspectiva del cliente, los archivos en el recurso compartido AFP tienen bifurcaciones de recursos nativas.

El protocolo SMB admite un sistema de metadatos de archivos similar a las bifurcaciones de Mac, conocido como flujos de datos alternativos , que macOS utiliza de forma predeterminada desde Mac OS X 10.6 si el servidor SMB lo admite. En versiones anteriores de Mac OS X, incluidas las versiones actualizadas de 10.6, esta función está deshabilitada de forma predeterminada, pero se puede habilitar manualmente. [ 15 ]

En volúmenes que no admiten de forma nativa bifurcaciones de recursos, atributos extendidos o flujos de datos alternativos, como los sistemas de archivos FAT locales o los recursos compartidos de red NFSv3 , macOS utiliza una técnica llamada AppleDouble para almacenar bifurcaciones de recursos y otros metadatos específicos de Mac. En este caso, la bifurcación de datos se escribe como un archivo normal, mientras que la bifurcación de recursos y los metadatos se escriben en un archivo oculto independiente cuyo nombre es el nombre del archivo original con el prefijo "._". Por ejemplo, "ExampleFile.psd" contendría la bifurcación de datos y "._ExampleFile.psd" contendría la bifurcación de recursos y los metadatos correspondientes.

Pueden surgir problemas de compatibilidad si los clientes Mac que se conectan al mismo recurso compartido de red no utilizan el mismo método para almacenar las bifurcaciones de recursos. Por ejemplo, si un cliente utiliza un protocolo con soporte nativo para bifurcaciones de recursos como AFP, pero otro cliente se conecta mediante un protocolo como NFSv3 que requiere AppleDouble para almacenar las bifurcaciones de recursos, ambos clientes podrían ver contenidos diferentes de bifurcaciones de recursos para el mismo archivo.

Otro desafío es preservar las bifurcaciones de recursos al transmitir archivos mediante aplicaciones que no las reconocen o con ciertos métodos de transferencia, como el correo electrónico y el FTP. Se han creado varios formatos de archivo, como MacBinary y BinHex , para abordar este problema. Las herramientas del sistema de línea de comandos SplitForkspermiten FixupResourceForksaplanar y fusionar manualmente las bifurcaciones de recursos.

Las aplicaciones Carbon compiladas para la arquitectura Intel pueden tener problemas de orden de bytes al trabajar con recursos, ya que la mayoría de los datos de recursos se almacenan en orden de bytes big-endian, como lo utilizan las arquitecturas 68000 y PowerPC , que no coincide con el orden de bytes little-endian de la arquitectura Intel. Si bien el sistema operativo maneja automáticamente estas diferencias de orden de bytes para el formato general de bifurcación de recursos y para tipos de recursos estándar como ' snd ' o ' moov', cualquier recurso con tipos no estándar debe tener sus datos intercambiados manualmente para garantizar un comportamiento consistente independientemente de la arquitectura. [ 16 ]

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

Otros sistemas operativos

El concepto de administrador de recursos para objetos gráficos, con el fin de ahorrar memoria, se originó en el paquete OOZE del Xerox Alto en Smalltalk-76. [ 17 ] Este concepto es ahora prácticamente 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 utilizaban un archivo binario que contenía los recursos, el cual se "añadía" al final de un archivo de programa existente. Esta solución se utiliza, por ejemplo, para los recursos de Windows , y se emplean soluciones similares con el Sistema X Window , aunque los recursos suelen mantenerse como un archivo independiente.

El sistema de archivos NTFS de Windows NT admite bifurcaciones (y, por lo tanto, puede funcionar como servidor de archivos para archivos de Mac). La función nativa que proporciona esta compatibilidad 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 los utilizan, y Microsoft estaba desarrollando un sistema de archivos de próxima generación que se basa en este tipo de función.

Las primeras versiones de BeOS implementaban una base de datos dentro del sistema de archivos, que podía utilizarse de forma similar a una bifurcación de recursos. Los problemas de rendimiento llevaron a un cambio en versiones posteriores, adoptando un sistema de atributos de sistema de archivos complejos. Bajo este sistema, los recursos se gestionaban de una manera más parecida a la de Mac.

AmigaOS no utiliza archivos bifurcados. Sus archivos ejecutables se dividen internamente en una estructura modular de grandes fragmentos ( hunk ) capaces de almacenar código, datos e información adicional. De manera similar, los archivos de datos y de proyecto tienen una estructura de fragmentos codificada en el estándar IFF . Otros tipos de archivos se almacenan de forma 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ía los datos reales del proyecto y MyProject.infocontendría el icono del proyecto, información sobre qué programa se necesita para abrir el proyecto (ya que no hay 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 en el escritorio, tomado del .infopropio, 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 accesible haciendo clic con el botón derecho en el icono permite al usuario ver y modificar los metadatos presentes en el .infoarchivo. .infoLos archivos pueden verse como archivos individuales en la interfaz de línea de comandos o en un administrador de archivos . Los clones modernos de AmigaOS ( AROS , MorphOS y AOS4 ) heredan la estructura (con metadatos incluidos) 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 sistemas operativos NeXTSTEP y OPENSTEP , su sucesor macOS , y otros sistemas como RISC OS implementaron una solución diferente. En estos sistemas, los recursos se conservan en su formato original; por ejemplo, las imágenes se incluyen como archivos TIFF completos en lugar de codificarse en algún tipo de contenedor. Estos recursos se colocan en un directorio junto con el código ejecutable y los datos sin procesar. El directorio (denominado " paquete " o " directorio de la aplicación ") se presenta al usuario como la propia aplicación. Esta solución ofrece la misma funcionalidad que la bifurcación de recursos, pero permite que cualquier aplicación manipule fácilmente los recursos ; no se necesita un editor de recursos (como ResEdit ). Desde la interfaz de línea de comandos, el paquete aparece como 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 mantuvo la bifurcación de recursos. macOS conserva la API clásica del Administrador de recursos como parte de sus bibliotecas Carbon para garantizar la compatibilidad con versiones anteriores. Sin embargo, ahora los recursos en sí mismos pueden almacenarse en archivos de datos separados dentro del sistema de archivos ; el Administrador de recursos ahora oculta este cambio de implementación al código del cliente.  

Véase también

Referencias

  1. 1 2 3 4 5 6 7 Apple Computer, Inc. (1993). "Capítulo 1: Administrador de recursos". Inside Macintosh: More Macintosh Toolbox (PDF) . Archivado (PDF) del original el 9 de septiembre de 2025.
  2. Hertzfeld, Andy . "Resource Manager Countdown" . Folklore.org . Archivado del original el 2 de julio de 2025. Consultado el 29 de diciembre de 2025 .
  3. 1 2 3 4 Horn, Bruce . "El Gran Modelo Unificado (1) - Recursos" . Folklore.org . Archivado del original el 25 de febrero de 2025. Recuperado el 29 de diciembre de 2025 .
  4. Horn, Bruce . "El Gran Modelo Unificado (2) - El Buscador" . Folklore.org . Archivado del original el 27 de marzo de 2025. Consultado el 29 de diciembre de 2025 .
  5. "Descripción general del sistema de archivos: comparaciones de sistemas de archivos" . Apple Developer . 25/05/2011. Archivado del original el 05/12/2023 . Consultado el 02/01/2026 .
  6. "Nota técnica TN1150: formato de volumen HFS Plus" . Apple Developer . 5 de marzo de 2004. Consultado el 11 de febrero de 2024 .
  7. "Preguntas y respuestas técnicas QA1175: Bifurcaciones de recursos en binarios Mach-O" . Apple Developer . 7 de agosto de 2002. Archivado del original el 16 de agosto de 2023.
  8. Stacey, Jon (21 de agosto de 2009). "Mac OS X Resource Forks" . Jon's View . Consultado el 22 de octubre de 2012 .
  9. "Referencia del administrador de recursos" . Apple Developer . Archivado del original el 4 de junio de 2014. Consultado el 29 de diciembre de 2025 .
  10. "Nota técnica FL19: Datos en bifurcación de recursos: No lo hagas" . Apple Developer . 1 de marzo de 1986. Archivado del original el 16 de agosto de 2023.
  11. "Uso de rutas de archivo" . Apple Developer . 31 de marzo de 2001. Archivado del original el 18 de diciembre de 2002. Consultado el 18 de diciembre de 2002 .
  12. "rezycle: El extractor de recursos definitivo para MacOS" . Evolution Interactive . Archivado del original el 29/01/2025 . Consultado el 02/01/2026 .
  13. fuzziqersoftware. "resource_dasm" . GitHub .
  14. andrews05. "ResForge" . GitHub .
  15. "Mac OS X v10.5, v10.6: Acerca de las secuencias con nombre en servidores NAS, Mac OS X y Windows montados mediante SMB; pueden aparecer alertas "-36" o "-50" . Soporte técnico de Apple . Archivado del original el 22 de junio de 2025. Consultado el 29 de diciembre de 2025 .
  16. "Directrices de programación binaria universal, segunda edición: Intercambio de bytes § Datos de recursos personalizados" . Apple Developer . 4 de febrero de 2009. Archivado del original el 12 de agosto de 2024. Consultado el 30 de diciembre de 2025 .
  17. "La historia temprana de la conversación informal" . Archivado del original el 10 de julio de 2008. Consultado el 24 de julio de 2008 .
  • Descripción del formato del archivo de recursos
  • Archivo de documentación para desarrolladores de Apple: Referencia del administrador de recursos
  • Archivo de documentación para desarrolladores de Apple: Guía de programación de paquetes
  • 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é ocurre con las bifurcaciones de recursos de Mac OS X, los atributos extendidos, los flujos NTFS y los archivos de punto y guion bajo?
  • Cuando guardo un archivo usando el protocolo SMB, ¿qué información se guarda en los archivos con la extensión "._"? ¿Cómo se almacena esta información en un sistema de archivos NTFS?