C'est principalement pour des raisons historiques. Sur les ordinateurs centraux Linux plus anciens, de nombreux utilisateurs se connectaient et utilisaient les ressources de l'ordinateur central. Bien sûr, il était nécessaire de limiter, et comme de telles opérations, comme les descripteurs de fichiers et les processus, étaient intégrées au noyau, elles y étaient limitées. Il aide également à limiter les attaques comme la bombe à fourche . Une défense contre la bombe sous forme utilisant des limites de processus est montrée ici .
Il permet également de contrôler les services et les démons complexes en n'autorisant pas la fourche incontrôlée et l'ouverture de fichiers, comme ce que la bombe fork essaie de faire.
Il convient également de noter des éléments tels que la quantité de RAM et de CPU disponibles, et le fait qu'un compteur 32 bits ne peut référencer que beaucoup (seulement 4294967296 entrées pouvant être comptées par un compteur 32 bits), mais ces limites sont loin au-dessus de celles généralement définies par les programmeurs et les administrateurs système. Quoi qu'il en soit, bien avant que vous ayez 4294967296 processus, votre machine aurait probablement été redémarrée, soit comme prévu, soit lorsqu'elle a commencé à se bloquer en raison de la famine d'une autre ressource.
À moins que vous exécutiez le Titan avec ses 584 TiB de mémoire (vous ne le ferez pas, car Linux ne peut pas être exécuté comme une seule instance sur un supercalculateur), vous n'atteindrez probablement pas cette limite de processus de sitôt. Même alors, le processus moyen ne disposerait que d'environ 146 Ko de mémoire, en supposant qu'il n'y ait pas de mémoire partagée.
Réintégrer Monica - ζ--
la source
Il y a des limites à presque tout, à la fois dans la vie et sous Linux. Parfois, les limites sont très élevées et ne méritent pas de s'inquiéter, et parfois elles sont trop basses, fixées arbitrairement par un programmeur paresseux ou fixées par des limites au matériel.
Des limites arbitraires surviennent lorsqu'un programmeur prend une décision telle que le nombre maximum de caractères autorisés dans un champ, comme une adresse. Il est beaucoup plus facile de définir une limite arbitraire que d'allouer dynamiquement de la mémoire selon les besoins. Vous ne voulez pas allouer toute la mémoire disponible à un simple champ de saisie, mais vous ne voulez pas non plus permettre à l'entrée d'écraser une autre mémoire qui peut être importante. Pour les fichiers et processus ouverts, il peut y avoir une limite arbitraire, ou elle peut être limitée par la mémoire disponible. Dans ce dernier cas, de mauvaises choses commenceront à se produire à l'approche de la limite et le système peut se bloquer, il est donc souvent bon d'avoir une limite qui entre en jeu avant que cela ne se produise. Parfois, les limites arbitraires peuvent être déterminées au démarrage en fonction de la mémoire ou de l'espace disque, et sont généralement assez intelligentes,
Ensuite, il y a des limites fixées par le matériel, telles que la taille d'un entier ou d'un caractère. Si vous avez un système 32 bits, il existe des limites fixées par la taille maximale d'un entier (4 294 967 295 si non signé, ou la moitié si signé).
la source
Pour les processus, / proc / sys / kernel / pid_max est le pid maximum autorisé, c'est donc la limite stricte du nombre de processus pouvant s'exécuter à tout instant. Cependant, les limites de la mémoire entrent normalement en jeu bien avant cela.
Pour la limite supérieure des fichiers ouverts sur la machine entière, / proc / sys / fs / file-max est la limite stricte; ceci est basé sur la quantité de mémoire dans la machine, elle variera donc. Le noyau définit ceci comme:
ce qui équivaut à environ 100 pour chaque 1 Mo de RAM.
Les limites par processus sont différentes. ulimit les définira.
la source
Nous avons une limite parce que les ordinateurs ont des limites, j'ai 4 Go de RAM, donc je ne peux plus lancer 15 jeux maintenant?
Je peux très probablement l'exécuter avec un certain retard, mais ce ne serait pas humain, c'est la limite de votre PC et de Kernal de Linux, vous auriez besoin d'un meilleur kernal et beaucoup de RAM pour pouvoir contenir n'importe quel programme qui vous est lancé .
Comme mon ordinateur portable lorsque j'ai exécuté Windows 7, je pouvais jouer à Battlefield, mais cela a pris 80% de ma RAM, donc si j'essayais de jouer à "Need For Speed", cela prend 60% Habituellement, je peux ouvrir les deux mais mon système entier est ralenti depuis que j'exécute 2 programmes lourds, ils se battent tous les deux pour la RAM (Random Access Memory)
En bref, un ordinateur normal ne peut pas exécuter beaucoup de programmes à la fois Musique, bloc-notes, navigateur, e-mail, jeu, vous pensez que c'est beaucoup sur un ordinateur mais c'est simple, un jeu comme World of Warcraft prend beaucoup plus de RAM et rend votre ordinateur difficile (à moins que vous n'ayez 8-16 Go de RAM comme les ordinateurs portables chers!)
la source