comment fonctionne le répartiteur?
Récemment, j'ai commencé mon OS en cours. Pour autant que je sais le travail du répartiteur est de sauver le contexte actuel des processus de charge et de contexte de processus à exécuter suivant. Mais comment fait-il? Lorsqu'un processus est interrompu dès répartiteur va être chargé et exécuté ( comme c'est également un programme ) le contexte de la procédure précédente dans les registres, PSW, etc seront perdues. Comment est-ce qu'il va sauver le contexte avant de les charger lui-même ?
source d'informationauteur Terminal
Vous devez vous connecter pour publier un commentaire.
La réponse simple est que les processeurs modernes offrent architectural extensions de prévoir plusieurs banques de registres qui peuvent être échangés dans le matériel, donc jusqu'à X tâches de retenir à leur complète de l'ensemble des registres.
Les plus complexes de la réponse est que le répartiteur, lorsqu'il est déclenché par une interruption, reçoit la totalité du registre du programme qui était en cours au moment de l'interruption (à l'exception du compteur de programme, qui est sans doute propagé à travers un accord mutuellement convenues 'volatile' enregistrer ou quelque chose du genre). Ainsi, le répartiteur doit être soigneusement écrit à stocker l'état actuel du registre des banques comme de sa première opération sur le fait d'être déclenchée. En bref, le répartiteur n'a pas le contexte immédiat, et donc ne souffre pas du même problème.
Ici est une tentative à une simple description de ce qui se passe pendant le répartiteur d'appel:
De (sur)simplifier en résumé, le répartiteur n'a pas besoin de registres, il ne fait qu'écrire le cpu actuel de l'état à une profondeur prédéterminée emplacement de mémoire, de charger un autre processus de l'utilisation du processeur de l'état prédéterminée à partir d'un emplacement de mémoire, et les sauts à l'endroit où ce processus est arrêté.
Ne fait que le rendre plus clair?
Il n'a généralement pas de se charger d'une telle manière que vous perdez l'information sur le processus en cours.
Souvent, c'est une interruption qui se passe dans le cadre de l'actuel processus.
Ainsi l'expéditeur (ou un planificateur de tâches) peut enregistrer toutes les informations pertinentes dans une tâche de contrôle de bloc, de la sorte, avant le chargement de cette information pour le prochain processus.
Cela inclut le contenu d'un registre, pointeur de pile, et ainsi de suite.
Il est intéressant de noter que le contexte de la prochaine procédé comprend son état d'être dans le répartiteur d'interruption, de sorte que, quand il revient à partir de l'interruption, c'est à un tout autre processus.
Répartiteur module donne le contrôle de la CPU pour le processus choisi par le court-terme planificateur; il s'agit de:
la commutation de contexte,
la commutation en mode utilisateur,
saut à l'emplacement approprié dans le programme utilisateur de redémarrer le programme
Le système d'exploitation principale responsabilité est de contrôler l'exécution des processus. Cela comprend la détermination du modèle de l'exécution et de l'allocation des ressources pour le processus.
Un processus peut être dans l'un des deux états :
Lorsque le système d'exploitation crée un nouveau processus, il crée un processus de bloc de contrôle pour les processus et entre dans le processus dans le système dans le Pas de fonctionnement de l'état. Le processus est connu à l'OS et est en attente d'une occasion d'exécuter.
De temps à autre, le processus en cours d'exécution sera interrompu et le répartiteur de la partie de l'OS pour sélectionner d'autres processus à exécuter.
En cours d'exécution lorsque le processus est dépourvue de ressources, il est bloqué. À condition que ces ressources il rentre dans l'état prêt, et puis en cours d'exécution. Cette transition de prêts à l'exécution de l'état se fait par le dispatcher. Répartiteur distribue le processus.