Comment le passage au 64 bits a-t-il été géré sous Linux
15
Comment la transition vers 64 bits a-t-elle été gérée sous Linux / Unix? Le monde Windows semble toujours avoir des problèmes avec lui et je suis curieux de savoir comment il a été géré dans le monde * nix.
Le travail requis pour rendre le noyau 64 bits a été effectué il y a très longtemps en utilisant les systèmes DEC Alpha. Les programmes, cependant, sont une autre affaire.
Le consensus général que j'ai vu jusqu'à présent semble être:
Séparez /libet /lib64répertoires pour les systèmes qui ont des binaires mixtes
Compiler en 64 bits; si la compilation échoue, recompilez en 32 bits jusqu'à ce que la source puisse être effacée pour 64 bits.
En dehors de cela, vous n'allez vraiment pas voir beaucoup de "chagrin" à partir de versions mixtes 32/64 bits.
Pourriez-vous nommer un programme sous Linux qui peut être compilé mais uniquement sur 32 bits?
Maciej Piechotka
@Maciej Piechotka: ne pense pas qu'il en reste beaucoup. Je pense que je me souviens qu'OpenOffice.org était délicat, mais c'était à l'époque où la conversion en 64 bits a commencé. Autre que cela: apparemment Flash Player est délicat: P
wzzrd
Depuis que Flash Player est compilé;) gnash / lightspark fonctionne sur 64 bits mais Adobe Flash Player est propertary.
Maciej Piechotka
8
Windows et * ix ont utilisé différents modèles de données pour la transition. Cette page UNIX.org est un peu ancienne, mais elle fournit toujours une bonne vue d'ensemble des compromis (notez qu'elle a long longété ajoutée plus tard à C99 et devait être au moins 64 bits). Vous pouvez également voir un article Wikipedia sur le même sujet. Comme le préconise à la fin de l'article UNIX.org, la plupart des systèmes de type UNIX sont allés avec LP64, ce qui signifie long, long longet les pointeurs sont tous 64 bits.
Windows a opté pour ce qu'on appelle le modèle de données LLP64, ce qui signifie que seuls les long longpointeurs sont en 64 bits. longreste 32 bits. Une partie de la raison était simplement qu'ils ne voulaient pas passer en revue et corriger le code cassé qui supposait qu'il longcadrait dans un int.
Il y avait aussi beaucoup de débats dans le monde Unix. L'un des arguments en faveur de l'ajout de "long long" était qu'il y avait beaucoup trop de code qui supposait que "long" était de 32 bits. (Au moins dans l'argument particulier que j'ai abordé sur comp.std.c peu de temps avant la norme C99.)
David Thornley
2
Comme les distributions Linux sont principalement OpenSource, une transition importante a déjà été effectuée. Sauf si vous utilisez un logiciel approprié (tel que skype), vous pouvez exécuter un système 64 bits pur sans aucun inconvénient.
Cependant, la vraie différence à mon humble avis est plus propertiaire vs ouvert qu'Unix vs windows car c'est généralement le logiciel open source qui est porté en premier (certains volontaires doivent recompiler quelque chose - peut-être résoudre certains problèmes de compilation) - ou dans la plupart des cas, pas portés sur tout mais juste recompilé;) - et le répertoire qui est porté en dernier.
En outre, sous Linux, vous disposez peut-être de référentiels, de sorte que l'installation est gérée automatiquement - vous n'avez pas besoin de choisir la version 64 bits ou 32 bits (le système choisit automatiquement la vôtre). Sous Windows, les programmes sont téléchargés et ont des versions 64 bits et 32 bits distinctes:
Double la taille des fichiers sur le serveur
Demande à l'utilisateur de connaître sa version. Ou même qu'ils diffèrent par quelque chose
Je suppose que c'est la raison pour laquelle les binaires Windows sont généralement 32 bits - c'est une taille unique et tout le monde n'est pas passé à la version 64 bits.
En fait, essayez "The Long Road to 64-bits" sur ACM Queue:
http://queue.acm.org/detail.cfm?id=1165766
qui a ensuite été repris par les Communications de l'ACM. Le premier micro 64 bits était le MIPS R4000, expédié en SGI Crimson 1Q1992, Dec Alphas expédié à la fin de cette année.
Les R4000 fonctionnaient d'abord en mode 32 bits, puis plus tard en mode 64/32, c'est-à-dire avec un système d'exploitation 64 bits, des codes utilisateur 64 ou 32 bits. Alphas a toujours exécuté UNIX en 64 bits uniquement (un choix raisonnable, car il n'y avait pas de base installée d'applications 32 bits.)
Plus tard dans les années 1990, SGI a contribué à Linux 64 bits (pour fonctionner sur Itaniums), à peu près au moment où XFS a été porté sur Linux (il voulait vraiment 64 bits).
Réponses:
Le travail requis pour rendre le noyau 64 bits a été effectué il y a très longtemps en utilisant les systèmes DEC Alpha. Les programmes, cependant, sont une autre affaire.
Le consensus général que j'ai vu jusqu'à présent semble être:
/lib
et/lib64
répertoires pour les systèmes qui ont des binaires mixtesEn dehors de cela, vous n'allez vraiment pas voir beaucoup de "chagrin" à partir de versions mixtes 32/64 bits.
la source
multilib
alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilibWindows et * ix ont utilisé différents modèles de données pour la transition. Cette page UNIX.org est un peu ancienne, mais elle fournit toujours une bonne vue d'ensemble des compromis (notez qu'elle a
long long
été ajoutée plus tard à C99 et devait être au moins 64 bits). Vous pouvez également voir un article Wikipedia sur le même sujet. Comme le préconise à la fin de l'article UNIX.org, la plupart des systèmes de type UNIX sont allés avec LP64, ce qui signifielong
,long long
et les pointeurs sont tous 64 bits.Windows a opté pour ce qu'on appelle le modèle de données LLP64, ce qui signifie que seuls les
long long
pointeurs sont en 64 bits.long
reste 32 bits. Une partie de la raison était simplement qu'ils ne voulaient pas passer en revue et corriger le code cassé qui supposait qu'illong
cadrait dans unint
.la source
Comme les distributions Linux sont principalement OpenSource, une transition importante a déjà été effectuée. Sauf si vous utilisez un logiciel approprié (tel que skype), vous pouvez exécuter un système 64 bits pur sans aucun inconvénient.
Cependant, la vraie différence à mon humble avis est plus propertiaire vs ouvert qu'Unix vs windows car c'est généralement le logiciel open source qui est porté en premier (certains volontaires doivent recompiler quelque chose - peut-être résoudre certains problèmes de compilation) - ou dans la plupart des cas, pas portés sur tout mais juste recompilé;) - et le répertoire qui est porté en dernier.
En outre, sous Linux, vous disposez peut-être de référentiels, de sorte que l'installation est gérée automatiquement - vous n'avez pas besoin de choisir la version 64 bits ou 32 bits (le système choisit automatiquement la vôtre). Sous Windows, les programmes sont téléchargés et ont des versions 64 bits et 32 bits distinctes:
Je suppose que c'est la raison pour laquelle les binaires Windows sont généralement 32 bits - c'est une taille unique et tout le monde n'est pas passé à la version 64 bits.
la source
En fait, essayez "The Long Road to 64-bits" sur ACM Queue: http://queue.acm.org/detail.cfm?id=1165766 qui a ensuite été repris par les Communications de l'ACM. Le premier micro 64 bits était le MIPS R4000, expédié en SGI Crimson 1Q1992, Dec Alphas expédié à la fin de cette année.
Les R4000 fonctionnaient d'abord en mode 32 bits, puis plus tard en mode 64/32, c'est-à-dire avec un système d'exploitation 64 bits, des codes utilisateur 64 ou 32 bits. Alphas a toujours exécuté UNIX en 64 bits uniquement (un choix raisonnable, car il n'y avait pas de base installée d'applications 32 bits.)
Plus tard dans les années 1990, SGI a contribué à Linux 64 bits (pour fonctionner sur Itaniums), à peu près au moment où XFS a été porté sur Linux (il voulait vraiment 64 bits).
la source