Niveau :
Résumé : processus ; thread
Quelques personnes m'ont récemment demandé la différence entre un processus et un thread. Avant de bien en comprendre la différence, nous avons besoin de savoir deux choses : à quoi sert un noyau ? et comment fonctionne un processus ?
Base
Un noyau sert, entre autre, à gérer des tâches. Il permet à différents codes d'être exécutés chacun dans un monde séparé. Ces différents code ne peuvent pas empiéter sur ce que fait le voisin car le noyau les en empêche. C'est la protection, qu'on trouve implémentée au niveau même du processeur (celle qui défaillait dans windows 95).
Le noyau fournit aux processus un moyen de communiquer avec le monde extérieur ou entre eux (par des fichiers puisque tout est fichier). Ainsi chaque processus se voit comme ayant un accès complet au processeur et à une RAM de 4Go (pour un processeur 32 bits). Une partie de ces 4Go n'est en pratique pas modifiable car elle appartient au noyau (le dernier Giga). C'est le noyau qui se débrouille pour lui mettre à disposition ces 4Go, soit en lui associant de la vraie ram à la demande (en utilisant la notion de paging du processeur, à travers la fonction brk du noyau), soit en en mappant une partie sur le disque à la demande (fonction map), soit enfin en lui cachant qu'ils ne sont pas réellement disponibles (en stockant le contenu dans la swap).
Exemple de mapping mémoire :
Le noyau fait aussi en sorte que les processus ne consomment pas tout le processeur, il les répartit dans le temps pour leur en donner un morceau à chacun. C'est un service rendu par le scheduler du noyau.
continue reading...