Appel système
Dans le calculant , un appel système de est le mécanisme employé par un programme d'application pour demander le service du du système d'exploitation.
Fond
En plus de traiter des données dans son propre espace mémoire, un programme d'application pourrait vouloir employer des données et des services fournis par le système. Les exemples du système fournissant un service à une application incluent using n'importe quel dispositif câblé sur le système (carte graphique, carte de réseau, carte saine) et communication entre les applications.
Le fait que l'utilisation inexacte du système peut facilement causer un arrêt du système rend nécessaire un certain niveau de commande. La conception de l'architecture de microprocesseur sur pratiquement tous les systèmes modernes (excepté les systèmes inclus) offre une série de niveaux de privilège de ' -- le niveau de privilège (du bas) dans lequel les applications normales exécutent des limites l'espace d'adressage du programme de sorte qu'il ne puisse pas accéder ou modifier à d'autres applications courantes ni au du système d'exploitation lui-même. Il empêche également l'application d'utiliser tous les dispositifs de système (par exemple l'amortisseur de vue de ou dispositifs de réseau ). Mais évidemment n'importe quelle application normale a besoin de ces capacités ; ainsi elle peut appeler le du système d'exploitation. L'OS s'exécute au de plus haut niveau du privilège et permet aux applications de demander des services par l'intermédiaire des appels système, qui sont souvent mis en application par les interruptions . Si permis, le système écrit un niveau plus élevé de privilège, exécute un ensemble spécifique d'instructions que le programme l'interruption n'a aucune commande directe plus de, alors renvoie la commande à l'ancien écoulement de l'exécution. Ce concept sert également de manière de mettre en application la sécurité .
Avec le développement des modes séparés d'opération avec des niveaux de variation de privilège, un mécanisme était nécessaire pour la commande de transfert sans risque de peu de modes privilégiés à des modes privilégiés plus élevés. Moins de code privilégié ne pourrait simplement commande de transfert à un code plus privilégié à tout point arbitraire et avec aucun état de processeur arbitraire. Pour lui permettre de faire ainsi lui permettrait de casser la sécurité. Par exemple, moins le code privilégié pourrait faire exécuter le code privilégié plus élevé dans l'ordre faux, ou lui fournir une mauvaise pile .
La bibliothèque comme intermédiaire
Généralement, les logiciels d'exploitation fournissent une bibliothèque qui se repose entre les programmes normaux et le reste du du système d'exploitation, habituellement la bibliothèque de C (libc), comme le Glibc et le temps d'exécution de Microsoft C de . Cette bibliothèque manipule les détails de bas niveau de passer l'information au grain et du changement au mode de surveillant, aussi bien que la n'importe quelles informatique et préparation qui n'a pas besoin d'être faite en mode privilégié. Dans le meilleur des cas, ceci réduit l'accouplement entre le du système d'exploitation et l'application, et augmente la portabilité .
Sur le Exokernel basé les systèmes, la bibliothèque est particulièrement important comme intermédiaire. Sur des exokernels, les applications d'utilisateur de bouclier d'OSes du grain très de bas niveau api, et fournissent les abstractions et la gestion de la ressource .
Exemples et outils
Sur le Unix - basé et le POSIX - les systèmes basés, des appels système populaires sont le ouvert , de de ont lu , de écrivent , fin de de , attente de de , exec de de , fourchette de de , sortie de de , et mise à mort de de . Plusieurs de logiciels d'exploitation d'aujourd'hui ont des centaines d'appels système. Par exemple, le Linux a 319 appels système différents. Le FreeBSD a à peu près identique (presque 330).
Les outils tels que le Strace et la botte rapportent les appels système faits par un processus courant.
Dans la plate-forme de Java , il n'y a aucun besoin de la machine virtuelle de Java de de s'interrompre pour rendre l'appel système plus sûr. L'effet est atteint en fournissant un de plus haut niveau de l'isolement par la renonciation des indicateurs de mémoire arbitraires, qui permet le placement sûr de tout le code dans un espace mémoire. La machine virtuelle de Java est indistinguible de son environnement d'exécution de soutien de Java de de bibliothèque dans cette plate-forme où l'api se compose d'un ensemble d'objets système, appelant des méthodes dont des appels système sont faits, et aucune instruction privilégiée n'est nécessaire. Une approche semblable est employée par Microsoft dans le son. OS net de la singularité de plate-forme et de .
Réalisations typiques
La mise en oeuvre des appels système exige un branchement qui implique une certaine sorte de dispositif de détail d'architecture. Une manière typique de mettre en application ceci est d'employer une interruption de logiciel ou le piège . La commande de transfert d'interruptions au grain ainsi au logiciel doit simplement installer une certaine inscription au nombre d'appel système qu'ils veulent et exécutent l'interruption de logiciel.
Pour beaucoup de processeurs du RISC c'est la seule exécution faisable, mais les architectures de CISC telles que le X86 soutiennent des techniques additionnelles. Un exemple est SYSCALL/SYSRET qui est très semblable à SYSENTER/SYSEXIT (les deux mécanismes ont été créés par Intel et AMD indépendamment, mais font fondamentalement la même chose). Ce sont " ; fast" ; instructions de branchement qui sont conçues rapidement à la commande de transfert au grain pour un appel système sans frais généraux d'une interruption.5 de a commencé à employer ceci sur le X86 , là où disponible ; autrefois il a employé l'instruction d'international, où le nombre d'appel système a été placé dans le registre d'EAX avant que l'interruption 0x80 de ait été exécutée.
Un mécanisme plus ancien du X86 s'appelle une porte d'appel de et est une manière pour qu'un programme appelle littéralement une fonction du noyau directement using un mécanisme sûr de branchement que le grain a installé à l'avance. Cette approche a été inpopulaire, vraisemblablement due à la condition loin d'un appel qui emploie la segmentation du x86 et le manque en résultant de la portabilité il cause, et de l'existence des instructions plus rapides mentionnées ci-dessus.
| Random links: | Histoire de tabouret Albanie | Espèces menacées | Denys Johnson-Davies | Aubourn | Emblème Gaiden du feu | Llamada_de_sistema |