stringtranslate.com

Extensión (Mac OS)

En el Mac OS clásico (el sistema operativo Apple Macintosh original ), las extensiones eran pequeños fragmentos de código que ampliaban la funcionalidad del sistema. Se ejecutaron inicialmente en el momento del inicio y se operaron mediante una variedad de mecanismos, incluido el parcheo de trampas y otras técnicas de modificación de código. Inicialmente un truco para desarrolladores de Apple, las extensiones se convirtieron en la forma estándar de proporcionar un sistema operativo modular. Gran cantidad de importantes servicios del sistema, como las pilas de red TCP/IP (MacTCP y Open Transport) y la compatibilidad con USB y FireWire, fueron componentes opcionales implementados como extensiones. Más tarde, la frase "extensión del sistema" pasó a abarcar también aplicaciones en segundo plano sin rostro.

Las extensiones generalmente cumplían la misma función que los programas de terminación y permanencia residentes de DOS , o los demonios de Unix , aunque al parchear el código del sistema operativo subyacente, tenían la capacidad de modificar el comportamiento del sistema operativo existente, los otros dos no. [ dudoso ]

El mecanismo INIT

El concepto de extensiones no estaba presente en el software original del sistema Macintosh, pero el sistema aún tenía un mecanismo de parcheo privado que los desarrolladores pronto aprendieron a aprovechar: el cargador INIT. Este código buscaría recursos del sistema de tipo 'INIT' y los cargaría y ejecutaría en el momento del arranque. Los recursos del código tenían que almacenarse directamente en la bifurcación de recursos de la maleta del sistema Mac , lo que significa que solo estaba disponible para "usuarios avanzados" que se sintieran cómodos usando ResEdit u otro editor de recursos.

Dado que aprovechar este mecanismo era un truco no compatible y solo se podían cargar 32 INIT de esta manera, Apple respondió proporcionando una solución más administrada. Inicialmente, esto tenía la forma de un recurso 'INIT' con ID 31 colocado en el archivo del sistema que buscaría más archivos de tipo 'INIT' en la carpeta del sistema y cargaría y ejecutaría recursos INIT dentro de ellos. (Es por eso que algunos programadores veteranos de Mac todavía se refieren al mecanismo de carga de extensiones como el "truco INIT 31". [1] Los INIT ahora se pueden instalar simplemente colocando un archivo en la carpeta del sistema, dentro de las capacidades del usuario promedio. A partir del Sistema 7, las extensiones se reubicaron en la carpeta Extensiones dentro de la Carpeta del Sistema para mayor comodidad, y se implementó un mecanismo de enrutamiento automático para que al colocar una extensión en la Carpeta del Sistema mediante arrastrar y soltar , en realidad se colocara el archivo en la subcarpeta apropiada.

Las extensiones conservaron el tipo de recurso 'INIT' durante toda su vida útil, y el cargador se mejoró gradualmente para buscar estos recursos en numerosos lugares, incluso en las bifurcaciones de recursos de los paneles de control en una variedad de formatos y el Selector .

Extensiones

Los INIT evolucionaron hasta convertirse en extensiones del sistema, obteniendo protocolos ad hoc adicionales a lo largo del camino, como proporcionar un icono que se mostrará en el momento del arranque (el origen de esto fue 'ShowINIT'). El 'desfile de piezas de rompecabezas e íconos' a través de la pantalla a medida que se cargaba cada extensión se volvió familiar para todos los usuarios de Mac. La propia Apple finalmente lanzó piezas importantes (pero opcionales) del sistema operativo como extensiones, como QuickTime , QuickDraw 3D y muchas otras. Una cantidad sustancial de servicios y controladores en Mac OS, tanto oficiales como de terceros, se proporcionaron como extensiones, lo que permitió reducir el sistema operativo deshabilitándolos.

Las extensiones del sistema eran una fuente común de inestabilidad en Macintosh, ya que el código de terceros era de calidad variable y a menudo parcheaba el sistema de maneras que no siempre funcionaban correctamente. Algunas extensiones no funcionaban correctamente juntas o solo funcionaban cuando se cargaban en un orden particular. Además, diferentes extensiones podrían intentar parchear la misma parte del sistema, lo que podría provocar conflictos de extensiones y otros tipos de inestabilidad. Rastrear estas fuentes de problemas fue otra tarea que la mayoría de los usuarios de Mac encontraron en algún momento. La solución de problemas de extensiones de Mac OS puede ser un proceso de prueba y error que requiere mucho tiempo .

La forma más sencilla de realizar un inicio limpio del sistema operativo era mantener presionada la tecla Mayús: se omitiría la carga de extensiones. System 7.5 agregó el Administrador de extensiones , que permitió al usuario habilitar o deshabilitar rápidamente extensiones particulares, y también definir conjuntos de ellas que funcionarían correctamente juntas. Extensions Manager venía con dos conjuntos básicos de solo lectura: uno que contenía el subconjunto de extensiones necesarias para el funcionamiento básico del sistema operativo y otro que habilitaba todas las extensiones oficiales que se entregaban con el sistema operativo pero deshabilitaba todas las extensiones de terceros.

El orden de carga de las extensiones fue un efecto secundario de la función GetFInfo que utilizó el cargador para enumerar los archivos en la carpeta Extension. Si bien Apple siempre ha dicho que el orden que resulta de la enumeración de archivos usando esta función no está definido, en los volúmenes HFS esta función enumera los archivos en el orden almacenado en el catálogo HFS. La gente descubrió que cambiar el primer carácter en el nombre del archivo podría cambiar el orden de carga de la extensión, lo que causó problemas cuando Mac OS 8.1 pasó a HFS+. Apple terminó teniendo que cambiar el cargador para ordenar los nombres de archivos devueltos por esta función en una tabla y proporcionó una interfaz para permitir que el software cambiara la tabla. [2]

Paneles de configuración y control

Las extensiones del sistema no tenían interfaz de usuario: no existía un mecanismo estándar mediante el cual el usuario pudiera configurar los servicios proporcionados por una extensión. Las extensiones podían alterar la interfaz gráfica (como agregar nuevos menús a la barra de menús) y así aceptar la configuración del usuario, o podían ir acompañadas de una aplicación para proporcionar la interfaz de configuración.

Con System 7 , los paneles de control se convierten en complementos independientes del Finder en un disco que el usuario puede ejecutar. Al insertar el código INIT en un panel de control, fue posible construir híbridos de panel de control/extensión que modificaban el sistema operativo en el momento del arranque y contenían su propia interfaz de configuración incorporada de la misma forma que cualquier otro panel de control del sistema operativo.

Aplicaciones en segundo plano sin rostro

MultiFinder y System 7 y versiones posteriores admitían aplicaciones en segundo plano sin rostro similares a demonios UNIX o servicios de Windows , aunque utilizaban multitarea cooperativa . Los ejemplos incluyeron Time Synchronizer ( ajuste del horario de verano y sincronización remota de la hora), Software Update Scheduler y Folder Actions (manejo de eventos de carpeta). Las aplicaciones en segundo plano sin rostro eran aplicaciones normales con la restricción de que no aparecían en el menú de la aplicación. Las únicas diferencias técnicas entre una aplicación en segundo plano sin rostro y una aplicación normal eran que la marca "Sólo fondo" estaba configurada en el SIZErecurso ''. Se les prohibió abrir una ventana normal a nivel de aplicación: si lo hacían, el sistema se congelaría.

Sin embargo, eran libres de abrir ventanas flotantes globales, ya que éstas no podían ganar ni perder foco. Control Strip en Mac OS 8 y 9 fue un ejemplo de una aplicación de fondo sin rostro que mostraba una ventana flotante global para brindar interacción al usuario. El conmutador de aplicaciones fue otro. Sin embargo, el usuario no supo en ningún momento que Control Strip era un proceso en ejecución; simplemente se presentó como una característica adicional de la interfaz. El sistema simplemente describió las aplicaciones en segundo plano sin rostro como "aplicaciones del sistema". [ cita necesaria ]

Las características del lenguaje en Open Scripting Architecture (y por lo tanto AppleScript ) se implementaron inicialmente como complementos cargables dinámicamente conocidos como "adiciones de scripting" u OSAX. En Mac OS 8 y 9, estos fueron aumentados por aplicaciones en segundo plano sin rostro que se cargaban en segundo plano a pedido. Al igual que con las aplicaciones normales, se accedía a estas aplicaciones mediante tellcláusulas: el espacio de nombres global no se actualizaba como era el caso de OSAX. El sistema operativo no indicaba el inicio de dichos procesos ni indicaba si se estaban ejecutando o no.

Otras extensiones que no son INIT

Las extensiones de tipo INIT se cargaron en el momento del arranque para actualizar el sistema operativo. De manera confusa, también se podrían colocar varios otros archivos en la carpeta Extensiones, muchos de los cuales no se cargaron en el momento del arranque. Las más notables eran las bibliotecas compartidas que comúnmente se colocaban en la carpeta Extensiones para facilitar su ubicación. Las bibliotecas compartidas no se cargaron en el momento del arranque.

Los archivos de tipo INIT no eran el único tipo de extensión del sistema. Otro tipo era scri o extensión WorldScript. El gestor de arranque BootX Linux se implementó como un scri simplemente porque dichos archivos se cargaron en una etapa muy temprana del proceso de arranque, antes que todas las demás extensiones. BootX podría luego mostrar un cuadro de diálogo que ofrezca permitir al usuario terminar de iniciar Mac OS o cargar Linux en su lugar.

Ver también

Referencias

  1. ^ Artículo de MacTech
  2. ^ Nota técnica de Apple