Appels système et programmes système

Je lisais juste à propos des programmes système (parfois appelés utilitaires système). J’ai alors un doute dans mon esprit: quelle est la différence entre les appels système et les programmes système?

Un appel système ressemble à une fonction appelée depuis un programme. Voici des exemples d’appels système:

  • open() ,
  • close() ,
  • read() ,
  • write() .

Un utilitaire système est un programme complet que vous exécutez depuis une invite shell, depuis un script shell, ou (peut-être déroutant) via la fonction system() de C (qui utilise, entre autres appels système, fork() et execv() ).

Exemples de commandes (utilitaires système):

  • cat
  • ls
  • date
  • make

Ainsi, les appels système sont utilisés dans les programmes; Les utilitaires système sont des programmes.

Les programmes système sont des fichiers exécutables tandis que les appels système sont des routines C qui interagissent avec les fonctionnalités du système d’exploitation et peuvent être compilées dans des programmes système.

Par exemple, ‘ls’ et ‘/ bin / hostname’ sont des programmes système exécutables:

 sh-3.2$ ls -l /bin/hostname -rwxr-xr-x 1 root wheel 14304 Jul 14 11:03 /bin/hostname sh-3.2$ /bin/hostname mycomputer 

Si vous regardez la page de manuel pour le nom d’hôte, vous serez référé à «gethostname (3)», qui est un appel système C et, en fait, au même appel utilisé pour fournir la sortie du programme hostname.

Les appels système sont la liste de la fonction qui sera appelée dans la section entre l’utilisateur et le kernel. Mais le programme système est le programme qui peut fonctionner comme le système: Changer les parameters du système. Accès aux registres Accès à la mémoire Accès au disque et etc.