Comment le système d'exploitation peut-il fonctionner sur la même puce qu'il est censé gérer?

17

De mes lectures sur les systèmes d'exploitation (lecture du matériel de base sur Wikipedia, les sites technologiques, etc.), j'ai appris que le système d'exploitation est un programme qui permet aux programmes et aux applications d'interagir avec le matériel de manière efficace et sûre.

Cependant, je suis confus quant à la façon dont le système d'exploitation supervise le fonctionnement de l'ordinateur lorsqu'il doit lui-même être utilisé.

Qu'est ce que je veux dire? Eh bien, la façon dont j'imagine un système d'exploitation pour fonctionner, c'est que sur un ordinateur, il y aurait deux CPU. Un qui exécute le système d'exploitation tout le temps et un autre que le système d'exploitation utilise pour exécuter l'ordinateur. Cependant, il s'avère que le système d'exploitation s'exécute sur le même processeur que les autres processus. C'est comme un manager qui doit travailler sur la même ligne de production que ses employés, et ne peut utiliser les outils électriques que lorsqu'un autre employé en a fini avec eux. Il ne serait pas un gestionnaire très efficace, car il n'aurait pas la capacité d'émettre des ordres si son employé était même légèrement indiscipliné.

Alors, comment se fait-il que le système d'exploitation ne s'exécute qu'une partie du temps sur le même processeur qui doit être partagé entre tous les autres processus? Comment cela fonctionne-t-il?

CodyBugstein
la source
1
Un gestionnaire ne devrait pas utiliser les outils électriques de ses employés! Au lieu de cela, il doit s'assurer que les employés ont des outils électriques fonctionnels.
MSalters

Réponses:

15

Les processeurs modernes connaissent le système d'exploitation dans une certaine mesure. Ils fournissent des "outils électriques" au premier qui les revendique. Il s'agit généralement du chargeur de démarrage, qui transfère ensuite le contrôle au système d'exploitation. On parle généralement de "mode noyau" vs "mode utilisateur" ou "ring 0" vs "ring 3" pour faire la distinction entre un processus avec les privilèges supplémentaires et le reste.

Ces «outils électriques» sont certains privilèges pour la gestion des ressources: contrôler la mémoire, l'accès au matériel et la durée pendant laquelle le code de niveau utilisateur peut être exécuté sans interruption.

La CPU exécute le système d'exploitation avec ses privilèges spéciaux lorsqu'un des événements suivants se produit:

  1. Un processus en mode utilisateur transfère explicitement le contrôle au processus en mode noyau. C'est ce qu'on appelle un système .
  2. Le processus en mode noyau peut utiliser ses privilèges spéciaux pour s'inscrire à certains événements (par exemple, un matériel externe envoie un signal spécial au CPU ou un processus de l'espace utilisateur essaie d'accéder à une ressource réservée). Lorsqu'un tel événement se produit, le CPU arrête immédiatement le processus en mode utilisateur et passe le contrôle du processus en mode noyau. Habituellement, on parle d'une interruption .

Ainsi, le système d'exploitation peut fonctionner sur la même puce, car la puce est conçue pour cela. Il peut se réserver des privilèges spéciaux. Le CPU peut interrompre à tout moment tous les autres morceaux de code sans ces privilèges spéciaux et remettre le contrôle au système d'exploitation.

Certaines puces avec un support très limité (par exemple un microcontrôleur ) n'ont pas ce support pour du code privilégié spécial. Ces puces fonctionnent généralement sans OS. Il n'y a qu'un seul gros programme en cours d'exécution, qui peut accéder directement au matériel, doit répondre aux interruptions matérielles et peut accéder à toutes les ressources à tout moment. Si ce programme fait une erreur, généralement tout se bloque.

stefan.schwetschke
la source
17

Dans leur forme la plus primitive, les systèmes d'exploitation reposent sur le bon comportement des processus et la remise de contrôle de temps en temps au système d'exploitation. Si un processus ne se comporte pas bien, il peut en effet arriver que le système d'exploitation se bloque.

Cependant, la plupart des CPU ont des interruptions : une interruption interrompt le processus en cours (préemption) et remet le contrôle au système d'exploitation. Vous pouvez planifier des interruptions pour qu'elles se produisent à des intervalles spécifiques ou être déclenchées en externe (par exemple, en appuyant sur le bouton de réinitialisation).

Fondamentalement, le processeur bascule entre l'exécution du système d'exploitation et l'exécution des processus à une vitesse incroyablement rapide. De plus, les CPU ont un "mode utilisateur" et un "mode noyau". Les processus s'exécutent en mode utilisateur et le système d'exploitation s'exécute en mode noyau. L'exécution en mode utilisateur empêche un processus d'exécuter des commandes restreintes (telles que IO). Si un processus veut écrire sur le disque, il doit demander au système d'exploitation de le faire. Le système d'exploitation passe en mode noyau et effectue l'écriture au nom du processus (après s'être assuré que le processus dispose des autorisations requises).

Tom van der Zanden
la source
7
@Imray Pas vraiment, pour le CPU, le système d'exploitation n'est qu'un autre morceau de code. Cependant, le processeur possède de nombreuses fonctionnalités conçues pour être utilisées par les créateurs d'un système d'exploitation.
Tom van der Zanden
3
Je ne sais pas si "au courant de" est la bonne terminologie, mais le CPU n'a d'autre raison que d'exécuter un système d'exploitation. Ce n'est certainement pas complètement indépendant. En fait, le processeur dépend entièrement du système d'exploitation pour gérer ses différents modes et lui dire quoi faire.
Mohair
2
@Mohair Il existe de nombreux microcontrôleurs qui fonctionnent sans OS, sont-ils considérés comme des processeurs?
Tom van der Zanden
2
"Est-ce que ça compte comme CPU?" Bien sûr qu'ils le font. Il en était de même pour le 6502 dans mon premier ordinateur, même s'il n'avait pas d'anneaux distincts pour le noyau et l'utilisateur, et vous pouviez, à pokepartir de la ligne de commande, travailler toutes sortes de méfaits.
dmckee
2
@TomvanderZanden comment fonctionne exactement the CPU switches back and forth between running the OS and running processes? Qu'est-ce qui déclenche le changement?
jnovacho
1

Vous n'avez pas besoin de deux processeurs différents pour que le microprocesseur exécute le code espace utilisateur et espace noyau. Fondamentalement, cela fonctionne de cette façon lorsque vous allumez votre ordinateur sur votre chargeur de démarrage du Bios (code 512 Ko sur le disque qui termine la signature du chargeur de démarrage 55aa) pour ram et via ce chargeur de démarrage, votre noyau est chargé sur RAM et s'exécute indéfiniment jusqu'à ce que vous éteigniez votre ordinateur. Et votre noyau gère la mémoire et ne permet pas à votre code de noyau qui se trouve sur ram de ne pas être écrasé par le code de l'espace utilisateur. À cette fin, il existe des appels système que le code de l'espace utilisateur a invoqués en utilisant ces appels système et ajoutez votre code de l'espace utilisateur au ram et commencez à l'exécuter. Dans les systèmes d'exploitation, ce concept est recherché comme une gestion de la mémoire. Voici le lien que vous pouvez lire c'est très bon pour commencer https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf

Yasin Fatullayev
la source
0

Pour s'appuyer sur d'autres réponses, il est plus facile de comprendre si vous pensez que le noyau lui-même n'est pas un processus mais un code de gestion. Tout processus utilisateur peut passer du mode utilisateur au mode noyau et exécuter du code noyau (instructions privilégiées) en utilisant une partie de l'espace noyau. Ensuite, le processus peut revenir en mode utilisateur et s'exécuter à nouveau dans l'espace utilisateur.

user35809
la source