Procfs
Sur les systèmes du type Unix, procfs (process file system, système de fichiers processus en anglais) est un pseudo-système de fichiers (pseudo car dynamiquement généré au démarrage[1]) utilisé pour accéder aux informations du noyau sur les processus. Le système de fichiers est souvent monté sur le répertoire /proc.
Puisque /proc n'est pas une arborescence réelle, il ne consomme aucun espace disque mais seulement une quantité limitée de mémoire vive. Cela aboutit à un paradoxe apparent : un fichier non vide a une taille affichée de 0 (avec ls).
procfs est supporté sur les systèmes suivants:
- Solaris
- BSD
- Linux, qui étend le concept au-delà des processus : entre autres, description détaillée des composants matériels, du réseau...etc
- IBM AIX (qui utilise l'implémentation de Linux pour une meilleure compatibilité)
- QNX, (Unix temps réel)
Sommaire |
[modifier] Historique
[modifier] UNIX 8th Edition
La version de /proc dans UNIX 8th Edition[2] a été implémentée par Tom J. Killian, qui présenta un article intitulé Processes as Files (processus représentés comme des fichiers) à USENIX[3] en juin 1984. Cette première version était conçue pour remplacer l'appel système ptrace utilisé pour tracer les processus.
[modifier] SVR4
Roger Faulkner et Ron Gomes portèrent /proc sur SVR4, et publièrent un article appelé The Process File System and Process Model in UNIX System V à USENIX en janvier 1991. Cette version de /proc était utilisé pour assurer l'équivalent de la commande ps[4], mais les fichiers était accessibles seulement par les fonctions read(), write(), et ioctl()[5].
[modifier] Plan 9
Plan 9 implémente aussi un système de fichiers de processus, mais va plus loin que UNIX 8th Edition : dans la version précédente, il y avait un seul fichier par processus, alors que, avec la nouvelle version, chaque processus a plusieurs fichiers associés (chaque fichier correspond à une fonction)
[modifier] 4.4BSD
BSD 4.4 utilise un clone du procsys de Plan 9
[modifier] Solaris
De même, solaris utilise un clone du procsys de Plan 9.
[modifier] Linux
Le /proc de linux est un dérivé du procsys de Plan 9.
- Il y a un répertoire 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)
-
/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 répertoire ACPI (sur les PC récents), soit sur APM (sur les PC anciens)
/proc/buspour décrire les Bus informatique/proc/cmdline/proc/cpuinfo/proc/crypto/proc/devices/proc/diskstats/proc/filesystems/proc/interrupts/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 commande linux utilisant /proc:
- ps aux : affiche l'état des processus en cours.Cette commande exploite les informations présentes dans /proc/[pid]/stat.
- uname -a : Affiche des informations sur le système: le type de machines, le nom d'hôte de la machine sur le réseau, le numéro de version du système d'exploitation et le nom du système d'exploitation.Elle utilise le /proc/version et le /proc/sys/kernel/version
- swapon -s : affiche le résumé par périphérique de l'utilisation de la pagination sur disque. Utilise /proc/swaps.
- free : affiche les quantités totales de mémoire et de zone de swap libres et utilisées dans le système. Utilise /proc/meminfo.
- dmesg : affiche le tampon des messages du noyau. Elle utilise le /proc/kmsg.
- uptime : indique depuis quand le système fonctionne. Utilise /proc/loadavg .
- lspci : utilitaire permettant d'afficher des informations sur les bus PCI du système ainsi que sur les périphériques qui y sont connectés. Utilise /proc/bus/pci/devices.
- lsmod : affiche la liste des modules du noyau chargés en mémoire. Emploie /proc/modules
- mount affiche les points de montage. Emploie /proc/mounts.
- sysctl : permet de lire et modifier les paramètres du kernel.
- pwdx (+ le pid) : connaître le répertoire courant de travail du process indiqué par son pid. Utilise /proc/[pid]/cwd qui est un lien.
- pgrep : recherche des processus en fonction de leur nom et d'autres propriétés. Utilise /proc/[pid] .
[modifier] /proc/cpuinfo
/proc/cpuinfo est un pseudo-fichier contenant les informations sur le(s) processeur(s) du système.
Dans le cas d'un système x86, il contient les lignes suivantes :
processorcorrespond à l'identifiant utilisé par le système pour identifier le processeur logiquevendor_idest une chaine ce caractères utilisée 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[6].
- 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:
vendor_id : IBM/S390 # processors : 1 bogomips per cpu: 7668.00 features : esan3 zarch stfle msa ldisp eimm dfp processor 0: version = FF, identification = 080C92, machine = 2097
[modifier] /proc/meminfo
/proc/meminfo est un pseudo-fichier de l'implémentation de procfs dans les récents noyaux linux. Il est utilisé pour fournir les informations sur l'état courant de la mémoire du système, y compris sur la mémoire virtuelle et le cache système. C'est la principale manière d'accéder à ces informations pour les programmes de l'espace utilisateur, et est celle utilisée par de nombreux utilitaires de monitorage du système.
[modifier] Références
- (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
[modifier] Voir aussi
[modifier] Articles connexes
[modifier] Références externes
- (en) Un système de fichiers processus pour Mac OS X reposant sur MacFUSE
- (fr) /proc et /sys - O'Reilly, Olivier Daudel, Mai 2006