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.
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.
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.
multilib
alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilib
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 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 oznacza long
, że long 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ć do int
.
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.
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).