Comment un système d'exploitation (de préférence Linux) sait-il que vous avez accédé à un emplacement mémoire auquel vous n'êtes pas autorisé?
Cette question a été inspirée par ces fichus pointeurs! La façon dont je le vois est la suivante: tout dans les ordinateurs concerne un compromis entre la vitesse, la sécurité, l'intégrité et de telles choses.
Je connais bien les cartes mémoire sous Linux, mais cela me semble un peu ridicule que le noyau vérifie si l'emplacement auquel vous essayez d'accéder réside dans une plage valide CHAQUE FOIS que vous effectuez un accès. On dirait que cela perdrait tellement de temps, qui pourrait être consacré à quelque chose de plus productif (mais peut-être moins sûr sans vérification!). Ou peut-être qu'il se souvient de tous les accès récents et les vérifie à chaque tick du minuteur matériel? (Mais cela semble dangereux, et encore une fois, lent.)
J'ai été surpris que cette question semble être sans réponse nulle part. C'est quelque chose que je me suis toujours demandé. Cela me fait penser qu'il existe une section de matériel qui le fera au nom de l'OS, à un niveau d'abstraction agréable et pratique. Mais encore, cela nécessiterait peut-être de charger les cartes de mémoire des processus suivants sur chaque changement de contexte, ce qui semble encore lent.
Alors oui, de toute façon, je continue un peu: comment un système d'exploitation détecte-t-il une violation de mémoire?
Merci