Wie wurde die Umstellung auf 64-Bit unter Linux gehandhabt?

15

Wie wurde der Übergang zu 64 Bit unter Linux / Unix gehandhabt? Die Windows-Welt scheint immer noch Probleme zu haben und ich bin gespannt, wie es in der * nix-Welt gehandhabt wurde.

Louis Salin
quelle
Mit fliegenden Farben.
Kaz

Antworten:

12

Die Arbeit, die erforderlich ist, um den Kernel 64-Bit zu machen, wurde vor ziemlich langer Zeit mit DEC Alpha-Systemen durchgeführt. Programme sind jedoch eine andere Sache.

Der allgemeine Konsens, den ich bisher gesehen habe, scheint zu sein:

  • Separate /libund /lib64Verzeichnisse für Systeme mit gemischten Binärdateien
  • Kompilieren Sie als 64-Bit; Wenn die Kompilierung fehlschlägt, kompilieren Sie erneut als 32-Bit, bis die Quelle für 64-Bit gelöscht werden kann.

Abgesehen davon werden Sie wirklich nicht viel "Trauer" von gemischten 32/64-Bit-Builds sehen.

Avery Payne
quelle
Plus Symlinks, um die Binärnamen konstant und konsistent zu halten.
Geoffc
Könnten Sie ein Programm unter Linux nennen, das kompiliert werden kann, aber nur auf 32-Bit?
Maciej Piechotka
@Maciej Piechotka: Glaube nicht, dass noch viele übrig sind. Ich denke, ich erinnere mich, dass OpenOffice.org schwierig war, aber das war vor langer Zeit, als die Konvertierung auf 64-Bit begann.
Davon abgesehen
Seit wann wird der Flash Player kompiliert;) gnash / lightspark arbeitet mit 64-Bit aber Adobe Flash Player ist Eigentum.
Maciej Piechotka
8

Windows und * ix verwendeten für den Übergang unterschiedliche Datenmodelle. Diese UNIX.org- Seite ist etwas alt, bietet aber dennoch einen guten Überblick über die Kompromisse (Anmerkung, long longdie später zu C99 hinzugefügt wurde und mindestens 64-Bit sein musste). Sie können auch einen Wikipedia-Artikel zum gleichen Thema anzeigen. Wie am Ende des Artikels von UNIX.org befürwortet, haben die meisten UNIX-ähnlichen Systeme LP64 verwendet, was bedeutet long, dass long longZeiger alle 64-Bit sind.

Windows entschied sich für das sogenannte LLP64-Datenmodell, was bedeutet, dass nur long longund Zeiger 64-Bit sind. longbleibt 32-bit. Ein Grund dafür war einfach, dass sie keinen fehlerhaften Code reparieren wollten, der als longpassend für einen angenommen wurde int.

Matthew Flaschen
quelle
2
Auch in der Unix-Welt gab es viele Diskussionen. Eines der Argumente für das Hinzufügen von "long long" war, dass es viel zu viel Code gab, der davon ausging, dass "long" 32 Bit lang war. (Zumindest in dem speziellen Streit, in den ich nicht allzu lange vor dem C99-Standard auf comp.std.c gekommen bin.)
David Thornley
2

Da es sich bei Linux-Distributionen hauptsächlich um OpenSource handelt, ist der Übergang bereits weitgehend abgeschlossen. Sofern Sie keine proprietäre Software (z. B. Skype) verwenden, können Sie ein reines 64-Bit-System ohne Nachteile ausführen.

Der wirkliche Unterschied IMHO ist jedoch eher eigentumsbezogen als offen als unix oder windows, da normalerweise die Open-Source-Software zuerst portiert wird (einige Volonteer müssen etwas neu kompilieren - möglicherweise einige Kompilierungsprobleme beheben) oder in den meisten Fällen nicht portiert alle aber nur neu kompiliert;) - und Eigenschaft, die zuletzt portiert wird.

Möglicherweise haben Sie unter Linux zusätzlich Repos, sodass die Installation automatisch erfolgt - Sie müssen sich nicht für eine 64-Bit- oder 32-Bit-Version entscheiden (das System wählt Ihre automatisch aus). Unter Windows werden Programme mit einer separaten 64-Bit- und 32-Bit-Version heruntergeladen:

  • Verdoppelt die Größe der Dateien auf dem Server
  • Der Benutzer muss seine Version kennen. Oder sogar, dass sie sich durch etwas unterscheiden

Ich denke, das ist der Grund, warum Windows-Binärdateien normalerweise 32-Bit sind - es ist eine Einheitsgröße und nicht jeder hat die 64-Bit-Version gewählt.

Maciej Piechotka
quelle
2

Probieren Sie "Der lange Weg zu 64-Bit" in der ACM-Warteschlange aus: http://queue.acm.org/detail.cfm?id=1165766. Dies wurde später von Communications of the ACM aufgegriffen. Das erste 64-Bit-Mikro war MIPS R4000, das Ende des Jahres in SGI Crimson 1Q1992 und Dec Alphas ausgeliefert wurde.

R4000s wurden zuerst im 32-Bit-Modus und später im 64/32-Modus ausgeführt, dh 64-Bit-Betriebssystem-, 64- oder 32-Bit-Benutzercodes. Alphas hat UNIX immer nur mit 64-Bit ausgeführt (eine vernünftige Wahl, da keine Basis von 32-Bit-Apps installiert war.)

Später in den 1990er Jahren leistete SGI einen Beitrag zur 64-Bit-Version von Linux (um auf Itaniums zu laufen), ungefähr zu der Zeit, als XFS auf Linux portiert wurde (es wollte eigentlich 64-Bit).

John Mashey
quelle