Est ce que ce serait possible ? changement de noyau sans rebooter - Logiciels - Linux et OS Alternatifs
Marsh Posté le 07-03-2003 à 20:06:46
j'ai vu dans un topic cette semaine je crois qu'on pouvait prendre en compte un nouveau noyau à la volée mais que l'ancien reste en mémoire, sans compter que je ne suis pas persuadé que ça marche bien
pis les concours d'uptime ...
Marsh Posté le 07-03-2003 à 23:48:49
j'avais lu je ne sais plus ou qu'on pouvait, mais qu'ne fait tu te retrouvait en fait avec deux noyaux chargés enfin pas terrible ...
Marsh Posté le 08-03-2003 à 10:01:42
et on pourrait pas "décharger" le 1° une fois que le 2° est lancé et fonctionnel.
le pb de l'uptime n'est pas vraiment un pb pour un particulier mais il peut l'être pour certaines sociétés d'où le développement de solutions hot-plug par ex.
Marsh Posté le 08-03-2003 à 10:04:56
Ben déjà pour les noyaux modulaires, tu vas avoir des soucis (y'a de très fortes chances de symboles non définis ...) avec les nouveaux modules et l'ancien noyau chargé en mémoire ...
Marsh Posté le 08-03-2003 à 10:06:10
La solution pourrait (peut être) venir des micro noyaux ...
Mais bon, les kernels Linux actuels ne sont pas des micro noyaux ...
Marsh Posté le 08-03-2003 à 10:08:10
Je connais que dalle en prog mais en faisant une zone "reservé" ou on charge le nouveau noyau et ses modules (avec résolution des dépendances etc) sans toucher au 1° puis une commande provoquerait un basculement de toute la machine d'un noyau à l'autre avec "ouverture "de la zone reservée et "fermeture" de l'espace où se trouvait l'ancien noyau.
non ?
Marsh Posté le 08-03-2003 à 10:37:24
Mjules a écrit : Je connais que dalle en prog mais en faisant une zone "reservé" ou on charge le nouveau noyau et ses modules (avec résolution des dépendances etc) sans toucher au 1° puis une commande provoquerait un basculement de toute la machine d'un noyau à l'autre avec "ouverture "de la zone reservée et "fermeture" de l'espace où se trouvait l'ancien noyau. |
Ce qui est délicat, en fait, cé le basculement des services vitaux de l'OS (le task scheduling notamment) d'un noyau à l'autre ... Tu ne peux pas avoir d'interruption de ces "services" sinon tout s'arrete (cé comme le coeur d'un humain en qq sorte) ... le mieux est de faire en sorte que tu n'ai pas toucher à ces services d'un noyau sur l'autre et qu'ils soient toujours "compatibles" avec le reste autour (ou plus exectement l'inverse) ... comme ca tu as juste à décharger le reste (sous forme de modules) et à recharger les nouvelles version ... mais il me semble que cé tout bonnement le principe des micro noyaux ... Vas voir du côté du Hurd ... je crois qu'ils ont une archi à base de micro noyau ... tu trouveras certainement de la doc t'expliquant les principes, avantages et inconvénients de ce genre d'archi chez eux ...
Marsh Posté le 08-03-2003 à 13:32:06
C'est pas possible de changer le noyau à la volée.
Avec un système comme le Hurd, à base de micro-noyau, ce n'est pas possible non plus, mais il y a une différence de taille (arf ...) :
Le micro-noyau est tellement petit et ne contient quasiment rien qu'une fois fini, l'audit du code est facile à faire et on peut facilement le considérer fiable, et le garder en permanence. Tout le reste, on peut le changer, que ce soit le scheduler, le gestionnaire de mémoire, les pilotes matériel, la pile réseau, et donc un bug corrigé ou une amélioration sur un de ces éléments n'implique pas un changement de noyau.
Marsh Posté le 08-03-2003 à 13:38:35
ReplyMarsh Posté le 08-03-2003 à 13:46:33
Agent007se a écrit : |
Ca neccessite une circulation extra-corporelle.
Transposé au monde informatique, ca voudrait dire basculer le flux sur un autre serveur...
Marsh Posté le 08-03-2003 à 14:29:30
maxix a écrit : |
Marsh Posté le 08-03-2003 à 21:27:53
Zzozo a écrit : (cé comme le coeur d'un humain en qq sorte) |
J'aurais plutôt dit le cerveau, mais bon...
Marsh Posté le 08-03-2003 à 21:42:17
De plus, il est impossible de changer à la volée le kernel. Chaque kernel a ses propres descripteurs d'interruption, et ses propres descripteurs de segments de données, plus l'allocateur mémoire. Si on change de kernel, toutes les données ki définissent ces structures sont effacées. De plus, pour changer le kernel, il faut exécuter son contenu. Et quand il exécute ce contenu, eh bien il réinitialise ces données, tu perds donc tout contrôle de la mémoire, et bien plus encore... De plus, le kernel lui-même est un processus. Or, ce processus est impossible à tuer. Pour changer de kernel, il faudrait lancer le nouveau kernel, et faire passer le processus de ce nouveau kernel pour le processus principal, puis tuer l'ancien processus, ce qui est impossible !!! Et pis, comme on doit réexécuter le kernel, c la même chose ke si on rebootait, donc autant rebooter
Marsh Posté le 08-03-2003 à 22:03:19
Citation : |
Ca marche pas ça ??????
Marsh Posté le 07-03-2003 à 20:03:38
salut,
tout le monde ou presque sait qu'une des rare raisons necessitant un reboot avec GNU/Linux est le changement de noyau.
Est ce qu'il ne serait pas possible d'en faire un à la volée ?
c'est à dire qu'on lancerait le nouveau noyau, qu'on enverrait une commande à l'ancien pour qu'il le prenne en compte et lui passe la main et le nouveau noyau ferait automatiquement les différentes choses à faire quand on change de noyau.
Est ce que c'est possible ou je rêve complètement et si c'est le cas pour quoi ?
merci
---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. | Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.