Glossaire

/proc
Sous Linux, représentation de l'information stockée dans la table des processus sous la forme d'une arborescence directement accessible via les commandes du shell. Voir proc(5)
adresse
Position d'un donnée en mémoire.
AND
conjonction logique
Opération binaire logique.
Andrew Tanenbaum
Andrew Tanenbaum est professeur à la VU d'Amsterdam.
appel système
Fonction primitive fournie par le noyau du système d'exploitation et pouvant être appelée directement par les programmes applicatifs.
appel système bloquant
Appel système qui ne retourne par de résultat immédiat. Dans ce cas, le noyau du système d'exploitation sélectionne un autre processus via le scheduler en attendant que le résultat de l'appel système soit disponible.
appel système lent
Un appel système lent est un appel système qui peut attendre un temps indéfini pour se terminer. Par exemple, l'appel read(2) sur l'entrée standard ne retournera de résultat que lorsque l'utilisateur aura pressé une touche sur le clavier.
Application Programming Interface
API
Un API est généralement un ensemble de fonctions et de structures de données qui constitue l'interface entre deux composants logiciels qui doivent collaborer. Par exemple, l'API du noyau d'un système Unix est composée de ses appels systèmes. Ceux-ci sont décrits dans la section 2 des pages de manuel (voir intro(2)).
Aqua
Aqua est une interface graphique spécifique à MacOS. Voir https://en.wikipedia.org/wiki/Aqua_(user_interface)
assembleur
Programme permettant de convertir un programme écrit en langage d'assemblage dans le langage machine correspondant à un processeur donné.
benchmark
Ensemble de programmes permettant d'évaluer les performances d'un système informatique.
big endian
Ordre dans lequel les octets correspondants à des mots de plusieurs octets sont stockés en mémoire. Voir https://fr.wikipedia.org/wiki/Boutisme#Little_endian
bit
Plus petite unité d'information. Par convention, un bit peut prendre les valeurs 0 et 1.
bit de poids faible
Par convention, bit le plus à droite d'une séquence de n bits.
bit de poids fort
Par convention, le bit le plus à gauche d'une séquence de n bits.
BSD Unix
Variante de Unix développée à l'Université de Californie à Berkeley.
buffer overflow
Erreur dans laquelle un programme informatique cherche à stocker plus de données en mémoire que la capacité de la zone réservée en mémoire. Donne généralement lieu à des problèmes, parfois graves, de sécurité. https://en.wikipedia.org/wiki/Buffer_overflow
byte
octet
Un bloc de huit bits consécutifs.
C
Langage de programmation permettant d'interagir facilement avec le matériel.
C99
Standard international définissant le langage C [C99]
changement de contexte
Passage de l'exécution du programme A au programme B.
CISC
Complex Instruction Set Computer
contexte
Structure de données maintenue pas le noyau du système d'exploitation qui contient toutes les informations nécessaires pour poursuivre l'exécution d'un programme.
cpp
préprocesseur
Le préprocesseur C est un programme de manipulation de texte sur base de macros qui est utilisé avec le compilateur. Le préprocesseur de gcc est http://gcc.gnu.org/onlinedocs/cpp/
CPU
Central Processing Unit
CPU
Central Processing Unit. Voir microprocesseur
deadlock
Voir https://en.wikipedia.org/wiki/Deadlock
debugger
Logiciel
descripteur de fichier
Identifiant (entier) retourné par le noyau du système d'exploitation lors de l'ouverture d'un fichier par l'appel système open(2).
DMA
Direct Memory Access
Mécanisme permettant à un contrôleur de périphérique d'entrée/sortie d'écrire ou de lire directement depuis la mémoire principale en ne générant une interruption que lorsque le transfert est terminé.
double précision
Représentation de nombre réels en virgule flottante (type double en C). La norme IEEE754 définit le format de ces nombres sur 64 bits.
DRAM
dynamic RAM
Un des deux principaux types de mémoire. Dans une DRAM, l'information est mémorisée comme la présence ou l'absence de charge dans un minuscule condensateur. Les mémoires DRAM sont plus lentes que les SRAM mais ont une plus grande capacité.
eip
pc
compteur de programme
instruction pointer
Registre spécial du processeur qui contient en permanence l'adresse de l'instruction en cours d'exécution. Le contenu de ce registre est incrémenté après chaque instruction et modifié par les instructions de saut.
errno
Variable globale mise à jour par certains appels systèmes et fonctions de la librairie standard en cas d'erreur. Voir errno(3)
exclusion mutuelle
Zone d'un programme multithreadé qui ne peut pas être exécutée par plus d'un thread à la fois.
fichier
Une séquence composée d'un nombre entier d'octets stockée sur un dispositif de stockage. Un fichier est identifié par son nom et sa position dans l'arborescence du système de fichiers.
fichier header
Fichier contenant des signatures de fonctions, des déclarations de types de données, des variables globales, permettant d'utiliser une librairie ou un API.
fichier objet
Fichier résultat de la compilation d'une partie de programme. Ce fichier contient les instructions en langage machine à exécuter ainsi que les informations relatives aux différents symboles (variables, fonctions, ...) qui y sont définis.
FreeBSD
Variante de BSD Unix disponible depuis http://www.freebsd.org
FSF
Free Software Foundation, http://www.fsf.org
garbage collector
Algorithme permettant de libérer la mémoire qui n'est plus utilisée notamment dans des langages tels que Java
gcc
Compilateur pour la langage C développé par un groupe de volontaires qui est diffusé depuis http://gcc.gnu.org gcc est utilisé dans plusieurs systèmes d'exploitation de type Unix, comme MacOS, Linux ou FreeBSD. Il existe d'autres compilateurs C. Une liste non-exhaustive est maintenue sur http://en.wikipedia.org/wiki/List_of_compilers#C_compilers
GHz
Mesure de fréquence en milliards de répétitions par seconde.
Gnome
Environnement graphique utilisé par de nombreuses distributions Linux. Voir https://en.wikipedia.org/wiki/GNOME
GNU is not Unix
GNU
GNU est un projet open-source de la Free Software Foundation qui a permis le développement d'un grand nombre d'utilitaires utilisés par les systèmes d'exploitation de la famille Unix actuellement.
GNU/Linux
Nom générique donné à un système d'exploitation utilisant les utilitaires GNU notamment et le noyau Linux .
heap
tas
Partie de la mémoire d'un programme gérée par malloc(3) et free(3).
hiérarchie de mémoire
Ensemble des mémoires utilisées sur un ordinateur. Depuis les registres jusqu'à la mémoire virtuelle en passant par la mémoire centrale et les mémoires caches.
inode
structure de données utilisée par le système de fichiers Unix pour représenter un fichier/répertoire
interruption
Signal extérieur (horloge, opération d'entrée/sortie, ...) qui force le processeur à arrêter l'exécution du programme en cours pour exécuter une routine du système d'exploitation et traiter l'interruption.
kHz
Mesure de fréquence en milliers de répétitions par seconde.
libc
Librairie C standard. Contient de nombreuses fonctions utilisables par les programmes écrits en langage C et décrites dans la troisième section des pages de manuel. Linux utilise la librairie GNU glibc qui contient de nombreuses extensions par rapport à la libraire standard.
lien symbolique
Unix supporte deux types de liens. Les liens durs créés par ln(1) et les liens symboliques créés par ln(1) avec l'argument -s.
linker
Editeur de liens. Partie du compilateur c permettant de combiner plusieurs fichiers objet en un exécutable.
Linus Torvalds
Linus Torvalds est le créateur et le mainteneur principal du noyau Linux.
Linux
Noyau de système d'exploitation compatible Unix développé initialement par Linus Torvalds.
little endian
Ordre dans lequel les octets correspondants à des mots de plusieurs octets sont stockés en mémoire. Voir https://fr.wikipedia.org/wiki/Boutisme#Little_endian
livelock
Voir https://en.wikipedia.org/wiki/Deadlock#Livelock
liveness
vivacité
Propriété d'un programme informatique. Dans le problème de l'exclusion mutuelle, une propriété de vivacité est qu'un thread qui souhaite entrer en section critique finira par y accéder.
llvm
Ensemble de compilateurs pour différents langages de programmation et différents processeurs développé par un groupe de volontaire. llvm est distribué depuis http://llvm.org/
loi de Amdahl
Voir https://fr.wikipedia.org/wiki/Loi_d%27Amdahl
loi de Moore
Voir https://fr.wikipedia.org/wiki/Loi_de_Moore
MacOS
Système d'exploitation développé par Apple Inc. comprenant de nombreux composantes provenant de FreeBSD.
makefile
Fichier décrivant la façon dont make(1) doit compiler un programme.
memory leak
Fuite de mémoire. Erreur concernant un programme qui a alloué de la mémoire avec malloc(3) et ne l'utilise plus sans avoir fait appel à free(3)
mémoire
Dispositif électronique permettant de stocker de l'information
mémoire cache
Mémoire rapide de faible capacité. La mémoire cache peut stocker des données provenant de mémoires de plus grande capacité mais qui sont plus lentes, et exploite le principe de localité en stockant de manière transparente les instructions et les données les plus récemment utilisées. Elle fait office d'interface entre le processeur et la mémoire principale et toutes les demandes d'accès à la mémoire principale passent par la mémoire cache, ce qui permet d'améliorer les performances de nombreux systèmes informatiques.
MHz
Mesure de fréquence en millions de répétitions par seconde.
microprocesseur
processeur
Unité centrale de l'ordinateur qui exécute les instructions en langage machine et interagit avec la mémoire.
Minix
Famille de noyaux de systèmes d'exploitation inspiré de Unix développée notamment par Andrew Tanenbaum. Voir http://www.minix3.org pour la dernière version de Minix.
MIPS
Million d'instructions par seconde
MMU
Unité de gestion de la mémoire, ou Memory Management Unit. Ce composant associé au processeur permet de gérer l'accès à la mémoire, particulièrement la traduction entre adresses virtuelles et adresses physiques et le contrôle d'accès.
multi-threadé
multi-coeurs
Processeur contenant plusieurs unités permettant d'exécuter simultanément des instructions de programmes différents.
multitâche
multitasking
Capacité d'exécuter plusieurs programmes simultanément.
multithreadé
Programme utilisant plusieurs threads.
mutex
Primitive de synchronisation permettant d'empêcher que deux threads accèdent simultanément à une même section critique.
nibble
Un bloc de quatre bits consécutifs.
NOT
négation
Opération binaire logique.
offset pointer
Position de la tête de lecture associée à un fichier ouvert.
OpenBSD
Variante de BSD Unix disponible depuis http://www.openbsd.org
opération atomique
Opération ne pouvant être interrompue.
OR
disjonction logique
Opération binaire logique.
pid
process identifier
identifiant de processus. Sous Unix, chaque processus est identifié par un entier unique. Cet identifiant sert de clé d'accès à la table des processus. Voir getpid(2) pour récupérer l'identifiant du processus courant.
pipe
Mécanisme de redirection des entrées-sorties permettant de relier la sortie standard d'un programme à l'entrée standard d'un autre pour créer des pipelines de traitement.
pointeur
Adresse d'une variable ou fonction en mémoire.
politique d'ordonnancement
scheduling en anglais. Politique décidant dans quel ordre et sur quel processeur les processus disponibles à l'exécution doivent se voir allouer le ou les processeur(s) disponibles
portée
Zone d'un programme dans laquelle une variable est déclarée.
portée globale
Une variable ayant une portée globale est accessible dans tout le programme.
portée locale
Une variable ayant une portée locale est accessible uniquement dans le bloc dans laquelle elle est définie.
principe de localité
principe de fonctionnement de la mémoire indiquant que lorsqu'un programme accède à une adresse à un temps t, il accédera encore à des adresses proches dans les prochains instants
processus
Ensemble cohérent d'instructions utilisant une partie de la mémoire, initié par le système d'exploitation et exécuté sur un des processeurs du système. Le système d'exploitation libère les ressources qui lui sont allouées à la fin de son exécution.
RAM
Random Access Memory
Mémoire à accès aléatoire. Mémoire permettant au processeur d'accéder à n'importe quelle donnée en connaissant son adresse. Voir DRAM et SRAM.
raspberry pi
Systèmes informatiques développés par la Raspberry Pi Foundation, voir https://www.raspberrypi.org
registre
Unité de mémoire intégrée au processeur. Les registres sont utilisés comme source ou destination pour la plupart des opérations effectuées par un processeur.
répertoire
Branche de l'arborescence du système de fichiers. Un répertoire contient un ou plusieurs fichiers.
répertoire courant
Répertoire dans lequel l'appel système open(2) cherchera à ouvrir les fichiers do
RISC
Reduced Instruction Set Computer
root
Racine de l'arborescence des fichiers mais aussi utilisateur ayant les privilèges les plus élevés sur un ordinateur utilisant Unix.
round-robin
Voir https://fr.wikipedia.org/wiki/Round-robin_(informatique)
scheduler
Ordonnanceur. Algorithme utilisé par le noyau du système d'exploitation pour sélectionner le prochain programme à exécuter après une interruption d'horloge ou un appel système bloquant.
section critique
Partie de programme ne pouvant pas être exécutée simultanément par deux threads différents.
segment de données
Partie de la mémoire comprenant les segments des données initialisées et non-initialisées
segment des données initialisées
Partie de la mémoire d'un programme contenant les données initialisées dans le code source du programme ainsi que les chaînes de caractères.
segment des données non-initialisées
Partie de la mémoire d'un programme contenant les données (tableaux notamment) qui sont déclarés mais pas explicitement initialisés dans le code source du programme.
segmentation fault
Erreur à l'exécution causée par un accès à une adresse mémoire non-autorisée pour le programme.
sémaphore
Primitive de synchronisation permettant notamment l'exclusion mutuelle. Voir notamment [Downey2008]
shared library
librairie dynamique
librairie partagée
Lorsqu'un librairie est dynamiquement liée à un programme exécutable, le code de celui-ci ne contient pas les instructions de la librairie, mais celle-ci est automatiquement chargée lors de chaque exécution du programme. Cela permet d'avoir une seule copie de chaque librairie. C'est la solution utilisée par défaut sous Linux.
shell
Interpréteur de commandes sur un système Unix. bash(1) est l'interpréteur de commandes le plus utilisé de nos jours.
signal
mécanisme permettant la communication entre processus. Utilisé notamment pour arrêter un processus via la commande kill(1)
simple précision
Représentation de nombre réels en virgule flottante (type float en C). La norme IEEE754 définit le format de ces nombres sur 32 bits.
Solaris
Système d'exploitation compatible Unix développé par Sun Microsystems et repris par Oracle. La version open-source, OpenSolaris, est disponible depuis http://www.opensolaris.org
SRAM
static RAM
Un des deux principaux types de mémoire. Dans une SRAM, l'information est mémorisée comme la présence ou l'absence d'un courant électrique. Les mémoires SRAM sont généralement assez rapides mais de faible capacité. Elles sont souvent utilisées pour construire des mémoires caches.
SSD
Solid State Drive
Système de stockage de données s'appuyant uniquement sur de la mémoire flash.
stack
pile
Partie de la mémoire d'un programme contenant les variables locales et adresses de retour des fonctions durant leur exécution.
static library
librairie statique
Une librairie est statiquement liée à un programme exécutable lorsque tout son code est intégré dans l'exécutable. Voir les arguments static dans gcc(1)
stderr
Sortie d'erreur standard sur un système Unix (par défaut l'écran)
stdin
Entrée standard sur un système Unix (par défaut le clavier)
stdout
Sortie standard sur un système Unix (par défaut l'écran)
sûreté
safety
Propriété d'un programme informatique. Dans le problème de l'exclusion mutuelle, une propriété de sûreté est que deux threads ne seront jamais dans la même section critique.
table des pages
Table contenant l'association entre les pages d'un espace de mémoire virtuelle et les frames (ou pages physiques) de la mémoire physique auxquelles elles sont allouées. Le contenu de la table des pages est mis à jour par le système d'exploitation et utilisé par la MMU pour traduire automatiquement les adresses virtuelles en adresses physiques.
table des processus
Table contenant les identifiants (pid) de tous les processus qui s'exécutent à ce moment sur un système Unix. Outre les identifiants, cette table contient de nombreuses informations relatives à chaque processus. Voir également /proc
text
segment text
Partie de la mémoire d'un programme contenant les instructions en langage machine à exécuter.
thread-safe
Une fonction est dite thread-safe si elle peut être simultanément exécutée sans contrainte par différents threads d'un même programme.
trap
interruption logicielle permettant à un processus en mode utilisateur de donner la main au noyau en mode protégé, soit dans le cas d'un appel système soit lors de l'utilisation d'une instruction interdite
Unicode
Norme d'encodage de caractères supportant l'ensemble des langues écrites, voir notamment https://en.wikipedia.org/wiki/Unicode
Unix
Système d'exploitation développé initialement par AT&T Bell Labs.
userid
Identifiant d'utilisateur. Sous Unix, un entier unique est associé à chaque utilisateur.
von Neumann
Un des inventaires des premiers ordinateurs. A défini l'architecture de base des premiers ordinateurs qui est maintenant connue comme le modèle de von Neumann [Krakowiak2011]
warning
Message d'avertissement émis par un compilateur C. Un warning n'empêche pas la compilation et la génération du code objet. Cependant, la plupart des warnings indiquent un problème dans le programme compilé et il est nettement préférable de les supprimer du code.
X11
Interface graphique développée au MIT pour Unix. Voir https://en.wikipedia.org/wiki/X_Window_System
x86
Famille de microprocesseurs développée par intel. Le 8086 est le premier processeur de cette famille. Ses successeurs (286, 386, Pentium, Centrino, Xeon, ...) sont restés compatibles avec lui tout en introduisant chacun de nouvelles instructions et de nouvelles fonctionnalités. Aujourd'hui, plusieurs fabricants développent des processeurs qui supportent le même langage machine que les processeurs de cette famille.
XOR
ou exclusif
Opération binaire logique.