Comment un ordinateur peut-il s'éteindre si un montage / service, etc. ne peut être démonté?

0

Parfois, un redémarrage brutal est nécessaire lorsqu'un ordinateur se met dans un mauvais état, quel que soit le système d'exploitation utilisé. Dans Linux, par exemple, si un disque ne peut pas être démonté, même par la force, comment une commande d'arrêt parvient-elle à le faire? À quoi l'arrêt a-t-il accès pour le démontage forcé, etc., qui n'est pas accessible depuis le terminal?

J Collins
la source
De quel OS parlons-nous? Ce qui va arriver dépend automatiquement du système d'exploitation. Ce qui nécessite l'intervention d'un utilisateur dépend du système d'exploitation.
Ramhound
Pour le moment, Linux, mais les deux réponses m'intéressent. Le problème est que je ne sais pas comment un système d’exploitation peut quitter un processus de force, car la première réponse, un cas «trop grave», doit être arrêté, mais aucun utilisateur n’a demandé la destruction à mort. Il arrive sous Windows et Linux qu'un handle de fichier puisse verrouiller des objets, et la seule solution est un redémarrage.
J Collins
Dans la plupart des cas, les commandes tentent uniquement de faire quelque chose. Après cette période, un comportement spécifique ou inconnu peut se produire.
Ramhound
rappelez-vous, un "point de montage" est une structure de mémoire au sein de la structure de mémoire du noyau supervisée par le logiciel du noyau et de l'espace utilisateur. Indépendamment de ce que pense le reste du logiciel, le noyau peut toujours détruire cette structure de mémoire. dans la plupart des cas, il ne suffira pas de protéger l’intégrité du système de fichiers contre les événements indésirables causés par un logiciel ou des utilisateurs incorrects. Ce n'est pas comme si un processus existait au-delà du point où le noyau veut qu'il existe. c'est tout juste la gestion d'état.
Frank Thomas

Réponses:

2

À l’arrêt, le système essaiera de fermer en douceur toutes les applications ou tous les services chargés. Les applications seront informées que cela se produit et se verront attribuer un court délai de grâce pour "réparer leur perte".

La prochaine partie du processus d'arrêt déclenchera le système d'exploitation pour demander aux pilotes du système de fichiers de vider leurs données stockées sur le périphérique de stockage. Cela devrait amener le pilote du système de fichiers à assainir le système de fichiers avant son arrêt.

Il indiquera également au lecteur que le système de fichiers est activé pour vider tous les caches matériels qu’ils ont sur le disque.

Si, après tout, il y a encore des données qui verrouillent le disque, il n’ya pas de chance, le système va tout simplement être arrêté. Si une application a refusé de sauvegarder ses données ou de les diffuser correctement, elles sont simplement perdues.

Mokubai
la source
La question se situe donc dans le scénario final «tant pis»: est-il possible de le faire processus par processus, service par service, etc.?
J Collins
Eh bien, vous pouvez manuellement parcourir tous les processus de la liste et leur demander de se terminer, mais cela ne vous aidera pas si un processus est bloqué ou mal écrit et laisse un verrou orphelin. Dans ce cas, les chances sont que tout soit rangé correctement et que le redémarrage soit probablement la meilleure chose à faire.
Mokubai
@JCollins - La fermeture forcée d'un processus nettoie les descripteurs des fichiers éventuellement ouverts. Donc, cela dépend des processus.
Ramhound
IIRC tous les processus sont tués après init sorties. Cependant, il est tout à fait possible que des fichiers restent verrouillés en raison de circonstances étranges et / ou de bogues du noyau.
Daniel B
En ignorant les bogues du noyau, j'ai vu des cas où, par exemple, smb les processus ne se sont pas bien terminés et init (ou systemd dans mon CentOS) est devenu le propriétaire du processus indiqué dans pstree. Quand toutes les variantes de kill fail, quelles options sont laissées avant un redémarrage, en notant qu'il est impossible de tuer le processus parent.
J Collins