바이너리 코드 호환성
Binary-code compatibility바이너리 코드 호환성(바이너리 호환 또는 오브젝트 코드 호환)은 컴퓨터 시스템의 속성입니다.이는 보통 범용 컴퓨터 CPU의 머신 코드와 같은 실행 가능 코드를 실행할 수 있음을 의미합니다.소스코드 호환성은 프로그램을 실행하기 전에 컴파일 또는 해석이 필요하다는 것을 의미합니다.
일반적인 운영체제 상에서 컴파일된 프로그램의 경우, 바이너리 호환성은 종종 두 컴퓨터의 CPU(명령어 세트)가 바이너리 호환성이 있을 뿐만 아니라 운영체제와 API의 인터페이스와 동작, 그리고 이들 API에 대응하는 ABI가 충분히 동등하다는 것을 의미한다.
하위 호환성이라는 용어는 일반적으로 객체 코드 호환성을 의미합니다.즉, 새로운 컴퓨터 하드웨어 및/또는 소프트웨어는 (실질적으로) 구식 하드웨어의 모든 기능과 더불어 추가 기능 또는 성능을 갖추고 있습니다.따라서 오래된 실행 가능 코드는 새 제품에서 변경되지 않고 실행됩니다.OS의 CPU 상에서 직접 실행되는 컴파일된 프로그램에서 "바이너리 호환 운영 체제"는 주로 다른 시스템과의 애플리케이션 바이너리 인터페이스(ABI) 호환성을 의미합니다.그러나 응용 프로그램이 직접 또는 간접적으로 의존하는 API(예: Windows API)가 충분히 유사하다는 것을 의미하기도 합니다.어플리케이션이 액세스 하는 하드웨어(그래픽스용 등)와 주변기기류도 완전한 호환성의 요인이 될 수 있습니다.다만, 최신의 API(종종 OS 자체나 특정의 디바이스 드라이버에 의해서 제공되는)에 의해서 하드웨어의 많은 차이가 숨겨져 있습니다.
그 외의 경우는, 소프트웨어의 일반적인 이식 기능을 사용해 바이너리 호환성이 없는 프로그램을 동작시킬 필요가 있습니다.
바이너리 호환성은 여러 OS에서 실행되는 컴퓨터 프로그램을 개발할 때 큰 이점이 됩니다.FreeB 등 여러 Unix 기반 OSSD 또는 NetBSD는 Linux에서 파생된 OS와 같은 일반적인 OS와의 바이너리 호환성을 제공합니다.이는 대부분의 바이너리 실행 파일이 이러한 OS에 일반적으로 배포되지 않기 때문입니다.
대부분의 OS는 이전 버전의 OS에서 실행되도록 구축된 대부분의 바이너리에 대해 각 버전의 OS에서 바이너리 호환성을 제공합니다.예를 들어 Windows 3.1, Windows 95 또는 Windows 2000용으로 컴파일된 많은 실행 파일은 Windows XP 또는 Windows 7에서도 실행할 수 있습니다.또한 DOS용 어플리케이션은 NTVDM이 지원되는 한 Windows 10까지의 훨씬 새로운 버전의 Windows에서 실행됩니다.
바이너리 대응 하드웨어
하드웨어에 실장되어 있는 디지털 프로세서에 대해서, 바이너리 호환성은, 다른 프로세서용으로 생성된 머신 코드의 상당부분이 올바르게 실행되어 다른 프로세서와 같은(대부분) 효과를 가지는 것을 의미합니다.이는 많은 프로세서 제품군에서 매우 흔한 일이지만, 이러한 프로세서를 중심으로 구축된 유비쿼터스 소형 임베디드 시스템에서는 다소 드문 일입니다.여기서 완전한 머신 코드 호환성은 인터럽트 서비스 루틴, I/O 포트, 하드웨어 레지스터, 카운터/타이머, 외부 인터페이스 등의 레이아웃과 정확히 같은 것을 의미합니다.추상화 레이어(휴대전화 등 일반 컴퓨터와의 경계에 있는 경우도 있음)를 사용하는 복잡한 임베디드 시스템의 경우, 이것은 다를 수 있습니다.
바이너리 호환 운영 체제
바이너리 호환 운영체제는 다른 OS 또는 같은 브랜드의 다른 OS와의 바이너리 호환성을 구현하기 위한 OS입니다.즉, ABI와 호환성이 있습니다(애플리케이션바이너리 인터페이스용).OS의 역할은 프로그램을 실행하는 것이기 때문에 OS를 실행하는 명령 집합 아키텍처는 동일하거나 호환성이 있어야 합니다.그렇지 않으면 CPU 에뮬레이터 또는 고속 동적 변환 메커니즘 내에서 프로그램을 사용하여 호환성을 확보할 수 있습니다.
예를 들어 Linux 커널은 윈도우즈와 호환되지 않습니다.그렇다고 해서 Linux가 Windows 애플리케이션과 바이너리 호환성이 없는 것은 아닙니다.어느 정도 이를 실현하는 추가 소프트웨어인 Wine을 사용할 수 있습니다.리액트OS 개발에서는, Microsoft 의 Windows NT 시리즈 OS 와 바이너리 호환성이 있는 오픈 소스의 프리 소프트웨어 OS 를 작성하는 것을 목표로 하고 있습니다.또한 Windows 커널은 Windows 드라이버가 아닌 Linux 드라이버를 사용합니다.FreeBSD 및 BSD 패밀리의 다른 멤버는 Linux 시스템 호출을 BSD로 변환하여 사용자 모드의 Linux 커널과 바이너리 호환성을 가집니다.이것에 의해, Linux 베이스의 OS 로 동작하는 애플리케이션과 라이브러리 코드를 BSD 로도 실행할 수 있게 됩니다.
이진 호환 OS는 가상화 또는 에뮬레이션을 통해 대체 OS를 실행하는 것과는 다릅니다.가상화 또는 에뮬레이션은 호스트 OS가 호환되지 않을 때 대체 OS 내에서 소프트웨어를 실행하는 것입니다.가상화가 호스트 OS와 함께 제공되는 경우가 있습니다(또는 이러한 소프트웨어를 입수할 수 있습니다).이것에 의해, 호스트 OS가 프로그램과 효과적으로 호환되게 됩니다.예를 들어 Windows XP Mode for Windows 7을 사용하면 64비트 버전의 Windows 7을 실행하고 오래된 소프트웨어를 Windows XP를 실행하는 32비트 가상 머신에서 계속 사용할 수 있습니다.VMware Workstation/VMware Fusion, Parallels Workstation 및 Windows Virtual PC는 Windows, Linux, MacOS에서 다른 OS를 실행할 수 있습니다.
다른 예로는 Power의 Mac OS X를 들 수 있습니다.PC는 Classic을 통해 Mac OS 9 및 이전 애플리케이션 소프트웨어를 실행할 수 있었습니다. 그러나 이로 인해 Mac OS X가 Mac OS 9와 바이너리 호환 OS가 되지는 않았습니다.대신 Classic 환경은 실제로 가상 머신에서 Mac OS 9.1을 실행하고 Mac OS [1][2]X 내에서 일반 프로세스로 실행되었습니다.
「 」를 참조해 주세요.
- 하위 호환성
- 응용 프로그램 바이너리 인터페이스(ABI)
- 컴퓨터 호환성
- 버그 호환성
- 비디오 게임 리메이크
- 멀티아키텍처 바이너리
레퍼런스
- ^ "Mac OS X System Architecture". 2002. Archived from the original on August 2, 2002.
- ^ Singh, Amit (June 29, 2006). Mac OS X Internals: A Systems Approach. Addison-Wesley. Section 2.11.8: Classic. ISBN 0-321-27854-2.
Classic Startup is a Mach-O application that runs Mac OS 9 within its address space. It provides a hardware abstraction layer between Mac OS 9 and Mac OS X by virtualizing traps, system calls, and interrupts. It runs in a protected memory environment, with multiple Mac OS 9 processes within it layered on top of a single Mac OS X BSD process.
외부 링크
- KDE Techbase 정책 – 라이브러리 릴리스 간의 이진 호환성을 깨지 않기 위한 C++ 개발 경험 규칙 요약(일부 예제 포함)입니다.
- ABI 분석 도구 – KDE Techbase 정책을 구현하는 ABI 및 이전 버전 바이너리 호환성을 분석하기 위한 오픈 소스 도구 세트