Jak obsługiwano przejście na 64 bity w systemie Linux


15

Jak obsługiwano przejście na 64 bity w systemie Linux / Unix? Świat Windows nadal wydaje się mieć z tym problemy i jestem ciekawy, jak to było obsługiwane w świecie * nix.


Z latającymi kolorami.
Kaz

Odpowiedzi:


12

Prace wymagane do stworzenia 64-bitowego jądra zostały wykonane przez długi czas temu przy użyciu systemów DEC Alpha. Programy to jednak inna sprawa.

Ogólny konsensus, jaki do tej pory widziałem, wydaje się następujący:

  • Oddzielne /libi /lib64katalogi dla systemów, które mają mieszane pliki binarne
  • Kompiluj jako 64-bit; jeśli kompilacja się nie powiedzie, skompiluj ponownie jako 32-bitowy, aż do momentu wyczyszczenia źródła dla wersji 64-bitowej

Poza tym naprawdę nie zobaczysz całego „żalu” z mieszanych wersji 32/64 bitowych.


Plus dowiązania symboliczne, aby nazwy binarne były stałe i spójne.
geoffc


Czy możesz wymienić dowolny program w systemie Linux, który można skompilować, ale tylko w wersji 32-bitowej?
Maciej Piechotka,

@Maciej Piechotka: nie sądzę, że zostało ich wiele. Wydaje mi się, że pamiętam, że OpenOffice.org było trudne, ale było to bardzo dawno temu, kiedy zaczęła się konwersja na 64-bit. Poza tym: najwyraźniej Flash Player jest trudny: P
wzzrd

Od kiedy kompilowany jest Flash Player;) gnash / lightspark działa na 64-bitach, ale Adobe Flash Player jest własnościowy.
Maciej Piechotka,

8

Windows i * ix użyły różnych modeli danych do przejścia. Ta strona UNIX.org jest nieco stara, ale nadal zapewnia dobry przegląd kompromisów (zauważ, że long longzostała później dodana do C99 i wymagała co najmniej 64-bitowej wersji). Możesz także zobaczyć artykuł w Wikipedii na ten sam temat. Jak zalecono na końcu artykułu UNIX.org, większość systemów podobnych do UNIX została wyposażona w LP64, co oznacza long, że long longwszystkie wskaźniki są 64-bitowe.

Windows zastosował tak zwany model danych LLP64, co oznacza, że ​​tylko long longwskaźniki i wskaźniki są 64-bitowe. longpozostaje 32-bitowy. Jednym z powodów było po prostu to, że nie chcieli przechodzić i naprawiać uszkodzonego kodu, który zakładał się longdopasować do int.


2
Dużo debatowano także w świecie Uniksa. Jednym z argumentów przemawiających za dodaniem „long long” było to, że było o wiele za dużo kodu, który zakładał, że „long” ma 32 bity. (Przynajmniej w konkretnym argumencie, który wdałem się w comp.std.c, niedługo przed standardem C99).
David Thornley,

2

Ponieważ dystrybucje Linuksa są w większości OpenSource, w dużej mierze dokonano już przejścia. O ile nie korzystasz z własnego oprogramowania (takiego jak skype), możesz uruchomić czysty system 64-bitowy bez żadnych wad.

Jednak prawdziwa różnica IMHO jest bardziej odpowiednia niż otwarta niż Unix vs. Windows, ponieważ zazwyczaj jest to najpierw oprogramowanie open source (niektórzy wolontariusze muszą coś zrekompilować - być może naprawić pewne problemy z kompilacją) - lub w większości przypadków nie wszystko oprócz rekompilacji;) - i własności, która została przeniesiona jako ostatnia.

Możliwe, że dodatkowo w Linuksie masz repozytorium, więc instalacja odbywa się automatycznie - nie musisz wybierać wersji 64-bitowej lub 32-bitowej (system automatycznie wybiera twoją). W systemie Windows pobierane są programy o osobnej wersji 64-bitowej i 32-bitowej:

  • Podwaja rozmiar plików na serwerze
  • Wymaga od użytkownika znajomości jego wersji. Lub nawet, że coś się różnią

Myślę, że to jest powód, dla którego pliki binarne systemu Windows są zwykle 32-bitowe - jest to jeden rozmiar dla wszystkich i nie wszyscy przeszli do wersji 64-bitowej.


2

W rzeczywistości spróbuj „Długiej drogi do 64-bitów” w kolejce ACM: http://queue.acm.org/detail.cfm?id=1165766 To zostało później odebrane przez Komunikację ACM. Pierwszym 64-bitowym mikroprocesorem był MIPS R4000, dostarczony w SGI Crimson 1Q1992, Dec Alphas wysłany pod koniec tego roku.

R4000 działały początkowo w trybie 32-bitowym, a następnie w trybie 64/32, tj. 64-bitowym systemie operacyjnym, 64 lub 32-bitowym kodzie użytkownika. Alfy zawsze działały w systemie UNIX tylko w wersji 64-bitowej (rozsądny wybór, ponieważ nie było zainstalowanej bazy aplikacji 32-bitowych).

Później w latach 90. SGI włożył wiele wysiłku w 64-bitowy system Linux (działający na Itaniums), mniej więcej w czasie, gdy XFS został przeniesiony do Linuksa (naprawdę chciał 64-bit).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.