Linux utilise-t-il des anneaux de protection?
Bagues de protection
Cela permet une hiérarchie entière de segments et d’autorisations entre eux. Vous avez peut-être remarqué qu’un appel transversal ressemble exactement à un appel système. Si vous avez déjà regardé l’assemblage Linux x86, la façon standard de passer un appel système est int 0x80, ce qui augmente l’interruption 0x80 . Une interruption arrête le processeur et se rend à une porte d’interruption, qui fonctionne ensuite de la même manière qu’une porte d’appel – il modifie le niveau de privilège et vous fait rebondir dans une autre zone de code .
Linux utilise-t-il des anneaux de protection?
Nous avons mentionné comment l’une des tâches majeures du système d’exploitation est de mettre en œuvre la sécurité; c’est de ne pas permettre à une application ou à un utilisateur d’interférer avec tout autre qui s’exécute dans le système. Cela signifie que les applications ne devraient pas être en mesure de se remplacer la mémoire ou les fichiers de chacun, et d’accès uniquement aux ressources système comme dicté par la politique système.
Cependant, lorsqu’une application est en cours d’exécution, il a une utilisation exclusive du processeur. Nous voyons comment cela fonctionne lorsque nous examinons les processus dans le chapitre suivant. S’assurer que l’application accède uniquement à la mémoire qu’il possède est implémentée par le système de mémoire virtuelle, que nous examinons dans le chapitre après. Le point essentiel est que le matériel est responsable de l’application de ces règles.
L’interface d’appel système que nous avons examiné est la passerelle de l’application pour accéder aux ressources système. En forçant l’application à demander des ressources via un appel système dans le noyau, le noyau peut appliquer des règles sur le type d’accès qui peut être fourni. Par exemple, lorsqu’une application passe un appel système ouvert () pour ouvrir un fichier sur disque, il vérifiera les autorisations de l’utilisateur par rapport aux autorisations de fichier et autorisera ou refusera l’accès.
4 . 1 . 1 niveaux de privilège
La protection matérielle peut généralement être considérée comme un ensemble d’anneaux concentriques autour d’un ensemble de fonctionnalités d’opérations.
Privilèges sur x86
Figure 4 . 1 . 1 . 1 anneaux
Dans l’intérieur, la plupart des anneaux sont les instructions les plus protégées; Ceux que seul le noyau devrait être autorisé à appeler. Par exemple, l’instruction HLT pour arrêter le processeur ne devrait pas être autorisée à être exécutée par une application utilisateur, car elle empêcherait l’ensemble de l’ordinateur de fonctionner. Cependant, le noyau doit être en mesure d’appeler cette instruction lorsque l’ordinateur est légitimement fermé. 1
Chaque anneau intérieur peut accéder à toutes les instructions protégées par un autre anneau de sortie, mais pas tout protégé par un autre anneau. Toutes les architectures n’ont pas plusieurs niveaux d’anneaux comme ci-dessus, mais la plupart fourniront soit au moins un niveau “noyau” et “utilisateur”.
4 . 1 . 1 . 1 386 Modèle de protection
Le modèle de protection 386 dispose de quatre anneaux, bien que la plupart des systèmes d’exploitation (tels que Linux et Windows) n’utilisent que deux des anneaux pour maintenir la compatibilité avec d’autres architectures qui ne permettent pas autant de niveaux de protection discrètes.
386 maintient les privilèges en faisant que chaque morceau de code d’application en cours d’exécution dans le système a un petit descripteur, appelé un descripteur de code, qui décrit, entre autres, son niveau de privilège. Lors de l’exécution du code d’application, un saut dans un autre code en dehors de la région décrite par son descripteur de code, le niveau de privilège de la cible est vérifié. S’il est plus élevé que le code en cours d’exécution, le saut est refondu par le matériel (et l’application se bloquera).
4 . 1 . 1 . 2 Privilège d’élevage
Les applications ne peuvent augmenter leur niveau de privilège que par des appels spécifiques qui le permettent, comme l’instruction pour implémenter un appel système. Ceux-ci sont généralement appelés un porte d’appel Parce qu’ils fonctionnent comme une porte physique; une petite entrée à travers un mur autrement impénétrable. Lorsque cette instruction est appelée, nous avons vu comment le matériel arrête complètement l’application en cours d’exécution et le contrôle des mains sur le noyau. Le noyau doit agir comme un gardien; S’assurer que rien de méchant ne passe par la porte. Cela signifie qu’il doit vérifier attentivement les arguments d’appel du système pour s’assurer qu’il ne sera pas dupe de faire quoi que ce soit qu’il ne devrait pas (si cela peut être, c’est un bogue de sécurité). Alors que le noyau fonctionne dans l’anneau le plus intérieur, il a des autorisations pour faire toute opération qu’elle souhaite; une fois terminé, il renverra le contrôle de l’application qui s’exécutera à nouveau avec son niveau de privilège inférieur.
4 . 1 . 1 . 3 appels système rapides
Un problème avec les pièges comme décrit ci-dessus est qu’ils sont très chers pour que le processeur puisse mettre en œuvre. Il y a beaucoup d’état à enregistrer avant que le contexte puisse changer. Les processeurs modernes ont réalisé ces frais généraux et s’efforcent de le réduire.
Pour comprendre le mécanisme d’appel décrit ci-dessus, il faut enquêter sur le schéma de segmentation ingénieux mais compliqué utilisé par le processeur. La raison initiale de la segmentation était de pouvoir utiliser plus que les 16 bits disponibles dans un registre pour une adresse, comme illustré dans la figure 4 . 1 . 1 . 3 . 1, x86 Segmentation adressant.
Segmentation élargissant l’espace d’adressage d’un processeur en le divisant en morceaux. Le processeur conserve des registres de segment spéciaux, et les adresses sont spécifiées par un registre de segment et une combinaison de décalage. La valeur du registre du segment est ajoutée à la partie de décalage pour trouver une adresse finale.
Figure 4 . 1 . 1 . 3 . 1 x86 Segmentation adressant
Lorsque x86 est passé à des registres 32 bits, le schéma de segmentation est resté mais dans un format différent. Plutôt que de tailles de segments fixes, les segments peuvent être de toute taille. Cela signifie que le processeur doit suivre tous ces différents segments et leurs tailles, ce qu’il utilise descripteurs. Les descripteurs de segment disponibles pour tout le monde sont conservés dans le Table des descripteurs globaux ou gdt pour faire court. Chaque processus a un certain nombre de registres qui pointent vers les entrées dans le GDT; Ce sont les segments auxquels le processus peut accéder (il y a aussi local tables de descripteur, et tout intera
Points clés:
- Linux implémente la sécurité pour éviter les interférences entre les applications et les utilisateurs.
- Le matériel applique les règles concernant l’accès à la mémoire et aux ressources.
- L’interface d’appel système agit comme une passerelle pour les applications pour accéder aux ressources système.
- Les niveaux de privilèges déterminent l’accès à certaines instructions et opérations.
- Le modèle de protection 386 a quatre anneaux, mais la plupart des systèmes d’exploitation n’utilisent que deux.
- Chaque code d’application a un descripteur de code qui définit son niveau de privilège.
- Les applications ne peuvent augmenter leur niveau de privilège que par des appels spécifiques, tels que les appels système.
- Le noyau agit comme un gardien pour assurer la sécurité des appels système.
- Les appels du système rapide visent à réduire les frais généraux de la commutation de contexte.
- Le schéma de segmentation x86 étend l’espace d’adressage du processeur.
Des questions:
- Quel est le but de la mise en œuvre de la sécurité dans un système d’exploitation?
- Comment le matériel applique-t-il les règles d’accès à la mémoire?
- Quel rôle joue l’interface d’appel système dans l’accès aux ressources système?
- Comment les niveaux de privilèges sont-ils utilisés dans la protection matérielle?
- Combien d’anneaux le modèle de protection 386 a-t-il?
- Qu’est-ce qu’un descripteur de code?
- Comment les applications peuvent-elles augmenter leur niveau de privilège?
- Quel est le rôle du noyau en tant que gardien?
- Quel est l’objectif des appels système rapides?
- Pourquoi la segmentation a-t-elle été introduite dans le processeur x86?
- Comment fonctionne le schéma de segmentation x86?
- Quels sont les descripteurs de segment et où sont-ils stockés?
Bagues de protection
Cela permet une hiérarchie entière de segments et d’autorisations entre eux. Vous avez peut-être remarqué qu’un appel transversal ressemble exactement à un appel système. Si vous avez déjà regardé l’assemblage Linux x86, la façon standard de passer un appel système est int 0x80, ce qui augmente l’interruption 0x80 . Une interruption arrête le processeur et se rend à une porte d’interruption, qui fonctionne ensuite de la même manière qu’une porte d’appel – il modifie le niveau de privilège et vous fait rebondir dans une autre zone de code .
Linux utilise-t-il des anneaux de protection?
Nous avons mentionné comment l’une des tâches majeures du système d’exploitation est de mettre en œuvre la sécurité; c’est de ne pas permettre à une application ou à un utilisateur d’interférer avec tout autre qui s’exécute dans le système. Cela signifie que les applications ne devraient pas être en mesure de se remplacer la mémoire ou les fichiers de chacun, et d’accès uniquement aux ressources système comme dicté par la politique système.
Cependant, lorsqu’une application est en cours d’exécution, il a une utilisation exclusive du processeur. Nous voyons comment cela fonctionne lorsque nous examinons les processus dans le chapitre suivant. S’assurer que l’application accède uniquement à la mémoire qu’il possède est implémentée par le système de mémoire virtuelle, que nous examinons dans le chapitre après. Le point essentiel est que le matériel est responsable de l’application de ces règles.
L’interface d’appel système que nous avons examiné est la passerelle de l’application pour accéder aux ressources système. En forçant l’application à demander des ressources via un appel système dans le noyau, le noyau peut appliquer des règles sur le type d’accès qui peut être fourni. Par exemple, lorsqu’une application passe un appel système ouvert () pour ouvrir un fichier sur disque, il vérifiera les autorisations de l’utilisateur par rapport aux autorisations de fichier et autorisera ou refusera l’accès.
4 . 1 . 1 niveaux de privilège
La protection matérielle peut généralement être considérée comme un ensemble d’anneaux concentriques autour d’un ensemble de fonctionnalités d’opérations.
Privilèges sur x86
Figure 4 . 1 . 1 . 1 anneaux
Dans l’intérieur, la plupart des anneaux sont les instructions les plus protégées; Ceux que seul le noyau devrait être autorisé à appeler. Par exemple, l’instruction HLT pour arrêter le processeur ne devrait pas être autorisée à être exécutée par une application utilisateur, car elle empêcherait l’ensemble de l’ordinateur de fonctionner. Cependant, le noyau doit être en mesure d’appeler cette instruction lorsque l’ordinateur est légitimement fermé. 1
Chaque anneau intérieur peut accéder à toutes les instructions protégées par un autre anneau de sortie, mais pas tout protégé par un autre anneau. Toutes les architectures n’ont pas plusieurs niveaux d’anneaux comme ci-dessus, mais la plupart fourniront soit au moins un niveau “noyau” et “utilisateur”.
4 . 1 . 1 . 1 386 Modèle de protection
Le modèle de protection 386 dispose de quatre anneaux, bien que la plupart des systèmes d’exploitation (tels que Linux et Windows) n’utilisent que deux des anneaux pour maintenir la compatibilité avec d’autres architectures qui permettent désormais autant de niveaux de protection discrètes.
386 maintient les privilèges en faisant que chaque morceau de code d’application en cours d’exécution dans le système a un petit descripteur, appelé un descripteur de code, qui décrit, entre autres, son niveau de privilège. Lors de l’exécution du code d’application, un saut dans un autre code en dehors de la région décrite par son descripteur de code, le niveau de privilège de la cible est vérifié. S’il est plus élevé que le code en cours d’exécution, le saut est refondu par le matériel (et l’application se bloquera).
4 . 1 . 1 . 2 Privilège d’élevage
Les applications ne peuvent augmenter leur niveau de privilège que par des appels spécifiques qui le permettent, comme l’instruction pour implémenter un appel système. Ceux-ci sont généralement appelés un porte d’appel Parce qu’ils fonctionnent comme une porte physique; une petite entrée à travers un mur autrement impénétrable. Lorsque cette instruction est appelée, nous avons vu comment le matériel arrête complètement l’application en cours d’exécution et le contrôle des mains sur le noyau. Le noyau doit agir comme un gardien; S’assurer que rien de méchant ne passe par la porte. Cela signifie qu’il doit vérifier attentivement les arguments d’appel du système pour s’assurer qu’il ne sera pas dupe de faire quoi que ce soit qu’il ne devrait pas (si cela peut être, c’est un bogue de sécurité). Alors que le noyau fonctionne dans l’anneau le plus intérieur, il a des autorisations pour faire toute opération qu’elle souhaite; une fois terminé, il renverra le contrôle de l’application qui s’exécutera à nouveau avec son niveau de privilège inférieur.
4 . 1 . 1 . 3 appels système rapides
Un problème avec les pièges comme décrit ci-dessus est qu’ils sont très chers pour que le processeur puisse mettre en œuvre. Il y a beaucoup d’état à enregistrer avant que le contexte puisse changer. Les processeurs modernes ont réalisé ces frais généraux et s’efforcent de le réduire.
Pour comprendre le mécanisme d’appel décrit ci-dessus, il faut enquêter sur le schéma de segmentation ingénieux mais compliqué utilisé par le processeur. La raison initiale de la segmentation était de pouvoir utiliser plus que les 16 bits disponibles dans un registre pour une adresse, comme illustré dans la figure 4 . 1 . 1 . 3 . 1, x86 Segmentation adressant .
Segmentation élargissant l’espace d’adressage d’un processeur en le divisant en morceaux. Le processeur conserve des registres de segment spéciaux, et les adresses sont spécifiées par un registre de segment et une combinaison de décalage. La valeur du registre du segment est ajoutée à la partie de décalage pour trouver une adresse finale.
Figure 4 . 1 . 1 . 3 . 1 x86 Segmentation adressant
Lorsque x86 est passé à des registres 32 bits, le schéma de segmentation est resté mais dans un format différent. Plutôt que de tailles de segments fixes, les segments peuvent être de toute taille. Cela signifie que le processeur doit suivre tous ces différents segments et leurs tailles, ce qu’il utilise descripteurs. Les descripteurs de segment disponibles pour tout le monde sont conservés dans le Table des descripteurs globaux ou gdt pour faire court. Chaque processus a un certain nombre de registres qui pointent vers les entrées dans le GDT; Ce sont les segments auxquels le processus peut accéder (il y a aussi local tables descripteurs, et tout interagit avec les segments d’état des tâches, mais ce n’est pas important maintenant). La situation globale est illustrée à la figure 4 . 1 . 1 . 3 . 2, x86 segments .
x86 segments en action. Remarquez comment un «appel lointain» passe via une porte d’appel qui redirige vers un segment de code fonctionnant à un niveau annuel inférieur. La seule façon de modifier le sélecteur de segment de code, implicitement utilisé pour toutes les adresses de code, est via le mécanisme d’appel. Ainsi, le mécanisme d’appel garantit que pour choisir un nouveau descripteur de segment, et donc éventuellement modifier les niveaux de protection, vous devez passer via un point d’entrée connu.
Figure 4 . 1 . 1 . 3 . 2 segments x86
Étant donné que le système d’exploitation affecte les registres du segment dans le cadre de l’état de processus, le matériel de processeur sait quels segments de mémoire le processus en cours d’exécution peut accéder et appliquer protection Pour s’assurer que le processus ne touche rien, il n’est pas censé. S’il sort des limites, vous recevez un défaut de segmentation, que la plupart des programmeurs connaissent.
L’image devient plus intéressante lorsque le code exécutif doit faire des appels dans le code qui réside dans un autre segment. Comme discuté dans la section 4 . 1 . 1 . 1, 386 Modèle de protection, x86 fait cela avec anneaux, Là où l’anneau 0 est la plus haute autorisation, l’anneau 3 est le plus bas, et les anneaux intérieurs peuvent accéder aux anneaux extérieurs mais pas vice-versa.
Comme discuté dans la section 4 . 1 . 1 . 2, augmentant le privilège, lorsque le code Ring 3 veut sauter dans le code Ring 0, il modifie essentiellement son sélecteur de segment de code pour pointer vers un segment différent. Pour ce faire, il doit utiliser un spécial attendard instruction quel matériel garantit passe par la porte d’appel. Il n’y a aucun autre moyen pour le processus en cours d’exécution de choisir un nouveau descripteur de segment de code, et donc le processeur commencera à exécuter du code au décalage connu dans le segment Ring 0, qui est responsable du maintien de l’intégrité (E.g. ne pas lire le code arbitraire et peut-être malveillant et l’exécuter. Bien sûr, les attaquants néfastes chercheront toujours des moyens de faire en sorte que votre code fasse ce que vous n’aviez pas l’intention de!).
Cela permet une hiérarchie entière de segments et d’autorisations entre eux. Vous avez peut-être remarqué qu’un appel transversal ressemble exactement à un appel système. Si vous avez déjà regardé l’assemblage Linux x86, la façon standard de passer un appel système est int 0x80, ce qui augmente l’interruption 0x80 . Une interruption arrête le processeur et se rend à une porte d’interruption, qui fonctionne ensuite de la même manière qu’une porte d’appel – il modifie le niveau de privilège et vous fait rebondir dans une autre zone de code .
Le problème avec ce schéma est qu’il est lent. Il faut beaucoup d’efforts pour faire toute cette vérification, et de nombreux registres doivent être enregistrés pour accéder au nouveau code. Et sur le chemin du retour, tout doit être restauré à nouveau.
Sur une segmentation du système x86 moderne et le système de ring à quatre niveaux n’est pas utilisé grâce à la mémoire virtuelle, entièrement discutée dans le chapitre 6, mémoire virtuelle . La seule chose qui se produit vraiment avec la commutation de segmentation, ce sont les appels système, qui passent essentiellement du mode 3 (espace utilisateur) au mode 0 et passez au code du gestionnaire d’appel système à l’intérieur du noyau. Ainsi le processeur fournit un supplément Appel système rapide Les instructions appelées sysenter (et sysexit pour récupérer) qui accélèrent l’ensemble du processus sur un appel INT 0x80 en supprimant la nature générale d’un appel lointain – c’est-à-dire la possibilité de passer à n’importe quel segment à n’importe quel niveau annulaire – et restreignant l’appel à la transition unique.
Parce que la nature générale a été remplacée par tant d’informations connues auparavant, l’ensemble du processus peut être accéléré, et donc nous avons un susmentionné Appel système rapide. L’autre chose à noter est que l’état n’est pas conservé lorsque le noyau prend le contrôle. Le noyau doit faire attention à ne pas détruire l’état, mais cela signifie également qu’il est gratuit de sauver le moins d’état que nécessaire pour faire le travail, donc peut être beaucoup plus efficace à ce sujet. Il s’agit d’une philosophie très RISC, et illustre comment la ligne se brouille entre les processeurs RISC et CISC.
Pour plus d’informations sur la façon dont cela est mis en œuvre dans le noyau Linux, voir la section 8 . 1 . 1, bibliothèque du noyau .
4 . 2 autres façons de communiquer avec le noyau
4 . 2 . 1 ioctl
4 . 3 systèmes de fichiers
À propos de Proc, Sysfs, Debugfs, etc
Bagues de protection

Anneau 0 est le noyau mode. Anneau 3 est le utilisateur mode. Les autres anneaux ne sont généralement pas utilisés. Virtualbox charge le noyau de la machine virtuelle dans Anneau 1.
Mode du noyau vs Exécution du mode utilisateur
En mode noyau, le code d’exécution a un accès complet et illimité au matériel sous-jacent. Il peut exécuter n’importe quelle instruction CPU et référence à n’importe quelle adresse mémoire. En mode utilisateur, le code d’exécution n’a pas la possibilité d’accéder directement à la mémoire du matériel ou de la mémoire de référence. Le code exécuté en mode utilisateur doit déléguer aux API système pour accéder au matériel ou à la mémoire.
Ces deux modes ne sont pas de simples étiquettes; Ils sont appliqués par le matériel CPU. Si l’exécution de code en mode utilisateur tente de faire quelque chose en dehors de son champ. Au lieu que tout votre système s’écrase, seulement cette application particulière s’écrase. C’est la valeur du mode utilisateur.
Résultats correspondant “”
Aucun résultat correspondant “”
Introduction à l’architecture Core Linux: anneaux de protection

Ceci est notre prochain article sur Core Linux Architecture, dans l’article précédent, nous avons appris sur différents modes de processeur comme les privilèges que le code est autorisé à exécuter. Nous avons donc examiné le mode du noyau et le mode utilisateur et les anneaux de protection essentiellement que nous allons chercher aujourd’hui dans le diagramme suivant. Nous pouvons voir les différentes anneaux de protection.
Alors laisse’S allez de l’avant et commencez
Anneaux de protection en x86:
Laisser’s Discutez d’abord de ce qu’est X86? Et pourquoi en avons-nous besoin?
x86 est une architecture de processeur la plus populaire pour les ordinateurs de bureau et quelque chose lorsque vous regardez les smartphones, vous pouvez voir ces processeurs I.e. Architecture de processeur la plus populaire pour les appareils mobiles car il est plus efficace avec son utilisation de la batterie. Mais comme les ordinateurs de bureau Don’T a vraiment besoin qu’ils aient un peu de différence. Une chose que vous pouvez voir le X dans x86 essentiellement’est juste en disant un nombre avec 86 à la fin je.e. x86 Donc, chaque fois que vous pouvez voir une famille de processeurs, vous en verrez de nombreuses différentes, mais elles se termineront toujours en 86.

Nous allons donc plus profondément dans les anneaux de protection. Nous pouvons considérer les anneaux de protection comme une représentation graphique des niveaux de privilèges du processeur dont nous avons discuté plus tôt. Dans les articles suivants, nous allons aller profondément dans l’architecture du processeur et le fonctionnement des anneaux de protection? c’est comme aller à un niveau bas avec.
Nous savions déjà que CPU’s “Mode de noyau” qui équivaut à “Anneau 0” dans le diagramme et le processeur’s “Mode utilisateur” doit faire face “Anneau 3”. Ici, vous devez penser à l’anneau 1 et 2. Essentiellement dans un système d’exploitation moderne’s y compris Linux utilise uniquement l’anneau 0 et l’anneau 3 en architectures x86, en raison de la façon dont quelque chose appelé un “Table de page” est implémenté.
C’est comme sûr vite et il n’y a personne qui’s c’est. C’est pourquoi nous utilisons la bague 0 et l’anneau 3.
La table de page est un fichier de mappage de mémoire utilisé par des systèmes de mémoire virtuelle dans un système informatique. Même si les architectures modernes peuvent avoir x86 qui peuvent avoir tous ces anneaux. Dans certains anneaux d’environnement de virtualisation, 1 est réellement utilisé. Ce’s en fait une boîte virtuelle ou une machine virtuelle. Met la machine virtuelle’Le code du noyau S en réalité dans l’anneau 1 et le code du noyau réel de la machine soulignée est dans l’anneau 0.
Laisser’S Allez de l’avant et voyez ce que nous savions déjà que c’est – si tous les processus commencent dans Ring 3 comme nous l’avons déjà parlé, comment exécutent-ils les privilèges de l’anneau 0? Parce que le noyau qui traite de l’interface utilisateur du système d’exploitation souligné ou d’application ou de processus, nous devons parfois regarder les modes du système de fichiers ou les choses d’entrée. Ce sont les anneaux qui sont essentiellement limités à des privilèges de sonnerie 0 ou un type de privilèges de noyau.
Alors comment ça se passe? Comme nous connaissons les opérations d’entrée-sortie, la manipulation du système de fichiers, etc. Ce’s quelque chose appelé l’interface d’appel système et que’est vraiment un autre intermédiaire entre l’espace utilisateur qui sont les éléments qui s’exécutent dans l’anneau 3 et l’espace du noyau s’exécuter dans l’anneau 0.
Ainsi, les processus des espaces utilisateur peuvent être essentiellement utilisés. Cette interface, it’S sorte qu’API du noyau pour que le noyau invoque certaines de ses fonctions elle-même. Alors laisse’S Vérifiez ce qu’est un appel système.
Appel système: il s’agit d’une demande de noyau par un processus utilisateur pour effectuer une action privilégiée I.e. Une action du noyau.
Interruptions: c’est un signal émis au processeur qui dit ” Il y a un événement qui a besoin de votre attention immédiate”.
Que fait une interruption? Comment est-ce utile? Ils peuvent initier un appel système comme des interruptions basées sur un logiciel. Le code sur les architectures CPU plus modernes peut donc utiliser un autre processus d’initiation au lieu de l’interruption. Mais le processus principal derrière tout est le même.
Il’s une petite petite nuance mais parfois ces interruptions sont plus intensives, elles doivent être certain. Donc, des systèmes plus modernes en architecture au lieu de ces interruptions peuvent en avoir un autre. Donc l’idée de soulignement est la même.
Laisser’S Aller à un exemple d’appel système:
- Le processus utilisateur a besoin d’une action du noyau, il initie donc une interruption.
- L’interruption ou l’instruction met le CPU dans l’anneau 0 et transmet le contrôle du noyau.
- Le noyau détermine si le processus utilisateur doit être accordé l’appel système en fonction des privilèges.
- S’il est accordé, le noyau exécutera l’appel système.
- Une fois terminé, le noyau initie un changement pour sonner 3.
- Le noyau donne le contrôle du processus utilisateur.
Visite- Hôtes
Vishwajit Kale
Vishwajit Kale a flambé sur la scène du marketing numérique en 2015 et est le stratège de marketing numérique d’Hostdens, une entreprise qui vise à fournir des solutions d’hébergement Web fiables. Vishwajit est expérimenté dans le marketing numérique et de contenu avec SEO. Il aime écrire des blogs de technologie, voyager et lire.
Vishwajit Kale
Vishwajit Kale a flambé sur la scène du marketing numérique en 2015 et est le stratège de marketing numérique d’Hostdens, une entreprise qui vise à fournir des solutions d’hébergement Web fiables. Vishwajit est expérimenté dans le marketing numérique et de contenu avec SEO. Il aime écrire des blogs de technologie, voyager et lire.
Couches d’un système d’exploitation
Les systèmes d’exploitation peuvent être décomposés en un certain nombre de couches discrètes, chacune avec ses propres privilèges. Ce système est connu comme un anneau de protection. Le système d’exploitation gère un ordinateur’S ressources, telles que le temps de traitement sur le CPU et l’accès à la mémoire. Les ordinateurs exécutent souvent plusieurs processus logiciels à la fois, et ceux-ci nécessiteront différents niveaux d’accès aux ressources et au matériel.
Les systèmes d’exploitation peuvent être décomposés en un certain nombre de couches discrètes, chacune avec ses propres privilèges. Ce système est connu comme un bague de protection.
Qu’est-ce qu’un anneau de protection?
Le système d’exploitation gère un ordinateur’S ressources, telles que le temps de traitement sur le CPU et l’accès à la mémoire. Les ordinateurs exécutent souvent plusieurs processus logiciels à la fois, et ceux-ci nécessiteront différents niveaux d’accès aux ressources et au matériel.
Les processus sont exécutés en couches “anneaux”, où chaque anneau a des droits d’accès différents aux ressources. L’anneau central a les privilèges les plus élevés, et chaque couche suivante a diminué l’accès. Une implémentation courante d’un anneau de protection pour les processeurs x86 (un type commun de CPU) a quatre anneaux, numérotés de 0 à 3, comme décrit ci-dessous.
Pourquoi les couches?
Vouloir garder
apprentissage?
Ce contenu est tiré de
Cours en ligne de la Fondation Raspberry Pi,
Comprendre les systèmes informatiques
Voir le cours
Le modèle en couches offre deux avantages principaux. Premièrement, il protège contre les accidents du système. Les erreurs dans les anneaux supérieurs (avec moins d’accès) peuvent généralement être récupérés. En effet, seul Ring 0 a un accès direct à la mémoire et au processeur, donc si un processus exécutant dans l’anneau extérieur se bloque, il peut être redémarré sans perdre de données ou provoquer une erreur dans le CPU. Deuxièmement, il offre une sécurité accrue. Pour exécuter des instructions qui nécessitent plus d’accès aux ressources, le processus doit demander les autorisations du système d’exploitation. Le système d’exploitation peut alors décider d’accorder la demande ou de le refuser. Ce processus de sélection aide à protéger votre système contre un comportement indésirable ou malveillant.
Les parties de l’anneau de protection
Ring 0 (le plus privilégié) et 3 (moins privilégié)
La bague 0 est accessible au noyau, qui est une partie centrale de la plupart des systèmes d’exploitation et peut accéder à tout. On dit que le code en cours d’exécution est en cours d’exécution mode de noyau. Les processus exécutés en mode noyau peuvent affecter l’ensemble du système; Si quelque chose échoue ici, cela entraînera probablement un arrêt du système. Cet anneau a un accès direct au CPU et à la mémoire système, de sorte que toutes les instructions nécessitant l’utilisation de l’un ou l’autre seront exécutées ici.
L’anneau 3, l’anneau le moins privilégié, est accessible aux processus utilisateur qui s’exécutent mode utilisateur. C’est là que la plupart des applications exécutées sur votre ordinateur résideront. Cet anneau n’a aucun accès direct au processeur ou à la mémoire, et doit donc transmettre toutes les instructions impliquant celles-ci pour sonner 0.
Anneaux 1 et 2
Les anneaux 1 et 2 ont des privilèges spéciaux qui sonnent 3 (mode utilisateur). L’anneau 1 est utilisé pour interagir avec et contrôler le matériel connecté à votre ordinateur. Jouer une chanson à travers des haut-parleurs ou des écouteurs, ou afficher une vidéo sur votre moniteur, des exemples d’instructions qui devraient fonctionner dans cette bague. Le ring 2 est utilisé pour les instructions qui doivent interagir avec le stockage du système, le chargement ou l’enregistrement des fichiers. Ces sortes d’autorisations sont appelées saisir et sortir, car ils impliquent de déplacer des données dans ou hors de la mémoire de travail (RAM). Le chargement d’un document Word à partir du stockage, par exemple, serait dans l’anneau 2. Affichage et modification Le document tomberait dans l’anneau 3, la couche d’application.
Discussion
- Pensez à un processus qui pourrait fonctionner sur votre ordinateur, comme un programme de calculatrice ou jouer à un jeu. Quel type d’instructions serait impliqué et quelles anneaux utiliseraient-ils?
- Que pensez-vous se passer si tout le code fonctionnait dans l’anneau 0?
