En informática, una capa de compatibilidad es un término que se refiere a ciertos componentes creados para permitir a un sistema operativo utilizar ejecutables binarios (programas) o bibliotecas que fueron creadas para otro sistema operativo incompatible con el primero. Algunas capas de compatibilidad son más completas que otras, permitiendo más integración entre la aplicación extranjera y el sistema que contiene la misma.
Un ejemplo de una capa de compatibilidad es Wine, una aplicación de código abierto para GNU/Linux, FreeBSD, Mac OS X, entre otros, que permite ejecutar aplicaciones nativas del sistema operativo Windows por medio del uso de bibliotecas libres clonadas de bibliotecas nativas.
Otro ejemplo es la versión no. 1 del Subsistema de Windows para Linux (en inglés, Windows Subsystem for Linux), la cual permite ejecutar binarios de GNU/Linux con formato ELF, en Windows, por medio de la traducción las llamadas al sistema.
Las capas de compatibilidad difieren de hacer un port, debido a que en el caso de hacer un port a un programa, este se modifica para poder ser compatible con el sistema foráneo, mientras que con una capa de compatibilidad, los programas se pueden ejecutar sin necesidad de intervenirlos. También difieren de la virtualización de hardware y las máquinas virtuales, debido a que con las capas de compatibilidad no se abstrae ni simula todo un hardware y sistema operativo en un nuevo hardware, si no que solamente se traducen funcionalidades del sistema operativo nativo de los binarios ejecutables en funcionalidades del sistema operativo donde se van a ejecutar.
Diseño
Las capas de compatibilidad deben implementar características del sistema operativo para el cual se crearon originalmente los binarios, como lo son sus llamadas al sistema, APIs, etc. En el caso de las llamadas al sistema, es usual que se traduzcan en llamadas al sistema del sistema operativo en el cual se van a ejecutar.
Para diseñar una capa de compatibilidad, usualmente se implementa solo un conjunto de características del sistema operativo original. Para determinar ese conjunto, es frecuente escoger aquellas que se consideren necesarias para poder ejecutar una numerosa cantidad de aplicaciones [1][2].
Véase también
Referencias
- ↑ Tsai, Chia-Che; Jain, Bhushan; Abdul, Nafees Ahmed; Porter, Donald E. (18 de abril de 2016). «A study of modern Linux API usage and compatibility: what to support when you're supporting». Proceedings of the Eleventh European Conference on Computer Systems. EuroSys '16 (Association for Computing Machinery): 1-16. ISBN 978-1-4503-4240-7. doi:10.1145/2901318.2901341. Consultado el 24 de mayo de 2024.
- ↑ Lefeuvre, Hugo; Gain, Gaulthier; Bădoiu, Vlad-Andrei; Dinca, Daniel; Schiller, Vlad-Radu; Raiciu, Costin; Huici, Felipe; Olivier, Pierre (17 de abril de 2024). «Loupe: Driving the Development of OS Compatibility Layers». Proceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 1. ASPLOS '24 (Association for Computing Machinery) 1: 249-267. ISBN 979-8-4007-0372-0. doi:10.1145/3617232.3624861. Consultado el 24 de mayo de 2024.