Wie wurde die Umstellung auf 64 Bit unter Linux gehandhabt?

Wie wurde die Umstellung auf 64 Bit unter Linux gehandhabt?

Wie wurde die Umstellung auf 64 Bit unter Linux/Unix gehandhabt? Die Windows-Welt scheint immer noch Probleme damit zu haben und ich bin neugierig, wie es in der *nix-Welt gehandhabt wurde.

Antwort1

Die Arbeit, die erforderlich war, um den Kernel 64-Bit zu machen, wurdelaaaaaangvor einiger Zeit mit DEC Alpha-Systemen. Bei Programmen sieht die Sache allerdings anders aus.

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

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

Abgesehen davon werden Sie bei gemischten 32/64-Bit-Builds nicht allzu viel „Kummer“ haben.

Antwort2

Windows und *ix verwendeten für den Übergang unterschiedliche Datenmodelle. Diese UNIX.orgSeiteist zwar schon etwas älter, bietet aber dennoch einen guten Überblick über die Kompromisse (beachten Sie, dass es long longspäter zu C99 hinzugefügt wurde und mindestens 64-Bit sein musste). Sie können auch eineWikipedia-Artikelzum gleichen Thema. Wie am Ende des UNIX.org-Artikels empfohlen, sind die meisten UNIX-ähnlichen Systeme auf LP64 umgestiegen, was bedeutet long, dass , long long, und Zeiger alle 64-Bit sind.

Windows hat sich für das sogenannte LLP64-Datenmodell entschieden, was bedeutet, dass nur long longund Zeiger 64-Bit sind. longbleibt 32-Bit. Ein Grund dafür war einfach, dass sie nicht kaputten Code durchgehen und reparieren wollten, der longin ein passen sollte int.

Antwort3

Da Linux-Distributionen größtenteils OpenSource sind, ist der Übergang bereits weitgehend abgeschlossen. Sofern Sie keine proprietäre Software (wie Skype) verwenden, können Sie ein reines 64-Bit-System ohne Nachteile ausführen.

Der wirkliche Unterschied besteht meiner Meinung nach jedoch eher zwischen proprietär und offen als zwischen UNIX und Windows, da normalerweise die Open-Source-Software zuerst portiert wird (einige Freiwillige müssen etwas neu kompilieren – vielleicht einige Kompilierungsprobleme beheben) – oder in den meisten Fällen überhaupt nicht portiert, sondern nur neu kompiliert wird ;) – und die proprietäre Software zuletzt portiert wird.

Möglicherweise haben Sie unter Linux zusätzlich Repos, sodass die Installation automatisch abläuft. Sie müssen sich nicht zwischen einer 64-Bit- und einer 32-Bit-Version entscheiden (das System wählt Ihre Version automatisch). Unter Windows werden Programme heruntergeladen und haben separate 64-Bit- und 32-Bit-Versionen:

  • Verdoppelt die Dateigröße auf dem Server
  • Erfordert, dass der Benutzer seine Version kennt. Oder sogar, dass sie sich in etwas unterscheiden

Ich vermute, das ist der Grund, warum Windows-Binärdateien normalerweise 32-Bit sind – es gibt eine Einheitsgröße und nicht jeder ist auf die 64-Bit-Version umgestiegen.

Antwort4

Versuchen Sie es doch einmal mit „The Long Road to 64-bits“ bei ACM Queue: http://queue.acm.org/detail.cfm?id=1165766 Das wurde später von Communications of the ACM aufgegriffen. Der erste 64-Bit-Mikrocontroller war der MIPS R4000, der im 1. Quartal 1992 in SGI Crimson ausgeliefert wurde, Dec Alphas wurden Ende desselben Jahres ausgeliefert.

R4000s liefen zunächst im 32-Bit-Modus, später dann im 64/32-Modus, d. h. mit 64-Bit-Betriebssystem und 64- oder 32-Bit-Benutzercodes. Alphas liefen immer nur unter UNIX im 64-Bit-Modus (eine vernünftige Wahl, da keine installierte Basis von 32-Bit-Apps vorhanden war).

Später in den 1990er Jahren beteiligte sich SGI an der Entwicklung von Linux auf 64-Bit (für die Ausführung auf Itanium), etwa zu der Zeit, als XFS auf Linux portiert wurde (es wollte unbedingt 64-Bit).

verwandte Informationen