L'interface fournie par le système d'exploitation au programme d'application est "l'appel système". L'interface du système d'exploitation comprend principalement l'interface de commande et l'interface de programme. L'interface de programme, également appelée appel système, est composée d'un ensemble de commandes d'appel système et fournit un ensemble de commandes d'appel système que les programmes utilisateur peuvent utiliser. L'appel système est l'interface entre le programme d'application et le système ; il transmet la requête du programme d'application au noyau, appelle la fonction du noyau correspondante pour terminer le traitement requis et renvoie les résultats du traitement au programme d'application.
L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.
L'interface fournie par le système d'exploitation au programme d'application est "l'appel système".
L'interface du système d'exploitation comprend principalement l'interface de commande et l'interface du programme, parmi lesquelles l'interface du programme est également appelée appel système.
L'interface du programme (appel système) se compose d'un ensemble de commandes d'appel système et fournit un ensemble de commandes d'appel système à utiliser par les programmes utilisateur.
Appels système dans le système d'exploitation
L'ensemble de tous les appels système fournis par l'implémentation du système d'exploitation est l'interface de programme ou interface de programmation d'application (API). C'est l'interface entre le programme d'application et le système.
La fonction principale du système d'exploitation est de gérer les ressources matérielles et de fournir un bon environnement aux développeurs d'applications pour rendre les applications plus compatibles. Pour atteindre cet objectif, le noyau fournit une série de fonctions multi-noyaux avec des fonctions prédéterminées. l'utilisateur via un ensemble d'interfaces appelées appels système. L'appel système transmet la demande d'application au noyau, appelle la fonction du noyau correspondante pour terminer le traitement requis et renvoie le résultat du traitement au programme d'application.
Les systèmes d'exploitation modernes ont généralement des capacités multitâches, qui sont généralement mises en œuvre par des processus. Étant donné que le système d’exploitation bascule rapidement l’exécution entre chaque processus, tout semblera simultané. Dans le même temps, cela entraîne également de nombreux problèmes de sécurité. Par exemple, un processus peut facilement modifier les données dans l'espace mémoire du processus pour provoquer une anomalie dans un autre processus ou atteindre certains objectifs. Par conséquent, le système d'exploitation doit garantir que chaque processus peut le faire. exécuter en toute sécurité. La solution à ce problème consiste à ajouter des registres d'adresses de base et des registres de limites au processeur. Le contenu de ces deux registres utilise du matériel pour limiter l'adresse de la mémoire accédée par l'instruction d'accès mémoire. De cette manière, lorsque le système change de processus, le contenu de ces deux registres peut être écrit dans la plage d'adresses attribuée au processus, évitant ainsi les logiciels malveillants.
Afin d'empêcher les programmes utilisateur de modifier le contenu du registre de base et du registre limite pour accéder à d'autres espaces mémoire, ces deux registres doivent être accessibles via des instructions spéciales. Habituellement, le processeur a deux modes : "mode utilisateur" et "mode noyau". Un bit de balise est utilisé pour identifier le mode dans lequel il se trouve actuellement. Certaines instructions telles que la modification du contenu du registre d'adresses de base ne peuvent être exécutées qu'en mode noyau. En mode utilisateur, le matériel ignorera directement cette instruction et continuera à exécuter la suivante.
De même, pour des raisons de sécurité, certaines instructions d'opération d'E/S sont limitées à l'exécution uniquement en mode noyau, il est donc nécessaire que le système d'exploitation fournisse des interfaces pour fournir aux applications des interfaces telles que la lecture de données à partir d'un certain emplacement sur le disque. Ces interfaces C'est ce qu'on appelle un appel système.
Lorsque le système d'exploitation reçoit la demande d'appel système, le processeur entre en mode noyau pour exécuter des instructions telles que des opérations d'E/S et modifier le contenu du registre d'adresses de base. Après avoir traité le contenu de l'appel système, le système d'exploitation. laissera le processeur Le processeur revient en mode utilisateur pour exécuter le code utilisateur.
La différence entre les appels système et les appels ordinaires
Un appel système est essentiellement un appel de procédure, mais il s'agit d'un appel de procédure spécial et est évidemment différent des appels de procédure dans les programmes utilisateur généraux.
L'état de fonctionnement est différent
L'état de fonctionnement est différent. Le processus appelant et le processus appelé d'un appel système s'exécutent dans des états différents, tandis que les appels de procédure ordinaires s'exécutent généralement dans le même état.
La méthode d'appel est différente
La méthode d'appel est différente. Les appels système doivent d’abord entrer dans le cœur du système via le mécanisme d’interruption logicielle avant de pouvoir être dirigés vers le gestionnaire de commandes correspondant. Les appels de procédure ordinaire peuvent être directement transférés du processus appelant au processus appelé.
Retour à la question
Retour à la question. Dans un système qui utilise la planification préemptive, lorsque l'appel système revient, l'analyse de la planification doit être réanalysée pour savoir si une tâche de priorité plus élevée est prête. Les appels de procédure ordinaire retournent directement au processus appelant pour poursuivre l'exécution.
Pour plus de connaissances connexes, veuillez visiter la rubrique FAQ !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!