9
votes

Quel est le code pour le processus de ralenti?

Lorsque la CPU ne fait rien, il exécute le processus de ralenti. J'ai entendu dire que ce processus recherche des programmes qui attendent dans la file d'attente afin que la CPU puisse les exécuter. Est-ce tout ce qu'il fait? À quoi ressemble le code? Je suis également intéressé à connaître le nom de fichier du processus de veille du système dans les différents OSES.


0 commentaires

5 Réponses :


4
votes

Le processus de ralenti ne fait rien; Le système d'exploitation lui-même est responsable des processus de planification à courir. Le processus de ralenti lui-même vient de boucler les instructions HLT. (Source: Wikipedia )


2 commentaires

Ce lien ne va nulle part.


Plus moderne X86 OSES Utilisez Monitor / MWAIT Pour placer la CPU dans un état de sommeil plus profond, mais oui, c'est juste une façon fantaisie de HLT .



2
votes

Le système d'exploitation exécute le planificateur chaque fois qu'un processus est à la fin de sa tranche de temps, et chaque fois qu'un processus a effectué une opération de blocage. Le planificateur choisit ensuite le prochain processus à exécuter. Sur les plates-formes que je sais, cela n'a aucun sens de voir le planificateur comme un processus.

Voici un peu plus sur planification .


0 commentaires

6
votes

Dans les systèmes intégrés critiques de l'espace, le processus inactif est utilisé pour Mémoire de gommage afin de vérifier Si les rayons cosmiques ont introduit des flips de bits.


0 commentaires

12
votes

La question contient plusieurs hypothèses tacites erronées. Voici quelques indications:

  • Ce n'est pas nécessairement un processus oiable . C'est un processus inactif sur des systèmes d'exploitation non multithreading, mais pas sur les multithreading. Se concentrer sur le processus dans ce dernier type de système d'exploitation se concentre sur la mauvaise chose. Bien que Microsoft Windows NT l'appelle un "processus inactif" et affiche que dans son gestionnaire de tâches, les mécanismes importants sont les threads inactifs. Le processus oiable est simplement le processus auquel ces threads appartiennent au souci de comptabilité. (Tous les filets doivent appartenir à un processus.) Il n'y a pas de nom de fichier. (Les processus ne sont même pas ont noms sur de nombreux systèmes.)
  • Tous les systèmes d'exploitation n'ont même pas ces processus / threads inactifs. sur plusieurs systèmes d'exploitation uni plus ancien, ralenti le système lorsqu'il n'y avait rien à faire était simplement un cas particulier dans le répartiteur. Cette approche est problématique pour les systèmes d'exploitation multiprocesseurs (lorsqu'un processeur est au ralenti dans un processus / un thread qu'un autre CPU souhaite envoier) et c'est pourquoi l'idée d'un processus / fil spécial toujours prêt à courir, un par processeur dans Le système, de sorte que la CPU puisse inactiver dans son propre contexte de fil privé, est devenue la norme.
  • quel processus / thread inactif est spécifique à la CPU. La qualité importante d'un processus / thread inactif est que doit toujours être prêt à fonctionner . Il ne doit jamais bloquer. Mais cela peut faire tout ce qu'il aime. Habituellement "tout ce qu'il aime" signifie "aussi peu que possible", cependant. Le fil de ralenti canonique n'est qu'une boucle infinie: une instruction de branche inconditionnelle ramifiant à elle-même. Plusieurs architectures de processeur fournissent des équivalents à l'instruction X86 HLT , dont l'intention est en termes généraux pour réduire l'utilisation du processeur de ralenti du bus système (de sorte que, bien sûr, non -Idle Les processeurs peuvent utiliser cette bande passante de bus). Donc, sur de nombreuses architectures, la boucle infinie exécute à plusieurs reprises ces instructions. Certains processeurs peuvent signaler leur état "inactif" sur le bus lorsqu'ils exécutent de telles instructions, quel matériel externe peut reconnaître et agir (par exemple en ralentissant les horloges de bus et consommant moins de puissance, par exemple). De même, les instructions de ralenti peuvent amener les processeurs eux-mêmes de faire des choses telles que le ralentissement de l'horloge et l'économie d'énergie.
  • Schedule de bas niveau n'est pas une chose "in-thread". Après tout, c'est le planificateur de bas niveau, souvent appelé le répartiteur , qui détermine quel fil même courir en premier lieu. Il s'agit de planification de haut niveau de taille moyenne et (parfois bien que rarement) dans des filets. Un planificateur de taille moyenne peut être, par exemple, un fil qui se réveille toutes les n secondes et analyse la table de threads recompagnant les priorités de fil des threads de priorité dynamique. Ou peut-être un fil que, toutes les n secondes, poussent des segments de processus complets sur le disque et les redevient de nouveau, en fonction de la priorité des processus et de l'utilisation récente de la CPU. (Ce dernier type est rare sur les systèmes d'exploitation de pagination modernes, mais il existait sur les systèmes d'exploitation d'échange de segments.)

0 commentaires

0
votes

Le processus d'inactivité est destiné au planificateur d'exécuter quelque chose lorsque aucun processus n'est exécuté. Cela dépend du système d'exploitation en particulier.

Pour une compréhension simple, nous pouvons dire que le processus d'inactivité est une boucle infinie, qui sera programmée lorsqu'aucun processus ne fonctionne


0 commentaires