Quelle est la différence entre Shell, de Noyau et de l'API
Je veux comprendre comment cela s'applique à un système d'exploitation et aussi de ces choses qui ne sont pas en effet les systèmes d'exploitation. Je ne comprends pas la différence entre les trois et leur essence. L'API est les fonctions que l'on peut appeler, mais qu'est-ce que Shell? Si nous avons une API que ce qui est exactement le Noyau du système d'exploitation? Je comprends le système d'exploitation a un Noyau qui ne va pas changer et cela ne se fondamentales de Travail typique d'un OS alors qu'on peut avoir différentes interfaces utilisateur comme interface graphique ou en ligne de commande avec le même Noyau. Donc, le problème est que je ne sais pas comment ces choses sont différentes. Aaaaaaarhg!
Pouvez les fonctions comme printf et fopen en C d'être appelé appels d'API?
Vous devez vous connecter pour publier un commentaire.
Un shell est un interpréteur de commande, à savoir le programme que soit la commande que vous entrez dans votre émulateur de terminal (mode interactif) ou d'un processus shell scripts (fichiers texte contenant des commandes) (mode batch). Au début de l'Unix fois, il a utilisé pour être l'unique moyen pour les utilisateurs d'interagir avec leurs machines. Aujourd'hui, les environnements graphiques sont le remplacement de la coque pour la plupart des utilisateurs occasionnels.
Un noyau est un faible niveau programme pour l'interfaçage avec le matériel (CPU, RAM, disques, réseau, ...) sur lequel les applications sont en cours d'exécution. Il est le plus bas niveau de programme en cours d'exécution sur les ordinateurs bien qu'avec la virtualisation, vous pouvez avoir plusieurs noyaux en cours d'exécution sur le dessus des machines virtuelles qui se exécutent sur un autre système d'exploitation.
Un API est un terme générique définissant l'interface, les développeurs ont à utiliser lors de l'écriture de code à l'aide de bibliothèques et d'un langage de programmation. Les grains ont pas d'Api qu'ils ne sont pas les bibliothèques. Ils ont un ABI, qui, au-delà d'autres choses, de définir comment les applications d'interagir avec eux via des appels système. Unix demande aux développeurs d'utiliser la bibliothèque standard C (par exemple:
libc
,glibc
) pour construire ABI conforme binaires.printf(3)
etfopen(3)
ne sont pas des wrappers pour des appels système, mais(g)libc
des installations standard. Le faible niveau des appels système, ils finissent par utiliser sontwrite(2)
etopen(2)
et, éventuellement, d'autres commebrk
,mmap
. Le nombre entre parenthèses est une convention à dire dans ce manuel de la commande est d'être trouvé.Le premier volume des pages de manuel Unix contient les shell commandes.
Le second contient l'appel système wrappers comme
write
etopen
. Ils constituent l'interface de la noyau.Le troisième contient la bibliothèque standard (y compris la Unix standard API) fonctions (à l'exclusion des appels système) comme
fopen
etprintf
. Ce sont pas wrappers à certains appels système, mais juste le code à l'aide des appels système, si nécessaire.printf
ont beaucoup de code spécifique et de partager des tables, des tampons et contexte les unes avec les autres. Pour cette raison, je ne les appelons pas des wrappers pour les appels-système, en particulier comme, par exemple, vous pouvez appelerprintf
sans appel système impliqué. Ils ont juste arrivera finalement l'utilisation des appels système, mais cela est vrai pour chaque fonction de la bibliothèque. Le lien que vous avez posté comme référence sur lequel je suis totalement d'accord ne veut pas dire que tout ce qui de contredire ce point.Le Shell est le moyen de communiquer avec l'OS et le noyau par ligne de commande. Le Shell ne ce en appelant l'API.
Le noyau est en effet le cœur de l'OS et n'gestion de la mémoire, la planification des tâches, les poignées avec les systèmes de fichiers, des e/S de manutention,...
Toutes les choses que le noyau ne, peut en quelque sorte être invoced par l'API de l'OS.
printf et fopen sont roulés autour des appels système (API) fournie par le système d'exploitation et le noyau
Shell: C'est comme une interface de ligne de commande de votre système d'exploitation. Des commandes telles que ls, ps, kill, et beaucoup plus peut être utilisé pour demander à compléter l'opération spécifique à l'OS. C'est comme "cmd" sur windows.
Noyau: C'est le code principal de tout système d'exploitation. Toute demande vous donner de la coque ou via l'interface graphique (comme l'allocation de la mémoire, de l'ouverture d'un fichier, etc) sont enfin réunies par le Noyau.
Et oui, les appels que vous avez mentionnés sont considérés comme des appels de l'API. La demande pour ces appels sont également gérées par le Noyau. Veuillez consulter le lien ci-dessous pour trouver les appels d'API unix.
http://www.mkssoftware.com/docs/api_index.asp
C'est le tableau d'ensemble dans un système d'exploitation unix:
Applications => (coque+routines de la bibliothèque) => appels système => noyau
regarder la finale de la demande du gestionnaire est le Noyau.
Thx!
Prenons un exemple, Vous regardez le film est sur shell et effectivement processus fait plus de matériel est le noyau. shell est d'environ travail comme celui d'os pour l'utilisateur et l'interface du logiciel et noyau travail comme celui d'os pour les logiciels et le matériel.