32 비트 커널에서 64 비트 사용자 용 소프트웨어를 실행하려면 무엇이 필요합니까?


10

Linux 및 Windows에서는 32 비트 및 64 비트 소프트웨어를 나란히 실행할 수있는 멀티 아치 / 와우 시스템을 갖춘 64 비트 커널이 필요한 상황에 익숙합니다.

그리고 몇 년 전에 누군가 MacOS 10.6 Snow Leopard가 32 비트 모드에서 커널을 사용하여 64 비트 응용 프로그램을 실행할 수 있음을 보여 주면서 마음이 아 lew습니다. 이것은 일회성 기술 전환 이었기 때문에 지금은 잊혀 질 수 있습니다. 내가 아는 한 모바일 공간에서 하드웨어를 앞지르면 iOS 및 Android 용 64 비트로 이동할 때 결코 필요하지 않습니다.

내 질문 : 32 비트 Linux 커널 (i386 또는 armhf)에서 동일한 기능을 사용하려면 무엇이 필요합니까?

나는 이것이 사소한 것이 아니라는 것을 이해합니다. 그렇다면 Microsoft는이 기능을 Windows XP 32 비트에 넣었을 수 있습니다. 그래도 일반적인 요구 사항은 무엇입니까? 제안 된 패치 또는 개념 증명이 있었습니까?

임베디드 세계에서는 64 비트 지원이 장치 드라이버에서 오랫동안 뒤쳐 질 수 있기 때문에 이것이 특히 도움이 될 것이라고 생각합니다.


Snow Leopard가 32 비트 커널로 64 비트 앱을 실행할 수 있습니까? IIRC 커널도 가능한 하드웨어에서 64 비트로 업데이트되었습니다.
muru

5
신경 쓰지 마라. superuser.com/a/340591/334516
muru

답변:


16

64 비트 응용 프로그램을 실행하려면 커널의 일부 지원이 필요합니다. 커널은 CPU에서 64 비트 코드 실행을 지원하기 위해 최소한 페이지 테이블, 인터럽트 테이블 등을 설정해야하며 전체 64 비트를 저장해야합니다. 응용 프로그램 간 (및 응용 프로그램에서 커널로 또는 그 반대로) 전환 할 때의 컨텍스트 따라서 순수한 32 비트 커널은 64 비트 사용자 공간을 지원할 수 없습니다.

그러나 커널은 사용자 공간에서 64 비트 코드를 지원하면서 커널 공간에서 32 비트 코드를 실행할 수 있습니다. 여기에는 64 비트 커널로 32 비트 응용 프로그램을 실행하는 데 필요한 지원과 유사한 처리가 포함됩니다. 기본적으로 커널은 응용 프로그램이 기대하는 64 비트 인터페이스를 지원해야합니다. 예를 들어, 64 비트 코드가 커널을 호출하고 매개 변수의 의미를 양방향으로 유지하는 메커니즘을 제공해야합니다.

문제는 가치가 있는지 여부입니다. Mac 및 일부 다른 시스템에서는 32 비트 커널 코드를 지원하므로 드라이버가 스위치를 동시에 전환 할 필요가 없기 때문에 사례를 만들 수 있습니다. Linux에서는 개발 모델이 다릅니다. 커널을 크게 변경하면 필요한 경우 커널의 모든 항목이 마이그레이션되며 커널 외부에서는 커널 개발자가 실제로 지원하지 않습니다. 64 비트 커널로 32 비트 사용자 영역을 지원하는 것이 확실히 유용하고 노력할만한 가치가 있습니다 (적어도 x86-64 지원이 추가되었을 때), 32 비트에서 64 비트가 필요한지 확실하지 않습니다 -비트...


Gilles가 unix.stackexchange에 대한 관련 답변을 지적 했으므로 완전성이 더 바람직하다고 생각합니다. 내가 주석 스트림에 묻은 것에서 아키텍처 상 한계로 인해 arm386에서는 여전히 불가능하지만 i386에서는 이론적으로 실현 가능합니까? 사례 : 초기 동기는 Raspbian이었으며, 재단의 로드맵은 Pi Zero와의 호환성을 유지하면서 향후 몇 년 동안 단일 커널을 유지하는 것입니다.
jdonald

3

Snow Leopard는 Intel 64 비트 CPU에서 64 비트 바이너리를 실행할 수있었습니다.

또한 efi가 이미 64 비트 일 때 64 비트 커널로 부팅 할 수있었습니다 (Macbook "transition-model"pro의 프로덕션 배치는 이미 그런 기계였습니다).

에뮬레이션이 필요하지 않았습니다. 32 비트 모드에서 부팅 할 때 더 적은 성능 비용을 지불했습니다.

순수한 32 비트 CPU에서는 64 비트 코드를 해석하는 방법을 모르기 때문에 그렇게 할 수 없습니다. 소프트웨어로 에뮬레이션하지 않는 한, 전통적으로 저전력 임베디드 컴퓨터 클래스의 경우 속도가 느려질 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.