Guide d'administration du système Solaris Resource Manager 1.3

Description technique des limites de mémoire

Chaque fois qu'un processus tente d'accroître sa taille de mémoire, il est assujetti aux limites de mémoire (totale et par processus) du noeud limite auquel il est relié. Un processus dispose de cinq méthodes pour tenter d'accroître sa taille de mémoire :

  1. Appel d'une routine d'attribution telle que malloc(3C), qui lance un appel système sbrk(2). Si une limite de mémoire est dépassée, l'appel renvoie une erreur portant le code ENOMEM.

  2. Expansion d'une pile provoquant une défaillance de pile, ce qui cause normalement le transfert d'une page de mémoire additionnelle au processus. Si une limite de mémoire est dépassée, un signal SIGSEGV est envoyé au processus.

  3. Utilisation de mmap( 2).

  4. Utilisation de fork( 2). L'espace adresse enfant est dupliqué tout en demeurant la propriété du processus père. Lors de la duplication, le nouvel espace d'adressage ne dépassera pas memory.plimit puisque le père doit déjà se trouver dans cette limite.Cependant, l'attribution est tributaire de memory.plimit.

  5. Utilisation de exec( 2). Lors d'une commande exec, l'utilisation mémoire décroît lorsque l'ancien espace adresse est supprimé. Cependant, si l'espace d'adressage du nouveau programme est supérieur et entraîne le dépassement de la limite, exec peut échouer.