맨위로가기

호환성 계층

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

호환성 계층은 다른 운영 체제용으로 개발된 응용 프로그램을 특정 운영 체제에서 실행할 수 있도록 해주는 소프트웨어 기술이다. 이는 외래 시스템의 시스템 호출을 호스트 시스템의 네이티브 시스템 호출로 변환하는 방식으로 작동하며, 와인, 윈도우 XP 호환성 계층, 로제타 2 등이 그 예시이다. 호환성 계층은 하드웨어 에뮬레이션보다 복잡성과 속도 저하를 줄일 수 있지만, 구현의 복잡성으로 인해 문제가 발생할 수 있다.

더 읽어볼만한 페이지

  • 호환성 계층 - 와인 (소프트웨어)
    와인(Wine)은 유닉스 계열 운영체제에서 윈도우 응용 프로그램을 실행하기 위한 호환성 계층으로, 윈도우 API를 직접 구현하여 윈도우 프로그램이 리눅스, macOS 등에서 실행되도록 지원하며, 여러 기업의 후원을 받아 꾸준히 발전해왔다.
  • 호환성 계층 - 시그윈
    Cygwin은 윈도우에서 유닉스 시스템과 유사한 환경을 제공하는 소프트웨어로, POSIX API 구현 및 다양한 개발 도구를 통해 유닉스 기반 소프트웨어의 개발, 빌드, 실행을 지원한다.
호환성 계층
개요
유형시스템 소프트웨어
설명호스트 운영 체제에서 다른 운영 체제 또는 환경을 에뮬레이트하는 소프트웨어
목표소프트웨어 이식 용이
하위 호환성 유지
관련 기술가상 머신
에뮬레이터
API
번역기
기능
시스템 호출 인터셉트대상 시스템의 시스템 호출을 호스트 시스템의 호출로 변환
라이브러리 및 API 매핑대상 시스템의 라이브러리 및 API를 호스트 시스템의 해당 기능에 연결
파일 시스템 및 레지스트리 리디렉션파일 시스템 및 레지스트리 액세스를 에뮬레이션된 환경으로 리디렉션
예시
WineLinux, macOS, BSD 등에서 Windows 응용 프로그램을 실행하기 위한 호환성 계층
RosettamacOS에서 PowerPC 응용 프로그램을 x86-64 기반 Mac에서 실행하거나, x86-64 응용 프로그램을 Apple Silicon 기반 Mac에서 실행하기 위한 호환성 계층
CygwinWindows에서 POSIX 호환 환경을 제공
Windows Subsystem for Linux (WSL)Windows 10 이상에서 Linux 실행 파일을 실행하기 위한 호환성 계층
DarlingLinux에서 macOS 응용 프로그램을 실행하기 위한 호환성 계층
장점
레거시 소프트웨어 지원더 이상 지원되지 않거나 호환되지 않는 오래된 소프트웨어를 실행 가능
플랫폼 간 호환성다른 운영 체제용으로 설계된 응용 프로그램을 실행 가능
개발 및 테스트 용이성여러 플랫폼에서 소프트웨어를 개발하고 테스트 가능
단점
성능 오버헤드호환성 계층은 성능 저하를 유발할 수 있음
완벽한 호환성 보장 불가모든 응용 프로그램이 완벽하게 작동하지 않을 수 있음
복잡성호환성 계층은 복잡하고 유지 관리하기 어려울 수 있음

2. 소프트웨어

소프트웨어 공학 분야에서 '''호환성 계층'''은 특정 운영체제용으로 개발된 응용 프로그램(이진 파일)을 다른 종류의 운영체제(호스트 시스템)에서 직접 실행할 수 있도록 지원하는 기술이다. 이는 대상 프로그램이 원래 실행되던 환경(외래 시스템)의 시스템 콜을 현재 사용 중인 운영체제(호스트 시스템)의 네이티브 시스템 콜로 번역하는 방식으로 이루어진다. 때로는 외래 시스템 환경을 구성하는 일부 라이브러리가 호스트 시스템에 필요할 수도 있다.

호환성 계층은 전체 하드웨어 에뮬레이션 방식에 비해 구현의 복잡성이 낮고 실행 속도 저하가 적다는 장점이 있다. 경우에 따라서는 원래 환경보다 더 빠르게 프로그램이 실행되기도 한다.

하지만 서로 다른 시스템 간의 호환성을 구현하는 것은 기술적으로 매우 복잡하고 어려울 수 있으며, 예상치 못한 문제가 발생하기도 한다.[25][28] 또한, 호환성 계층이 작동하기 위해서는 기본적으로 호스트 시스템의 CPU가 외래 시스템의 CPU와 호환되어야 한다. 예를 들어, x86 아키텍처 기반의 마이크로소프트 윈도우용 프로그램을 PowerPC나 ARM 기반 시스템에서 호환성 계층만으로 실행하는 것은 일반적으로 불가능하며, 이 경우에는 별도의 CPU 에뮬레이션 기술이 필요하다.

다양한 종류의 소프트웨어 호환성 계층이 존재하며, 운영체제 자체에 내장되거나 별도의 소프트웨어 형태로 제공된다. 대표적인 예로는 유닉스 계열 시스템에서 윈도우 프로그램을 실행하게 해주는 와인, macOS에서 인텔 기반 프로그램을 Apple 실리콘 기반 Mac에서 실행하게 해주는 로제타 2 등이 있다.

2. 1. 주요 소프트웨어 호환성 계층


  • 와인(Wine): 프로그램 로더와 윈도우 API를 DLL 형태로 구현하여, 일부 마이크로소프트 윈도우용 바이너리를 유닉스 계열 시스템에서 실행할 수 있게 하는 호환성 계층이다.
  • 윈도우의 응용 프로그램 호환성 계층: 윈도우 운영체제 자체에 내장된 기능으로, 오래된 버전의 윈도우용으로 개발되었거나 표준을 제대로 따르지 않은 응용 프로그램의 실행을 지원한다.[1] 예를 들어 윈도우 XP 이후 버전에는 이전 윈도우 98이나 MS-DOS 환경을 일부 재현하는 호환성 모드가 포함되었다.
  • 리나(Lina): 리눅스용으로 개발된 바이너리를 윈도우, macOS, 유닉스 계열 시스템에서 해당 운영체제의 기본 인터페이스와 유사한 모습으로 실행할 수 있도록 지원한다.
  • KernelEX: 윈도우 98 및 Me 운영체제에서 일부 윈도우 2000이나 윈도우 XP용 프로그램을 실행할 수 있게 해주는 소프트웨어이다.
  • 엑스큐터(Executor): 68k 프로세서 기반의 구형 "클래식" Mac OS 응용 프로그램을 윈도우, macOS, 리눅스 환경에서 실행할 수 있게 한다.
  • Anbox: 안드로이드 앱을 리눅스 시스템에서 실행하기 위한 호환성 계층이다.
  • Hybris: 안드로이드 시스템 라이브러리인 Bionic의 함수 호출을 리눅스 표준 라이브러리인 glibc 호출로 변환하여, 안드로이드용 코드를 리눅스 기반 시스템에서 활용할 수 있도록 돕는 라이브러리이다.
  • Darling: macOS 및 Darwin 운영체제용 바이너리를 리눅스에서 실행하는 것을 목표로 하는 변환 계층이다.
  • 윈도우 서브시스템 for 리눅스(Windows Subsystem for Linux, WSL) v1: 마이크로소프트가 개발한 호환성 계층으로, 리눅스 시스템 콜을 윈도우의 네이티브 시스템 콜로 변환하여 윈도우 환경에서 리눅스 바이너리를 직접 실행할 수 있게 한다. 이후 버전은 다른 방식을 사용한다.
  • Cygwin: 윈도우 환경에서 POSIX 표준을 따르는 개발 및 실행 환경을 제공하여, 유닉스 계열 운영체제용으로 작성된 다양한 프로그램을 윈도우에서 컴파일하고 실행할 수 있도록 지원한다.[2]
  • 2ine: 리눅스 시스템에서 OS/2 운영체제용 응용 프로그램을 실행하기 위한 프로젝트이다.[3]
  • 로제타 2(Rosetta 2): 애플이 macOS Big Sur부터 도입한 변환 계층으로, Apple 실리콘(ARM) 기반의 Mac 컴퓨터에서 기존 인텔 x86-64 아키텍처 전용으로 개발된 응용 프로그램을 실행할 수 있도록 자동으로 코드를 변환해준다.
  • Prism: 마이크로소프트가 개발한 에뮬레이터로, ARM 아키텍처 기반의 윈도우 장치에서 기존 x86 및 x64 아키텍처용으로 빌드된 소프트웨어의 코드를 Windows 11 24H2부터 번역하여 실행한다.[4]
  • ACL (Application Compatibility Layer): 안드로이드 앱을 타이젠(Tizen), webOS, 미고(MeeGo) 등의 운영체제를 사용하는 스마트폰에서 네이티브 앱처럼 실행할 수 있도록 지원하는 기술이다.[5][6][7]
  • Alien Dalvik: 안드로이드 앱을 미고(MeeGo)[8]마에모(Maemo)[9] 운영체제에서 실행할 수 있게 해주는 소프트웨어이다. iPad의 iOS용 버전도 공개되었으나, 이는 기기에서 직접 실행되는 대신 클라우드 기반으로 동작했다.[10][11][12]
  • touchHLE: 2023년 초에 개발된 호환성 계층으로, 32비트 기반의 오래된 iOS 앱을 현대적인 데스크톱 및 안드로이드[15] 환경에서 실행하는 것을 목표로 한다. 초기 버전은 슈퍼 몽키 볼 등 일부 게임만 지원했으며,[13] 개발자는 64비트 소프트웨어는 지원하지 않을 것이라고 밝혔다.[14]
  • ipasim: 마이크로소프트의 WinObjC 기술을 활용하여 Objective-C로 작성된 iOS 앱 코드를 네이티브 윈도우 코드로 변환하여 실행하는 윈도우용 호환성 계층이다.[16]
  • aah(sic): 애플의 Catalyst 프레임워크를 통해 iOS 앱을 macOS 10.15 "Catalina" 버전의 x86 프로세서 환경에서 실행할 수 있도록 변환해주는 프로그램이다.[17]
  • brs-emu: Roku 장치에서 사용되는 BrightScript 기반 응용 프로그램을 웹 브라우저, 윈도우, macOS, 리눅스 등 다른 플랫폼에서 실행하기 위한 호환성 계층이다.[18]
  • Classic 환경: PowerPC 기반 Mac OS X(10.4 Tiger 이전 버전)에서 이전 버전인 Mac OS 9용 응용 프로그램을 실행할 수 있도록 지원하던 호환성 계층이다.
  • FreeBSD의 리눅스 호환성 계층: 리눅스용으로 빌드된 바이너리를 별도의 수정 없이 FreeBSD 시스템에서 네이티브 프로그램처럼 실행할 수 있게 한다.[19] FreeBSD는 이 외에도 NDIS, NetBSD, PEcoff, SVR4 등 다른 시스템과의 호환성을 위한 계층도 일부 제공한다.[21]
  • NetBSD: 여러 유닉스 계열 시스템과의 바이너리 호환성을 위한 에뮬레이션 기능을 제공한다.[22]
  • Columbia Cycada: Apple iOS 응용 프로그램을 안드로이드 시스템에서 실행하기 위해 개발되었으나 출시되지 않은 호환성 계층이다.
  • PEACE Project (COMPAT_PECOFF): NetBSD에서 Win32 API와 호환되는 환경을 제공하려던 프로젝트였으나, 현재는 비활성 상태이다.
  • RSTS/E의 RT-11 호환성: DECPDP-11 미니컴퓨터 운영체제인 RSTS/E에서, 이전 운영체제인 RT-11용으로 작성된 프로그램을 시스템 콜 변환을 통해 재컴파일 없이 실행할 수 있도록 지원했다.

2. 2. 커널 수준 호환성 계층


  • FreeBSD의 리눅스 호환성 계층: 리눅스용으로 빌드된 바이너리가 네이티브 FreeBSD API 계층과 동일한 방식으로 FreeBSD에서 실행될 수 있도록 한다.[19] FreeBSD는 또한 NDIS, NetBSD, PECoff, SVR4 및 FreeBSD의 다른 CPU 버전을 포함한 일부 유닉스 계열 시스템 에뮬레이션 기능을 제공한다.[21]
  • NetBSD: 여러 유닉스 계열 시스템 에뮬레이션 기능을 제공한다.[22]
  • Columbia Cycada: Apple iOS 응용 프로그램을 안드로이드 시스템에서 실행하는 것을 목표로 했던 미출시 호환성 계층이다.
  • 윈도우 서브시스템 for 리눅스: 마이크로소프트가 개발한 리눅스 호환 커널 인터페이스를 제공한다.[23]
  • [https://web.archive.org/web/20081015065906/http://chiharu.haun.org/peace/ The PEACE Project] (또는 COMPAT_PECOFF): NetBSD용 Win32 호환 계층 프로젝트였으나, 현재는 비활성 상태이다.
  • PDP-11 시리즈 미니컴퓨터의 RSTS/E: RT-11 운영 체제에서 실행되도록 작성된 프로그램이 RSTS에서 실행될 수 있도록 지원한다. RT-11 Run-Time System의 EMT 플래그가 설정된 경우, RSTS는 RT-11 EMT 명령을 해당 RSTS EMT로 변환하여 프로그램을 재컴파일 없이 실행할 수 있게 한다.

2. 3. 성능

호환성 계층은 전체 하드웨어 에뮬레이션 방식과 비교했을 때 복잡성과 속도 저하를 줄일 수 있다는 장점이 있다. 일부 프로그램은 호환성 계층을 통해 실행될 때 원래 환경에서 실행되는 것보다 더 빠르게 작동할 수도 있다. 예를 들어, FreeBSD의 리눅스 호환성 계층에서 실행되는 일부 리눅스 응용 프로그램은 Red Hat Linux에서 동일한 응용 프로그램을 실행하는 것보다 성능이 더 좋을 수 있다는 보고가 있다. 또한, 와인 환경에서의 성능을 윈도우 NT 기반 운영 체제와 비교하는 벤치마크도 때때로 이루어진다.[24]

하지만 유사한 시스템 사이의 호환성 계층이라도 구현하는 과정은 매우 복잡하고 문제가 발생하기 쉽다. NetBSDMIPS 아키텍처 버전에서 IRIX 바이너리 호환성을 구현하려 했던 사례가 대표적인 예이다.[25][28]

호환성 계층의 성능은 하드웨어 호환성 여부에 영향을 받는다. 호스트 시스템과 대상 시스템의 하드웨어(CPU 등)가 호환되고 OS만 다른 경우에는 비교적 간단하게 호환성 계층을 만들 수 있으며 성능 면에서 유리한 경우가 많다. 반면, 호환성이 없는 하드웨어의 바이너리를 실행하는 경우에는 호환성 계층이 프로세서 에뮬레이션까지 수행해야 하므로 성능상 불리해지는 경향이 있다.

3. 하드웨어

하드웨어 호환 계층은 하드웨어 에뮬레이션을 가능하게 하는 도구를 포함한다. 일부 하드웨어 호환 계층은 브레이크아웃 박스를 포함하는데, 이는 특정 컴퓨터 버스에 대한 호환성을 제공하여 원래 호환되지 않는 다른 컴퓨터와의 연결을 가능하게 한다. 또한, 테이프 재생기의 경우 테이프 어댑터가 하드웨어 호환 계층의 역할을 하기도 한다.

참조

[1] 웹사이트 Application Compatibility in Windows XP https://docs.microso[...] 2002-02-18
[2] 웹사이트 Cygwin https://www.cygwin.c[...] 2019-11-23
[3] 웹사이트 Project: 2ine | Patreon https://www.patreon.[...]
[4] 웹사이트 How emulation works on Arm https://learn.micros[...] 2024-11-26
[5] 웹사이트 Tizen OS will run Android apps -- with a little help from third-party software (Video) https://www.engadget[...]
[6] 웹사이트 OpenMobile ACL for webOS resurrected on Kickstarter, hopes to bring Android apps to HP Touchpad https://www.engadget[...]
[7] 웹사이트 OpenMobile demos ACL for MeeGo, promises 100 percent compatibility with Android apps (Video) https://www.engadget[...]
[8] 웹사이트 Myriad 'Alien Dalvik' runs Android apps on any phone... Starting with MeeGo (Video) https://www.engadget[...]
[9] 웹사이트 Myriad Alien Dalvik hands-on (Video) https://www.engadget[...]
[10] 웹사이트 Running Android Apps on the iPad with Myriad's Alien Dalvik https://www.youtube.[...]
[11] 웹사이트 Hands-on with Myriad's Alien Dalvik 2.0 on an iPad (Video) https://www.engadget[...]
[12] 웹사이트 Android apps to run on iPad with Alien Dalvik 2.0 https://www.cnet.com[...]
[13] 웹사이트 TouchHLE: High-level emulator for iPhone OS apps https://github.com/h[...]
[14] 웹사이트 High-level iOS emulator touchHLE runs on Windows and Mac, aims to preserve old iOS gaming apps https://www.techspot[...]
[15] 웹사이트 Developer ports iOS emulator to Android, but you shouldn't get excited about it https://9to5mac.com/[...] 2023-04-24
[16] 웹사이트 IOS emulator for Windows http://hdl.handle.ne[...] 2019-06-27
[17] 웹사이트 Aah https://github.com/z[...]
[18] 웹사이트 BRS-EMU: BrightScript Emulator https://github.com/l[...]
[19] 웹사이트 Linux emulation in FreeBSD http://www.freebsd.o[...]
[20] 웹사이트 Emulation http://www.freebsd.o[...] freebsd.org 2014-03-16
[21] 웹사이트 A look inside... http://www.freebsd.o[...] freebsd.org 2014-03-16
[22] 웹사이트 NetBSD Binary Emulation http://www.netbsd.or[...] netbsd.org 2014-03-16
[23] 웹사이트 Comparing WSL 1 and WSL 2 https://docs.microso[...] 2023-03-20
[24] Webarchive BenchMark-0.9.5 http://wiki.winehq.o[...] 2010-12-09
[25] 웹사이트 IRIX Binary Compatibility, Part 1 https://web.archive.[...] onlamp.com 2002-08-08
[26] 웹사이트 Linux バイナリ互換機能 (FreeBSD ハンドブック) http://www.freebsd.o[...] 2012-10-08
[27] 웹사이트 Application Compatibility in Windows XP http://www.microsoft[...] 2002-02-18
[28] 웹사이트 IRIX Binary Compatibility http://www.onlamp.co[...] 2008-05-12



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com