Esto es principalmente por razones históricas. En los mainframes de Linux más antiguos, muchos usuarios se conectarían y usarían los recursos del mainframe. Por supuesto, era necesario limitar, y dado que tales operaciones como los identificadores de archivos y los procesos se integraron en el núcleo, allí estaba limitado. También ayuda a limitar los ataques como la bomba tenedor . Aquí se muestra una defensa contra la bomba de forma utilizando los límites del proceso .
También ayuda a mantener controlados los servicios complejos y los demonios al no permitir la bifurcación fugitiva y la apertura de archivos, similar a lo que intenta hacer la bomba tenedor.
También se debe tener en cuenta cosas como la cantidad de RAM y CPU disponibles, y el hecho de que un contador de 32 bits solo puede hacer referencia a tanta cantidad (solo 4294967296 entradas que puede contar un contador de 32 bits), pero esos límites están lejos por encima de los establecidos habitualmente por programadores y administradores de sistemas. De todos modos, mucho antes de que tenga 4294967296 procesos, su máquina probablemente se habría reiniciado, tal como estaba previsto o cuando comenzó a bloquearse debido a la falta de recursos de otro recurso.
A menos que ejecute el Titan con sus 584 TiB de memoria (no lo hará, ya que Linux no se puede ejecutar como una instancia en una supercomputadora), probablemente no alcanzará este límite de proceso en el corto plazo. Incluso entonces, el proceso promedio solo tendría aproximadamente 146 KB de memoria, suponiendo que no hay memoria compartida.
Restablece a Mónica - ζ--
fuente
Hay límites para casi todo, tanto en la vida como en Linux. A veces, los límites son muy altos y no vale la pena preocuparse, y a veces son demasiado bajos, establecidos arbitrariamente por un programador perezoso, o establecidos por límites al hardware.
Los límites arbitrarios se producen cuando un programador toma una decisión, como la cantidad máxima de caracteres permitidos en un campo, como una dirección. Es mucho más fácil establecer un límite arbitrario que asignar memoria dinámicamente según sea necesario. No desea asignar toda la memoria disponible a un campo de entrada simple, pero tampoco desea permitir que la entrada sobrescriba otra memoria que pueda ser importante. Para archivos y procesos abiertos, puede haber un límite arbitrario, o puede estar limitado por la memoria disponible. Si es esto último, las cosas malas comenzarán a suceder a medida que se acerque al límite, y el sistema puede bloquearse, por lo que a menudo es bueno tener un límite que entre en juego antes de que eso suceda. A veces, los límites arbitrarios pueden determinarse al inicio dependiendo de la memoria o el espacio en disco, y generalmente son bastante inteligentes,
Luego, hay límites establecidos por hardware, como el tamaño de un entero o carácter. Si tiene un sistema de 32 bits, existen límites establecidos por el tamaño máximo de un entero (4,294,967,295 si no está firmado, o la mitad si está firmado).
fuente
Para los procesos, / proc / sys / kernel / pid_max es el pid máximo permitido, por lo que este es el límite estricto del número de procesos que pueden ejecutarse en cualquier instante. Sin embargo, los límites de memoria normalmente entran en juego mucho antes de eso.
Para el límite superior de archivos abiertos en toda la máquina, / proc / sys / fs / file-max es el límite rígido; esto se basa en la cantidad de memoria en la máquina, por lo que variará. El núcleo establece que esto sea:
que resulta ser aproximadamente 100 por cada 1 MB de RAM.
Los límites por proceso son diferentes. ulimit los definirá.
fuente
Tenemos un límite porque las computadoras tienen límites, tengo 4 GB de RAM, así que no puedo ejecutar 15 juegos ahora, ¿verdad?
Lo más probable es que pueda ejecutarlo con algo de retraso, pero no sería humano. Es el límite en su PC y en el Kernal de Linux. Necesitaría un mejor kernal y mucha RAM para poder contener cualquier programa que se le arroje .
Al igual que mi computadora portátil cuando ejecuté Windows 7, pude jugar Battlefield, pero me costó el 80% de mi RAM, así que si traté de jugar "Need For Speed", eso requiere un 60% Usualmente, puedo abrir ambos, pero todo mi sistema es ralentizado ya que estoy ejecutando 2 programas de servicio pesado, ambos están luchando por RAM (memoria de acceso aleatorio)
En pocas palabras, una computadora normal no puede ejecutar muchos programas a la vez Música, Bloc de notas, Navegador, Correo electrónico, Juego, Crees que eso es mucho en una computadora, pero eso es simple, Un juego como World of Warcraft toma mucha más RAM y hace que su computadora tenga problemas (¡a menos que tenga 8-16 GB de RAM como lo hacen las computadoras portátiles caras!)
fuente