호환성 계층

Compatibility layer

소프트웨어 엔지니어링에서 호환성 계층은 레거시 시스템이나 외국 시스템의 바이너리를 호스트 시스템에서 실행할 수 있는 인터페이스다.이것은 외국 시스템을 호출하는 시스템을 호스트 시스템을 위한 네이티브 시스템 호출로 변환한다.외국 시스템을 위한 일부 라이브러리가 있는 경우, 호스트 시스템에서 외국 바이너리를 실행하기에 충분할 것이다.하드웨어 호환성 계층은 하드웨어 에뮬레이션을 허용하는 도구로 구성된다.

소프트웨어

예를 들면 다음과 같다.

  • 프로그램 로더 및 DLL에 구현된 Windows API를 사용하여 Unix 유사 시스템에서 일부 Microsoft Windows 바이너리를 실행하는 Wine
  • 제대로 작성된 애플리케이션 또는 이전 버전의 플랫폼용으로 작성된 애플리케이션을 실행하기 위한 윈도우즈의 애플리케이션 호환성 계층.[1]
  • 윈도우, 맥 OS X, 유닉스 같은 시스템에서 네이티브 룩과 느낌으로 일부 Linux 바이너리를 운영하는 리나.
  • Windows 98/Me에서 일부 Windows 2000/XP 프로그램을 실행하는 KernelEX.
  • 윈도우즈, Mac OS X 및 Linux에서 68k 기반 "클래식" Mac OS 프로그램을 실행하는 실행기.
  • 리눅스용 Android 호환성 계층인 Anbox.
  • Android 시스템에서 Apple iOS 애플리케이션을 실행하는 Columbia Cycada
  • 하이브리스, 바이오닉을 glibc 호출로 번역하는 도서관.
  • 달링, Linux에서 Mac OS X와 Darwin 이진 파일을 실행하려고 시도하는 변환 계층.
  • Linux 시스템 호출을 기본 윈도우즈 시스템 호출을 변환하는 호환성 계층을 통해 윈도우즈에서 Linux 바이너리를 실행하는 Linux용 윈도우즈 Subsystem v1
  • Windows에서 기본적으로 실행되는 POSIX 호환 환경인 Cygwin.[2]
  • Linux에서[3] OS/2 애플리케이션을 실행하는 프로젝트인 2ine
  • Rosetta 2는 macOS Big Sur와 번들로 이루어진 애플의 번역 계층으로, x86-64 전용 애플리케이션이 ARM 하드웨어에서 실행될 수 있도록 허용한다.

커널의 호환성 계층:

  • Linux용으로 특별히 제작된 바이너리를 FreeB에서 실행할 수 있는 FreeBSD의 Linux 호환성 계층네이티브 FreeB와 동일한 방식으로 SD[4]SD API 계층.[5]FreeBSD는 또한 NDIS, NetBSD, PECoff, SVR4 및 다른 CPU 버전의 FreeB를 포함한 일부 Unix와 유사한 시스템 에뮬레이션을 가지고 있다.SD.[6]
  • NetBSD는 여러 Unix와 유사한 시스템 에뮬레이션을 가지고 있다.[7]
  • 리눅스용 윈도 서브시스템은 마이크로소프트가 개발한 리눅스 호환 커널 인터페이스를 제공한다.[8]
  • PEACE 프로젝트(일명 APECH_PECOFF)는 NetBSD를 위한 Win32 호환 레이어를 가지고 있다.그 프로젝트는 지금 비활성화되어 있다.
  • On RSTS/E for the PDP-11 series of minicomputers, programs written to run on the RT-11 operating system could run (without recompiling) on RSTS through the RT-11 Run-Time System having its EMT flag set, meaning that an RT-11 EMT instruction that matches a RSTS EMT is diverted to the RT-11 Run-Time System which translates them to the equivalent RSTSEMT. RSTS를 직접 이용하기 위해 작성된 프로그램(또는 Run-Time 시스템 자체 내에서 RSTS로 호출)은 실제 RSTS EMT 코드 바로 앞에 번째 EMT 명령(일반적으로 EMT 255)을 가짐으로써 이를 신호한다.

호환성 계층은 전체 하드웨어 에뮬레이션의 복잡성과 속도 저하를 모두 방지한다.일부 프로그램은 FreeB에서 실행되는 일부 Linux 애플리케이션과 같이 원래 프로그램보다 더 빨리 실행될 수도 있다.SD의 Linux 호환성 계층은 Red Hat Linux에서 동일한 애플리케이션보다 더 좋은 성능을 발휘할 수 있다.Wine에서는 Windows NT 기반 운영 체제와 비교하기 위해 벤치마크를 실행하는 경우가 있다.[9]

유사한 시스템에서도 호환성 계층 구현에 대한 세부사항은 상당히 복잡하고 번거로울 수 있다. 좋은 예는 NetBSDMIPS 아키텍처 버전에서 IRIX 이진 호환성 계층이다.[10]

호환성 계층은 호스트 시스템의 CPU가 외부 시스템의 CPU와 (상향적으로) 호환될 것을 요구한다.예를 들어, Microsoft 윈도우즈 호환성 계층은 Power에서 사용할 수 없음윈도우에는 x86 CPU가 필요하기 때문에 PC 하드웨어. 이 경우 완전한 에뮬레이션이 필요하다.

하드웨어

하드웨어 호환성 계층은 하드웨어 에뮬레이션을 허용하는 도구를 포함한다.브레이크아웃 박스는 기계와 호환되지 않는 특정 컴퓨터 버스에 호환성을 제공할 수 있기 때문에 일부 하드웨어 호환성 계층은 브레이크아웃 박스를 포함한다.

참고 항목

참조

  1. ^ Charlie Russel, Microsoft MVP for Windows Server and Tablet PC (2002-02-18). "Application Compatibility in Windows XP".
  2. ^ "Cygwin". www.cygwin.com. Retrieved 2019-11-23.
  3. ^ https://www.patreon.com/posts/project-2ine-16513790
  4. ^ "Linux emulation in FreeBSD".
  5. ^ "Emulation". freebsd.org. Retrieved 2014-03-16.
  6. ^ "A look inside..." freebsd.org. Retrieved 2014-03-16.
  7. ^ "NetBSD Binary Emulation". netbsd.org. Retrieved 2014-03-16.
  8. ^ "Comparing WSL 1 and WSL 2".
  9. ^ BenchMark-0.9.5 웨이백 머신보관된 2010-12-09 - 공식 와인 위키
  10. ^ Emmanuel Dreyfus (August 8, 2002). "IRIX Binary Compatibility, Part 1". onlamp.com. Retrieved 2014-03-16.

외부 링크