J'étudie les systèmes d'exploitation et l'architecture x86. Pendant que je lisais des informations sur la segmentation et la pagination, j'étais naturellement curieux de voir comment les systèmes d'exploitation modernes gèrent la gestion de la mémoire. D'après ce que j'ai trouvé, Linux et la plupart des autres systèmes d'exploitation évitent essentiellement la segmentation au profit de la pagination. Certaines des raisons pour lesquelles j'ai trouvé que je trouvais étaient la simplicité et la portabilité.
Quelles sont les utilisations pratiques de la segmentation (x86 ou autre) et verrons-nous l’utilisation de systèmes d’exploitation robustes ou continueront-ils à privilégier un système basé sur la pagination?
Maintenant, je sais que la question est complexe, mais je suis curieux de savoir comment la segmentation serait traitée avec les systèmes d’exploitation nouvellement développés. Est-il tellement logique de favoriser la pagination que personne ne songe à adopter une approche plus «segmentée»? Si oui, pourquoi?
Et lorsque je parle de «segmentation», je sous-entends que Linux ne l'utilise que dans la mesure nécessaire. Seulement 4 segments pour les segments utilisateur et de code / données du noyau. En lisant la documentation d'Intel, j'ai eu le sentiment que la segmentation avait été conçue avec des solutions plus robustes. Là encore, on m'a souvent dit à quel point le x86 peut être compliqué.
J'ai trouvé cette anecdote intéressante après avoir été liée à "l'annonce" originale de Torvald pour Linux. Il a dit ceci quelques messages plus tard:
Simplement, je dirais que le portage est impossible. C'est principalement en C, mais la plupart des gens n'appelleraient pas ce que j'écris C. Il utilise toutes les fonctionnalités imaginables du 386 que j'ai pu trouver, car c'était aussi un projet pour m'instruire sur le 386. Comme déjà mentionné, il utilise un MMU , pour la pagination (pas encore sur le disque) et la segmentation. C’est la segmentation qui le rend VRAIMENT 386 (chaque tâche a un segment de 64 Mo pour le code et les données - 64 tâches au maximum en 4 Go. Quiconque a besoin de plus de 64 Mo / tâche - cookies difficiles).
Je suppose que mes propres expériences avec x86 m'ont amené à poser cette question. Linus n'avait pas StackOverflow, il l'a donc simplement mis en place pour l'essayer.