Quelle est la différence entre l'espace noyau et l'espace utilisateur?
Quelle est la différence entre l'espace noyau et l'espace utilisateur? Faire de l'espace du noyau, threads du noyau, le noyau des processus et de la pile du noyau dire la même chose? Aussi, pourquoi avons-nous besoin de cette différenciation?
InformationsquelleAutor kc3 | 2011-05-10
Vous devez vous connecter pour publier un commentaire.
La vraiment simplifié réponse est que le noyau s'exécute dans l'espace noyau et normal de l'exécution des programmes en espace utilisateur. L'espace utilisateur est essentiellement une forme de sable-boxe -- elle restreint les programmes de l'utilisateur de sorte qu'ils peuvent ne plaisante pas avec la mémoire (et autres ressources) appartenant à d'autres programmes ou par le noyau du système d'exploitation. Cela limite (mais n'a généralement pas d'éliminer entièrement) leur capacité à faire des choses mauvaises, comme le fracas de la machine.
Le noyau est le cœur du système d'exploitation. Normalement, il a accès à toute la mémoire et le matériel de la machine (et tout le reste sur la machine). Pour garder la machine soit aussi stable que possible, vous voulez seulement le plus de confiance, bien testé l'exécution de code en mode noyau/kernel espace.
La pile est juste une autre partie de la mémoire, et, naturellement, on distincts à droite le long avec le reste de la mémoire.
La Mémoire à Accès Aléatoire (RAM) peut être logiquement divisé en deux régions distinctes à savoir: - l'espace noyau et l'espace utilisateur.(Le Adresses de la RAM ne sont pas réellement divisé que le Adresses Virtuelles, tout cela mis en œuvre par le MMU)
Le noyau s'exécute dans la partie de mémoire de ce droit. Cette partie de la mémoire ne sont pas accessibles directement par le processus normal de l'utilisateurs, tout comme le noyau peut accéder à toutes les parties de la mémoire. L'accès à certaines partie du noyau, le processus utilisateur d'avoir à utiliser le système prédéfini appels à savoir
open
,read
,write
etc. Aussi, leC
des fonctions de la bibliothèque commeprintf
appel l'appel systèmewrite
à son tour.Le système des appels à agir comme interface entre les processus utilisateur et le noyau des processus. Les droits d'accès sont placés sur l'espace du noyau afin de faire cesser les utilisateurs de déconner avec le noyau, sans le savoir.
Ainsi, lorsqu'un appel système se produit, un logiciel d'interruption est envoyée vers le noyau. L'UC peut la main sur le contrôle temporairement à l'associé gestionnaire d'interruption de la routine. Le noyau du processus qui a été arrêtée par l'interruption reprend après le gestionnaire d'interruption de la routine finit son travail.
L'espace noyau & espace virtuel sont les concepts de mémoire virtuelle....cela ne signifie pas que la Ram(votre mémoire réelle) est divisé en kernel & Utilisateur de l'espace.
Chaque processus est donnée de la mémoire virtuelle qui est divisé en kernel & utilisateur de l'espace.
Dire
"La mémoire d'accès aléatoire (RAM) peut être divisé en deux régions distinctes à savoir: - l'espace noyau et l'espace utilisateur." est faux.
& à l'égard de "l'espace du noyau vs espace utilisateur" chose
Lorsqu'un processus est créé et sa mémoire virtuelle est divisé en espace utilisateur et le noyau et l'espace , où l'utilisateur de l'espace de la région contient des données, code, pile, tas du processus & noyau de l'espace contient des choses telles que la table des pages du processus, structure de données du noyau et noyau de code etc.
Pour exécuter l'espace noyau code, le contrôle doit passer au mode noyau(0x80 à l'aide de logiciels d'interruption pour les appels-système) & de la pile du noyau est essentiellement partagée entre tous les processus en cours d'exécution dans l'espace du noyau.
CPU anneaux sont le plus clairement la distinction
En x86 en mode protégé, le CPU est toujours dans l'un des 4 anneaux. Le noyau Linux utilise uniquement des 0 et 3:
C'est le plus dur et rapide définition de noyau vs userland.
Pourquoi Linux n'utilise pas les anneaux 1 et 2: CPU Privilège Anneaux: Pourquoi les anneaux 1 et 2 ne sont pas utilisés?
Comment est l'actuel anneau déterminé?
Le courant de l'anneau est sélectionné par une combinaison de:
global descriptor table: une table en mémoire de GDT d'entrées, chaque entrée a un champ
Privl
qui code pour l'anneau.La LGDT instruction définit l'adresse de l'actuel descripteur de table.
Voir aussi: http://wiki.osdev.org/Global_Descriptor_Table
les registres de segment CS, DS, etc., qui point à l'index d'une entrée dans la GDT.
Par exemple,
CS = 0
signifie que la première entrée de la GDT est actuellement actif pour l'exécution du code.Ce que chaque anneau peut faire?
La puce du PROCESSEUR est physiquement construit de telle sorte que:
ring 0 ne peut rien faire
anneau 3 ne peut pas exécuter plusieurs instructions et d'écrire à plusieurs registres, notamment:
ne peut pas modifier son propre bague! Sinon, il pourrait se fixer à l'anneau 0 et anneaux serait inutile.
En d'autres termes, ne peut pas modifier le descripteur de segment, qui détermine le courant de l'anneau.
ne peut pas modifier les tables de pages: Comment x86 pagination de travail?
En d'autres termes, ne peut pas modifier le registre CR3, et la pagination de soi, empêche la modification de la page des tables.
Cela empêche un processus de voir la mémoire des autres processus pour la sécurité /facilité de programmation raisons.
ne peut pas s'inscrire gestionnaires d'interruption. Ceux-ci sont configurés par écrit à des emplacements de mémoire, qui est également empêché par la pagination.
Gestionnaires d'exécuter en ring 0, et de casser le modèle de sécurité.
En d'autres termes, ne peut pas utiliser le LGDT et LIDT instructions.
ne peut pas faire de IO instructions comme
in
etout
, et ont donc arbitraire matériel accède.Autrement, par exemple, les autorisations de fichier serait inutile si tout programme peut lire directement à partir du disque.
Plus précisément grâce à Michael Petch: effectivement, il est possible pour le système d'exploitation pour permettre IO instructions sur le ring 3, c'est en fait contrôlé par le Segment d'état de tâche.
Ce n'est pas possible pour l'anneau 3, afin de se donner la permission de le faire si elle n'a pas en premier lieu.
Linux toujours l'autorise pas. Voir aussi: Pourquoi ne pas Linux utiliser le matériel de changement de contexte par le TSS?
Comment les programmes et les systèmes d'exploitation de transition entre les anneaux?
lorsque le CPU est en marche, il commence à exécuter le programme initial en ring 0 (bien gentil, mais c'est une bonne approximation). Vous pouvez penser ce programme initial comme étant le noyau (mais c'est normalement un bootloader qui appelle ensuite le noyau encore dans le ring 0).
lorsqu'un utilisateur veut que le processus de noyau pour faire quelque chose pour elle comme écrire dans un fichier, il utilise une instruction qui génère une interruption comme
int 0x80
ousyscall
signal au noyau. x86-64 Linux de syscall bonjour tout le monde, exemple:compiler et exécuter:
GitHub en amont.
Lorsque cela se produit, la CPU appelle une interruption du gestionnaire de rappel dont le noyau enregistré au moment du démarrage. Voici une béton baremetal exemple qui enregistre un gestionnaire et l'utilise.
Ce gestionnaire s'exécute dans le ring 0, qui décide si le noyau permettra à cette action, l'action, et redémarrez le système de base du programme en ring 3. x86_64
lorsque le
exec
appel système est utilisé (ou lorsque le noyau va commencer à/init
), le noyau prépare les registres et la mémoire de la nouvelle implémentation des processus, puis il saute vers le point d'entrée et les commutateurs de la CPU à l'anneau 3Si le programme tente de faire quelque chose de méchant comme écrire un interdit d'enregistrer ou de l'adresse de mémoire (à cause de la pagination), la CPU appelle également quelques noyau du gestionnaire de rappel dans le ring 0.
Mais depuis que le système de base a été méchant, le noyau peut tuer le processus de ce temps, ou lui donner un avertissement à un signal.
Lors du démarrage du noyau, c'configurations d'une horloge matérielle avec une certaine fréquence fixe, ce qui génère des interruptions périodiquement.
Cette horloge matérielle génère des interruptions qui exécutent le ring 0, et de permettre à l'annexe qui userland processus de réveil.
De cette façon, la programmation peut se produire même si le processus ne font pas d'appels système.
Quel est l'intérêt d'avoir plusieurs anneaux?
Il y a deux principaux avantages de la séparation du noyau et l'espace utilisateur:
Comment jouer un peu avec elle?
J'ai créé un métal nu installation, qui devrait être une bonne façon de manipuler les anneaux directement: https://github.com/cirosantilli/x86-bare-metal-examples
Je n'avais pas la patience de faire un userland exemple malheureusement, mais je l'ai fait aller aussi loin que la pagination de l'installation, de sorte userland devrait être faisable. J'aimerais voir une pull request.
Alternativement, les modules du noyau Linux exécuter en ring 0, de sorte que vous pouvez les utiliser pour essayer opérations privilégiées, par exemple, de lire les registres de contrôle: Comment accéder aux registres de contrôle cr0,cr2,cr3 à partir d'un programme? Obtenir une segmentation fault
Ici est un pratique QEMU + installation de Buildroot de l'essayer sans tuer votre hôte.
La baisse des modules de noyau, c'est que d'autres kthreads sont en cours d'exécution et pourrait interférer avec vos expériences. Mais en théorie, vous pouvez prendre en charge tous les gestionnaires d'interruption avec votre module du noyau et propre au système, qui serait un projet intéressant en fait.
Négatif anneaux
Alors que négatif les anneaux ne sont pas réellement référencé dans la Intel manuelle, il ya effectivement CPU modes qui ont plus de capacités que le ring 0 lui-même, et sont donc un bon choix pour le "négatif de l'anneau" de nom.
Un exemple est l'hyperviseur mode utilisé dans la virtualisation.
Pour plus de détails, voir: https://security.stackexchange.com/questions/129098/what-is-protection-ring-1
BRAS
Dans les BRAS, les anneaux sont appelés Exception Niveaux au lieu de cela, mais l'idée principale reste la même.
Il existe 4 exception niveaux en ARMv8, couramment utilisé comme:
EL0: userland
EL1: noyau ("superviseur" dans les BRAS de la terminologie).
Conclu avec le
svc
instruction (Appel Superviseur), précédemment connu sous leswi
avant unifiée de l'assemblée, qui est l'instruction utilisé pour faire des appels système Linux. Bonjour tout le monde ARMv8 exemple:GitHub en amont.
De la tester avec QEMU sur Ubuntu 16.04:
Ici est un béton baremetal exemple que enregistre un SVC gestionnaire et un SVC appel.
EL2: les hyperviseurs, par exemple Xen.
Conclu avec le
hvc
instruction (Hyperviseur Appel).Un hyperviseur est un OS, ce qu'est un OS est à userland.
Par exemple, Xen permet d'exécuter plusieurs Systèmes d'exploitation tels que Linux ou Windows sur le même système dans le même temps, et il isole les Systèmes d'exploitation à partir de l'un de l'autre pour la sécurité et la facilité de debug, tout comme Linux pour les programmes utilisateurs.
Hyperviseurs sont une partie clé de l'actuelle infrastructure de cloud: ils permettent à plusieurs serveurs pour exécuter sur un seul matériel, en gardant l'utilisation de votre matériel toujours proche de 100% et de gagner beaucoup d'argent.
AWS par exemple utilisé Xen, jusqu'en 2017, lorsque son passage à KVM fait la une des journaux.
EL3: encore un autre niveau. TODO exemple.
Conclu avec le
smc
instruction (Mode Sécurisé Appel)La ARMv8 l'Architecture du Modèle de Référence DDI 0487C.un - Chapitre D1 - AArch64 Niveau du Système Programmeur - Modèle de la Figure D1-1 illustre magnifiquement:
Remarque comment le BRAS, peut-être en raison de l'avantage du recul, a une meilleure convention de nommage pour les niveaux de privilège que x86, sans la nécessité pour les niveaux négatifs: 0 étant le plus bas et 3 plus haut. Des niveaux plus élevés ont tendance à être créé le plus souvent inférieurs.
L'actuelle EL peut être interrogé avec
MRS
instruction: quel est le mode d'exécution/d'exception, etc?BRAS ne nécessite pas d'exception tous les niveaux afin d'être présent pour permettre des implémentations qui n'ont pas besoin de la fonction pour enregistrer surface de la puce. ARMv8 "l'Exception "niveaux", dit:
QEMU par exemple, par défaut EL1, mais EL2 et EL3 peut être activée avec les options de ligne de commande: qemu-system-aarch64 entrer el1 lorsque l'émulation a53 pouvoir en place
Des extraits de Code testé sur Ubuntu 18.10.
L'espace noyau et l'espace utilisateur est la séparation de l'privilégié fonctions du système d'exploitation et l'utilisateur restreint d'applications. La séparation est nécessaire pour empêcher l'utilisateur de demandes de mise à sac de votre ordinateur. Ce serait une mauvaise chose si les anciens de l'utilisateur du programme peut commencer à écrire des données aléatoires sur votre disque dur ou de lire la mémoire d'un autre programme utilisateur de l'espace mémoire.
Programmes de l'espace utilisateur ne peut pas accéder aux ressources système directement, de sorte que l'accès est géré sur le programme du nom par le noyau du système d'exploitation. Les programmes de l'espace utilisateur en général à de telles demandes du système d'exploitation via des appels système.
Threads du noyau, les processus, la pile ne signifie pas la même chose. Ils sont analogues constructions de l'espace du noyau que leurs homologues dans l'espace utilisateur.
Chaque processus a son propre 4 go de mémoire virtuelle qui correspond à la mémoire physique par le biais de tables de pages. La mémoire virtuelle est principalement divisé en deux parties: 3 GO pour l'utilisation du procédé et 1 GO pour l'utilisation du Noyau. La plupart des variables que vous créez se situent dans la première partie de l'adresse de l'espace. Cette partie est appelée espace utilisateur. La dernière partie est où le noyau réside et est commun à tous les processus. Ceci est appelé l'espace Noyau et les plus de cet espace est mappé à partir d'emplacements de mémoire physique où l'image du noyau est chargé au démarrage.
La taille maximale de l'espace dépend de la longueur de l'adresse de s'inscrire sur le CPU.
Sur les systèmes 32 bits registres d'adresse, la taille maximale de l'espace d'adressage est de 232 d'octets, soit 4 GiB.
De même, sur les systèmes 64 bits, 264 octets peuvent être abordés.
Telles que l'adresse de l'espace est appelé de la mémoire virtuelle ou espace d'adressage virtuel. Il n'est pas réellement liés à la physique de la taille de la RAM.
Sur les plates-formes Linux, l'espace d'adressage virtuel est divisé en espace noyau et l'espace utilisateur.
Une architecture spécifique constante appelée tâche de limite de taille de, ou
TASK_SIZE
, les marques de la position où la scission se produit:la plage d'adresses à partir de 0 jusqu'à
TASK_SIZE
-1 est attribué à l'utilisateur de l'espace;le reste de
TASK_SIZE
jusqu'à 232-1 (ou 264-1) est attribuée à l'espace du noyau.Sur un système 32 bits, par exemple, 3 GiB pourrait être occupé pour l'utilisateur de l'espace et de 1 GiB pour l'espace du noyau.
Chaque application/programme dans un Unix comme système d'exploitation est un processus; chacun de ceux-ci a un identificateur unique appelé Identificateur de Processus (ou simplement ID de Processus, c'est à dire PID). Linux fournit deux mécanismes pour la création d'un processus: 1. le
fork()
appel système, ou 2. leexec()
appel.Un thread du noyau est un processus léger et aussi un programme en cours d'exécution.
Un seul processus peut être composée de plusieurs threads partage les mêmes données et de ressources, mais en prenant des chemins différents par le code du programme. Linux fournit un
clone()
appel système pour générer des threads.Exemple utilise des threads du noyau sont: les données de synchronisation de RAM, d'aider le planificateur de distribuer les processus entre les Processeurs, etc.
Brièvement : le Noyau s'exécute dans l'Espace du Noyau, le noyau de l'espace a un accès complet à l'ensemble de la mémoire et des ressources, vous pouvez dire la mémoire diviser en deux parties, une partie du noyau , et une partie pour l'utilisateur propre processus, (espace utilisateur) exécute des programmes normaux, de l'espace utilisateur ne peut pas accéder directement à l'espace du noyau, donc il demande à partir du noyau de l'utilisation des ressources. par syscall (système prédéfini appel dans la glibc)
il y a une déclaration qui simplifient les différents "de l'Espace Utilisateur est Juste un test de charge pour le Noyau " ...
Pour être très clair : architecture de processeur permettre CPU de fonctionner dans les deux mode, en Mode Noyau et le Mode Utilisateur, le Matériel d'instruction permettent de basculer d'un mode à l'autre.
de la mémoire peut être marqué comme étant une partie de l'espace utilisateur ou l'espace du noyau.
Lorsque le PROCESSEUR exécute en Mode Utilisateur, le PROCESSEUR peut accéder uniquement à la mémoire qui est en cours dans l'espace utilisateur, tandis que le processeur tente d'accéder à la mémoire dans l'espace Noyau le résultat est une "exception de matériel", lorsque le PROCESSEUR exécute en mode Noyau, le PROCESSEUR peut accéder directement à la fois l'espace noyau et l'espace utilisateur ...
L'espace du noyau signifie un espace mémoire peut être touché par le noyau. Sur 32 bits linux c'est de 1G(à partir de 0xC0000000 à 0xffffffff comme adresse de mémoire virtuelle).Chaque processus créé par le noyau est également un thread du noyau, Donc pour un processus, il y a deux piles: une pile dans l'espace utilisateur pour ce processus, et l'autre dans l'espace du noyau le noyau de filetage.
de la pile du noyau occupé 2 pages(8k en 32 bits linux), inclure une task_struct(environ 1k) et la réalité de la pile(environ 7k). Ce dernier est utilisé pour stocker des variables automatique ou l'appel de fonction params ou de la fonction de l'adresse de fonctions du noyau. Voici le code(Processeur.h (linux\include\asm-i386)):
__get_libre_pages(GFP_KERNEL,1)) des moyens d'allocation de mémoire que 2^1=2 pages.
Mais la pile du processus, c'est autre chose, son adresse est ci dessus 0xC0000000(32 bits linux), la taille de celui-ci peut être beaucoup plus grand, utilisés pour l'utilisateur de l'espace des appels de fonction.
Voici donc une question pour l'appel système, il est en cours d'exécution dans l'espace noyau, mais a été appelé par le processus en espace utilisateur, comment ça fonctionne? Va linux mis ses params et adresse de fonction dans le noyau de la pile ou de la pile du processus? Linux la solution: tous les appels système sont déclenchées par un logiciel d'interruption INT 0x80.
Défini dans l'entrée.S (linux\arch\i386\noyau), voici quelques lignes pour exemple:
Par Sunil Yadav, sur Quora:
DANS le court espace noyau est la partie de la mémoire où le noyau linux s'exécute (top 1 GO d'espace virtuel dans le cas de linux) et de l'espace utilisateur est la partie de la mémoire où l'utilisateur de l'application s'exécute( en bas à 3 GO de mémoire virtuelle dans le cas de Linux. Si vous voulez savoir plus de la voir le lien donné ci-dessous 🙂
http://learnlinuxconcepts.blogspot.in/2014/02/kernel-space-and-user-space.html
Essayer de donner une explication simplifiée
La Mémoire virtuelle est divisé en espace noyau et l'espace utilisateur.
L'espace du noyau, c'est que la zone de mémoire virtuelle où noyau des processus, et de l'espace utilisateur, c'est que la zone de mémoire virtuelle où les processus utilisateur sera en cours d'exécution.
Cette division est nécessaire pour l'accès à la mémoire protections.
Chaque fois qu'un chargeur de démarrage commence un noyau après le chargement d'un emplacement dans la mémoire RAM, (sur un BRAS de la fonction de contrôleur général), il faut s'assurer que le contrôleur est en mode superviseur, avec FIQ et IRQ est désactivé.
L'Espace noyau et l'Espace Utilisateur sont logiques espaces.
La plupart des processeurs modernes sont conçus pour fonctionner dans les différents mode privilégié. machines x86 peut fonctionner dans les 4 différents modes privilégiés.
Et une machine en particulier l'instruction peut être exécutée quand dans/au-dessus de particulier mode privilégié.
En raison de cette conception, vous donnez un système de protection ou de sable de la boxe de l'environnement d'exécution.
Noyau est un morceau de code qui gère le matériel et fournir le système de l'abstraction. Donc, il doit avoir accès pour tous à l'instruction machine. Et il est plus digne de confiance morceau de logiciel. Donc je doit être exécuté avec le plus haut niveau de privilège. Et Anneau de niveau 0 est le plus mode privilégié. Donc Anneau de Niveau 0 est aussi appelé Mode Noyau.
Utilisateur de l'Application sont un morceau de logiciel qui vient de n'importe quel fournisseur de tiers, et vous ne pouvez pas complètement confiance en eux. Une personne malintentionnée peut écrire un code pour le plantage de votre système si il avait un accès complet à toutes les instructions machine. L'application devrait être fourni avec l'accès à l'ensemble limité d'instructions. Et Anneau de Niveau 3 est le moins mode privilégié. Donc, toutes exécution de votre application dans ce mode. Ainsi que Anneau de Niveau 3 est aussi appelé Mode Utilisateur.
Note: je ne suis pas arriver Anneau de Niveaux 1 et 2. Ils sont fondamentalement les modes intermédiaires privilège. Donc peut-être pilote de périphérique de code sont exécutées avec ce privilège. Autant que je sache, linux utilise uniquement de l'Anneau de Niveau 0 et 3 pour le code du noyau de l'exécution et de l'application de l'utilisateur, respectivement.
De sorte que toute opération qui se produit en mode noyau peut être considéré comme l'espace du noyau.
Et toute opération qui se produit dans le mode utilisateur peut être considéré comme de l'espace utilisateur.
La bonne réponse est: Il n'y a pas une telle chose comme l'espace noyau et l'espace utilisateur. Le jeu d'instruction du processeur a des autorisations spéciales pour définir des choses destructrices comme la racine de la page table à carte, ou de matériel d'accès à la mémoire de l'appareil, etc.
Le code du noyau a le plus haut niveau de privilèges, et le code de l'utilisateur le plus bas. Cela empêche le code de l'utilisateur à partir de la plante le système, modifier d'autres programmes, etc.
Généralement le code du noyau est maintenu sous une autre carte mémoire que le code de l'utilisateur (tout comme les espaces utilisateur sont conservées dans les différents plans de mémoire que les uns et les autres). C'est là que le "noyau de l'espace" et "espace utilisateur" conditions viennent. Mais ce n'est pas une règle dure et rapide. Par exemple, depuis le x86 indirectement exige de ses interrompre/piège gestionnaires afin d'être localisé à tout moment de la partie (ou de certains Systèmes d'exploitation de tous) du noyau doit être mappé dans l'espace utilisateur. Encore une fois, cela ne signifie pas qu'un tel code a des privilèges d'utilisateur.
Pourquoi le noyau/utilisateur diviser nécessaire? Certains concepteurs sont en désaccord que c'est, en fait, nécessaire. Architecture de micro-noyau est basé sur l'idée que les plus privilégiés des sections de code doit être aussi petit que possible, de toutes les opérations effectuées dans d'utilisateur privilégié code. Vous devez étudier pourquoi ce pourrait être une bonne idée, il n'est pas un concept simple (et est célèbre pour avoir à la fois des avantages et des inconvénients).
Mémoire est divisé en deux zones distinctes:
Processus en cours d'exécution en vertu de l'utilisateur de l'espace n'ont accès qu'à une partie limitée de la mémoire, tandis que le noyau a accès à la totalité de la mémoire. Les processus s'exécutant dans l'espace utilisateur n'a pas accès à l'espace du noyau. Espace utilisateur, les processus ne peuvent accéder à une petite partie du noyau par l'intermédiaire d'une interface exposée par le noyau du système d'appels.Si un processus effectue un appel système, un logiciel d'interruption est envoyée vers le noyau, qui envoie alors le approprié gestionnaire d'interruption et continue son travail d'après le gestionnaire a terminé.
Dans Linux il y a deux espace 1er est de l'espace utilisateur et un autre est en kernel space. de l'espace utilisateur sont composés uniquement d'application de l'utilisateur u à exécuter. comme le kernel service, il y a la gestion des processus, gestion de fichiers, traitement de signal, gestion de la mémoire, la gestion des threads, et donc de nombreux services y sont présents. si u exécuter l'application à partir de l'espace utilisateur qui appliction interagir avec seulement kernel services. et que le service est d'interagir avec pilote de périphérique qui est présent entre le matériel et le kernel.
le principal avantage de kernel de l'espace utilisateur et l'espace de séparation est que nous pouvons acchive de sécurité par le virus.bcaz de tous les utilisateurs de l'application présente dans l'espace utilisateur, et le service est présent dans le kernel de l'espace. c'est pourquoi linux n',t affecte par le virus.