procfs
Sur les systemes du type Unix, procfs (process file system, systeme de fichiers processus en anglais) est un pseudo-systeme de fichiers (pseudo car dynamiquement genere au demarrage[1]) utilise pour acceder aux informations du noyau sur les processus. Le systeme de fichiers est souvent monte sur le repertoire /proc.
Puisque /proc n'est pas une arborescence reelle, il ne consomme aucun espace disque mais seulement une quantite limitee de memoire vive. Cela aboutit a un paradoxe apparent : un fichier non vide a une taille affichee de 0 (avec ls).
procfs est supporte sur les systemes suivants:
- Solaris
- BSD
- Linux, qui etend le concept au-dela des processus : entre autres, description detaillee des composants materiels, du reseau...etc
- IBM AIX (qui utilise l'implementation de Linux pour une meilleure compatibilite)
- QNX, (Unix temps reel)
Historique
[modifier | modifier le code]Unix version 8
[modifier | modifier le code]La version de /proc dans la version 8 d'Unix (en) a ete mise en oeuvre par Tom J. Killian, qui presenta un article intitule Processes as Files (processus representes comme des fichiers) a USENIX en . Cette premiere version etait concue pour remplacer l'appel systeme ptrace utilise pour tracer les processus.
SVR4
[modifier | modifier le code]Roger Faulkner et Ron Gomes porterent /proc sur SVR4, et publierent un article appele The Process File System and Process Model in UNIX System V a USENIX en . Cette version de /proc etait utilisee pour assurer l'equivalent de la commande ps, mais les fichiers n'etaient accessibles que par les fonctions read(), write(), et ioctl().
Plan 9
[modifier | modifier le code]Plan 9 implemente aussi un systeme de fichiers de processus, mais va plus loin qu'Unix version 8 : dans la version precedente, il y avait un seul fichier par processus, alors que, dans la nouvelle version, chaque processus a plusieurs fichiers associes (chaque fichier correspondant a une fonction).
4.4 BSD
[modifier | modifier le code]BSD 4.4 utilise un clone du procsys de Plan 9.
Solaris
[modifier | modifier le code]De meme, solaris utilise un clone du procsys de Plan 9.
Linux
[modifier | modifier le code]Le /proc de linux est un derive du procsys de Plan 9.
- Il y a un repertoire pour chaque processus en cours (y compris les processus noyau), le nom de ce processus est le nombre correspondant au PID (Identifiant de processus) (exemple : /proc/1 pour init ou systemd).
/proc/PID/cwd/proc/PID/exe/proc/PID/root/proc/PID/status/proc/PID/task
- Selon le type d'alimentation, il y aura soit un repertoire ACPI (sur les PC recents), soit un repertoire APM (sur les PC anciens)
/proc/buspour decrire les bus informatiques :/proc/cmdline/proc/cpuinfo/proc/crypto/proc/devices/proc/diskstats/proc/filesystems/proc/interrupts(voir Interruption (informatique))/proc/kcore/proc/meminfo/proc/modules/proc/mounts/proc/net/proc/partitions/proc/scsi/proc/slabinfo/proc/swaps/proc/sysvipc/proc/tty/proc/uptime/proc/version/proc/version_signature
- Quelques commandes utilisant /proc :
ps aux: affiche l'etat des processus en cours. Cette commande exploite les informations presentes dans/proc/[pid]/stat.uname -a: affiche des informations sur le systeme : le type de machines, le nom d'hote de la machine sur le reseau, le numero de version du systeme d'exploitation et le nom du systeme d'exploitation. Elle utilise le/proc/versionet le/proc/sys/kernel/versionswapon -s: affiche le resume par peripherique de l'utilisation de la pagination sur disque. Elle utilise/proc/swaps.free: affiche les quantites totales de memoire et de zone de swap libres et utilisees dans le systeme. Utilise/proc/meminfo.dmesg: affiche le tampon des messages du noyau. Elle utilise le/proc/kmsg.uptime: indique depuis quand le systeme fonctionne. Elle utilise/proc/uptime.lspci: affiche les informations sur les bus PCI du systeme ainsi que sur les peripheriques qui y sont connectes. Elle utilise/proc/bus/pci/devices.lsmod: affiche la liste des modules du noyau charges en memoire. Elle emploie/proc/modules.mountaffiche les points de montage. Elle emploie/proc/mounts.sysctl: permet de lire et modifier les parametres du noyau.pwdx(+ le PID) : permet de connaitre le repertoire courant de travail du processus indique par son PID. Elle utilise/proc/[pid]/cwdqui est un lien.pgrep: recherche des processus en fonction de leur nom et d'autres proprietes. Elle utilise/proc/[pid].
/proc/cpuinfo
[modifier | modifier le code]/proc/cpuinfo est un pseudo-fichier contenant les informations sur le(s) processeur(s) du systeme.
Dans le cas d'un systeme x86, il liste chaque coeur de chaque processeur ; il contient les lignes suivantes :
processorcorrespond a l'identifiant utilise par le systeme pour identifier le processeur logiquevendor_idest une chaine de caracteres utilisee pour identifier le fabricant du processeur (soit AuthenticAMD ou GenuineIntel)cpu_familyest un nombre donnant la version majeure du processeur :- Intel - Intel affirme que
cpu_familyn'est qu'une indication sur le processus de fabrication, pas sur la version du processeur[2].
- Intel - Intel affirme que
| CPU family | Model | Stepping | Cache size | Model name | Description |
|---|---|---|---|---|---|
| 3 | 0 | 0 | x | ? | Intel 386 DX |
| 3 | 2 | 0 | x | ? | Intel386 SX / CX / EX |
| 3 | 4 | 0/1 | x | ? | Intel386 SL |
| 4 | 0/1 | x | x | ? | Intel 486 DX |
| 4 | 2 | x | x | ? | Intel486 SX |
| 4 | 3 | x | x | ? | Intel487 / DX2 / DX2 OverDrive |
| 4 | 4 | x | x | ? | Intel486 SL |
| 4 | 5 | x | x | ? | IntelSX2 |
| 4 | 8 | x | x | ? | IntelDX4 / DX4 Overdrive |
| 5 | 1 | x | x | ? | Pentium/Pentium OverDrive processors (60,66) |
| 5 | 2 | x | x | ? | Pentium/Pentium OverDrive processors (75,90,100,120,133,150,166,200) |
| 5 | 3 | x | x | ? | Pentium OverDrive for 486 based systems |
| 5 | 4 | x | x | ? | Pentium processor with MMX technology (166,200) & OverDrive with MMX for Pentium (75,90,100,120,133) |
| 6 | 1 | x | x | ? | Pentium Pro |
| 6 | 3 | x | x | ? | Pentium II, model 3 and Intel Pentium II OverDrive processor |
| 6 | 5 | x | 0 | ? | Intel Celeron model 5 |
| 6 | 5 | x | 1/2Mb | ? | Pentium II Xeon, model 5 |
| 6 | 5 | x | otherwise | ? | Pentium II, model 5, Pentium II Xeon with L2 Cache 512 kB |
| 6 | 6 | x | x | ? | Celeron model 6 |
| 6 | 7 | x | 1/2Mb | ? | Pentium III Xeon, model 7 |
| 6 | 7 | x | otherwise | ? | Pentium III, model 7 or Pentium III Xeon, model 7 with L2 Cache 512 kB |
| 6 | 8 | x | x | ? | Pentium III, model 8, Pentium III Xeon, model 8 and Intel Celeron model 8 |
| 6 | 9 | x | x | ? | Pentium M processor and Intel Celeron model 9 |
| 6 | 10 | x | x | ? | Pentium III Xeon, model A |
| 6 | 11 | x | x | ? | Pentium III Xeon, model B |
| 6 | 13 | x | x | ? | Intel Pentium M processor, Intel Celeron M model D. All processors are manufactures using 90 nm process |
| 6 | 14 | x | x | ? | Intel Core Duo processor, Intel Core Solo model E. All processors are manufactures using 65 nm process |
| 6 | 15 | x | x | ? | Intel Core 2 Duo processor model F, Xeon 51xx and 53xx. All processors are manufactures using 65 nm process |
| 15 | 0 | x | x | ? | Pentium 4 and Intel Xeon processor . All processors are model 0 and manufactured using the 0.18 micrometre process |
| 15 | 1 | x | x | ? | Pentium 4, Xeon processor, Intel Xeon processor MP and Intel Celeron. All processors are model 1 and manufactured using the 0.18 micrometre process |
| 15 | 2 | x | x | ? | Pentium 4, Mobile Intel P4 - M, Xeon processor, Intel Xeon processor MP, Intel Celeron and Mobile Intel Celeron. All processors are model 2 and manufactured using the 0.13 micrometre process |
| 15 | 3 | x | x | ? | Pentium 4, Xeon processor, Intel Celeron D. All processors are model 3 and manufactured using the 90 nm process |
| 15 | 4 | x | x | ? | Pentium 4, P4 Extreme edition, Pentium D, Xeon processor, Xeon MP and Celeton D. All processors are model 4 and manufactured using the 90 nm process |
| 15 | 6 | x | x | ? | Pentium 4, Pentium Extreme edition, Pentium D, Xeon processor, Xeon MP and Celeron D. All processors are model 6 and manufactured using the 65 nm process |
Voici l'exemple d'un /proc/cpuinfo sur une vm linux tournant sur z/VM (en):
# processors : 1
bogomips per cpu: 7668.00
features : esan3 zarch stfle msa ldisp eimm dfp
processor 0: version = FF, identification = 080C92, machine = 2097
/proc/kcore
[modifier | modifier le code]/proc/kcore est un pseudo fichier representant la memoire physique du systeme sous forme de fichier ELF core. A l'aide de ce pseudo-fichier et d'un binaire du noyau non stripe (/usr/src/linux/vmlinux), gdb peut servir a inspecter l'etat de n'importe quelle structure de donnees du noyau.
Contrairement a la plupart des autres fichiers de /proc, la commande ls indique une taille non nulle pour ce fichier. En fait, la taille de ce fichier est la taille de la memoire vive physique plus 4 Ko. Sur les noyaux 64 bits, la taille de ce fichier est de 128 teraoctets, qui est la taille maximum adressable par une telle architecture.
De nombreux debutants sont pieges par la taille de ce pseudo-fichier et cherchent a l'eliminer pour gagner de la place disque.
/proc/meminfo
[modifier | modifier le code]/proc/meminfo est un pseudo-fichier de l'implementation de procfs dans les recents noyaux linux. Il est utilise pour fournir les informations sur l'etat courant de la memoire du systeme, y compris sur la memoire virtuelle et le cache systeme. C'est la principale maniere d'acceder a ces informations pour les programmes de l'espace utilisateur, et est celle utilisee par de nombreux utilitaires de monitorage du systeme.
Notes et references
[modifier | modifier le code]- (en) Red Hat, Inc. Tips & Tricks Featured Article: /proc/meminfo Explained, mars 2003.
- (en) A MacFUSE-Based Process File System for Mac OS X
- (en) Access the Linux kernel using the Procfs An IBM developerWorks article by M. Tim Jones
Voir aussi
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]References externes
[modifier | modifier le code]- (en) Un systeme de fichiers processus pour Mac OS X reposant sur MacFUSE
- (fr) /proc et /sys - O'Reilly, Olivier Daudel,