Linux에서 64비트로의 전환은 어떻게 처리되었나요?

Linux에서 64비트로의 전환은 어떻게 처리되었나요?

Linux/Unix에서 64비트로의 전환은 어떻게 처리되었습니까? Windows 세계에는 여전히 문제가 있는 것 같고 *nix 세계에서는 이 문제가 어떻게 처리되었는지 궁금합니다.

답변1

커널을 64비트로 만드는 데 필요한 작업은 다음과 같이 수행되었습니다.ㅋㅋㅋ얼마 전 DEC Alpha 시스템을 사용했습니다. 그러나 프로그램은 다른 문제입니다.

지금까지 내가 본 일반적인 합의는 다음과 같습니다.

  • 혼합 바이너리가 있는 시스템을 위한 별도의 /lib디렉토리/lib64
  • 64비트로 컴파일합니다. 컴파일이 실패하면 소스가 64비트용으로 지워질 때까지 32비트로 다시 컴파일하십시오.

그 외에는 32/64비트 혼합 빌드에서 "슬픔"을 많이 볼 수 없을 것입니다.

답변2

Windows와 *ix는 전환을 위해 서로 다른 데이터 모델을 사용했습니다. 이 UNIX.org페이지약간 오래되었지만 여전히 장단점에 대한 좋은 개요를 제공합니다( long long나중에 C99에 추가되었으며 최소 64비트가 필요함). 당신은 또한 볼 수 있습니다위키피디아 기사같은 주제에. UNIX.org 기사 끝 부분에서 주장한 대로 대부분의 UNIX 계열 시스템은 LP64를 사용하고 있습니다. 즉 long, long long, 및 포인터가 모두 64비트임을 의미합니다.

Windows는 LLP64 데이터 모델을 사용했습니다. 이는 long long포인터와 포인터만 64비트임을 의미합니다. long32비트로 유지됩니다. 그 이유 중 하나는 단순히 long.int

답변3

Linux 배포판은 대부분 OpenSource이므로 대부분의 전환이 이미 완료되었습니다. 스카이프와 같은 특정 소프트웨어를 사용하지 않는 한 아무런 단점 없이 순수한 64비트 시스템을 실행할 수 있습니다.

그러나 IMHO의 실제 차이점은 일반적으로 먼저 포팅되는 오픈 소스 소프트웨어(일부 자원봉사자는 무언가를 다시 컴파일해야 하며 일부 컴파일 문제를 수정해야 함)이거나 대부분의 경우 포팅되지 않기 때문에 개방형, 유닉스 및 Windows보다 더 고유합니다. 단지 다시 컴파일된 것을 제외한 모든 것;) - 그리고 마지막으로 포팅된 속성입니다.

아마도 Linux에는 저장소가 있어 설치가 자동으로 처리될 수 있습니다. 64비트 또는 32비트 버전을 선택할 필요가 없습니다(시스템이 자동으로 선택함). Windows 프로그램은 다운로드되며 별도의 64비트 버전과 32비트 버전이 있습니다.

  • 서버의 파일 크기를 두 배로 늘립니다.
  • 사용자는 자신의 버전을 알아야 합니다. 아니면 뭔가가 다르다고 해도

이것이 바로 Windows 바이너리가 일반적으로 32비트인 이유인 것 같습니다. 이는 모든 경우에 적용되며 모든 사람이 64비트 버전으로 전환한 것은 아닙니다.

답변4

실제로 ACM 대기열에서 "64비트를 향한 긴 여정"을 시도해 보세요. http://queue.acm.org/detail.cfm?id=1165766 이는 나중에 ACM 커뮤니케이션에 의해 확인되었습니다. 최초의 64비트 마이크로는 MIPS R4000으로 SGI Crimson 1Q1992에 출시되었으며 Alphas는 그 해 말에 출시되었습니다.

R4000은 처음에는 32비트 모드에서 실행되었고 나중에는 64/32 모드, 즉 64비트 OS, 64 또는 32비트 사용자 코드에서 실행되었습니다. Alphas는 항상 64비트 전용으로 UNIX를 실행했습니다. (32비트 앱이 설치된 기반이 없었기 때문에 합리적인 선택이었습니다.)

1990년대 후반에 SGI는 XFS가 Linux로 포팅되었을 때(실제로는 64비트를 원함) Linux를 64비트화(Itanium에서 실행하기 위해)하는 노력에 기여했습니다.

관련 정보