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.
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.
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.
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).
Odpowiedzi:
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:
/lib
i/lib64
katalogi dla systemów, które mają mieszane pliki binarnePoza tym naprawdę nie zobaczysz całego „żalu” z mieszanych wersji 32/64 bitowych.
źródło
multilib
alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilibWindows 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 long
został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 oznaczalong
, żelong long
wszystkie wskaźniki są 64-bitowe.Windows zastosował tak zwany model danych LLP64, co oznacza, że tylko
long long
wskaźniki i wskaźniki są 64-bitowe.long
pozostaje 32-bitowy. Jednym z powodów było po prostu to, że nie chcieli przechodzić i naprawiać uszkodzonego kodu, który zakładał sięlong
dopasować doint
.źródło
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:
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.
źródło
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).
źródło