Il y a de quoi ils sont destinés, et ce qu'ils sont utilisés par Windows et Linux.
L'origine, l'intention derrière les registres de segment a été de permettre à un programme d'accès à de nombreux différents (grande) des segments de mémoire qui ont été conçu pour être indépendant et d'une partie d'une persistance de la boutique virtuelle. L'idée a été prise à partir de l' 1966 Multics système d'exploitation, que les fichiers traités comme de simples segments de mémoire adressable. No BS "Ouvrir un fichier, écrire enregistrer, fermer le fichier", juste "Stocker cette valeur dans le virtuel segment de données" à la page sale rinçage.
Notre courant 2010 systèmes d'exploitation sont un pas de géant en arrière, qui est pourquoi ils sont appelés "Eunuques". Vous pouvez seulement de l'adresse de votre espace de processus unique segment, donnant un soi-disant "plat" à mon humble avis terne) l'adresse de l'espace". Les registres de segment sur le x86-32 machine peut encore être utilisé pour les registres de segment, mais personne n'a pris la peine (Andy Grove, ancien Intel président, avait un célèbre publique ajustement siècle dernier, quand il a compris, après toutes ces Intel ingénieurs ont passé énergie et son argent pour mettre en place cette fonctionnalité, que personne n'allait l'utiliser. Allez, Andy!)
AMD va 64 bits décidé qu'ils ne se soucient pas si ils ont éliminé Multics comme un choix (c'est la charité de l'interprétation; la uncharitable est qu'ils étaient désemparés sur Multics) et donc désactivé le général-capacité de registres de segment en mode 64 bits. Il y a toujours un besoin pour les threads d'accéder fil de magasin, et chaque thread a besoin d'un pointeur ... quelque part dans le immédiatement accessible état du thread (e.g, dans les registres) ... au fil de magasin. Depuis Windows et Linux utilisé FS à cet effet dans la version 32 bits, AMD a décidé de laisser le 64 bits registres de segment (GS et FS) être essentiellement utilisé uniquement à cette fin (je pense que vous pouvez les faire n'importe où dans votre espace de processus; je ne sais pas si le code de l'application peut charger ou pas). Intel dans leur panique de ne pas perdre des parts de marché d'AMD sur 64 bits, et Andy être à la retraite, a décidé de simplement copier AMD régime.
Il aurait été architecturalement plus joli à mon humble avis, pour faire de chaque fil de la mémoire de la carte disposent d'une adresse virtuelle (e.g, 0-FFF dire) qui a été son thread local storage (pas de [segment] registre pointeur de la nécessaire!); Je l'ai fait en 8 bits OS de retour dans les années 1970 et c'était très pratique, un peu comme avoir une grosse pile de registres de travail.
Ainsi, les registres de segment sont maintenant un peu comme votre annexe. Ils servent un vestige de but. À notre perte collective.
Ceux qui ne connaissent pas l'histoire ne sont pas condamnés à la répéter; ils sont condamnés à faire quelque chose de stupide.