Dies ist hauptsächlich aus historischen Gründen. Auf älteren Linux-Großrechnern stellen viele Benutzer eine Verbindung her und verwenden die Ressourcen des Großrechners. Natürlich war es notwendig zu begrenzen, und da solche Operationen wie Dateihandles und Prozesse in den Kernel eingebaut wurden, war es dort begrenzt. Es hilft auch, Angriffe wie die Gabelbombe zu begrenzen . Eine Verteidigung gegen die Form Bombe unter Verwendung von Prozessgrenzen gezeigt hier .
Es hilft auch dabei, komplexe Dienste und Daemons in Schach zu halten, indem es nicht zulässt, dass sich Forking und Datei öffnen, ähnlich wie es die Gabelbombe versucht.
Zu beachten sind auch Dinge wie die Größe des verfügbaren Arbeitsspeichers und der CPU sowie die Tatsache, dass ein 32-Bit-Zähler nur so viel referenzieren kann (nur 4294967296 Einträge, die von einem 32-Bit-Zähler gezählt werden können), aber solche Grenzen sind weit über denen, die normalerweise von Programmierern und Systemadministratoren festgelegt werden. Wie auch immer, lange bevor Sie 4294967296 Prozesse haben, wäre Ihr Computer wahrscheinlich neu gestartet worden, entweder wie geplant oder als er sich aufgrund eines Mangels an einer anderen Ressource zu blockieren begann.
Wenn Sie den Titan nicht mit seinen 584 TiB Arbeitsspeicher ausführen (dies wird nicht der Fall sein, da Linux nicht als eine Instanz auf einem Supercomputer ausgeführt werden kann), werden Sie dieses Prozesslimit wahrscheinlich bald nicht erreichen. Selbst dann würde der durchschnittliche Prozess nur ungefähr 146 KB Arbeitsspeicher haben, vorausgesetzt, kein gemeinsamer Arbeitsspeicher.
Wiedereinstellung von Monica - ζ--
quelle
Fast alles hat Grenzen, sowohl im Leben als auch unter Linux. Manchmal sind die Grenzwerte sehr hoch und es lohnt sich nicht, sich Sorgen zu machen, und manchmal sind sie zu niedrig, sie werden willkürlich von einem faulen Programmierer festgelegt oder sie werden durch Grenzwerte für die Hardware festgelegt.
Willkürliche Grenzen ergeben sich, wenn ein Programmierer eine Entscheidung trifft, z. B. die maximale Anzahl von Zeichen, die in einem Feld zulässig sind, z. B. eine Adresse. Es ist viel einfacher, ein beliebiges Limit festzulegen, als den Speicher nach Bedarf dynamisch zuzuweisen. Sie möchten nicht den gesamten verfügbaren Speicher einem einfachen Eingabefeld zuweisen, aber Sie möchten nicht zulassen, dass der Eingang anderen möglicherweise wichtigen Speicher überschreibt. Für geöffnete Dateien und Prozesse gibt es möglicherweise eine willkürliche Beschränkung oder sie ist durch den verfügbaren Speicher begrenzt. In letzterem Fall beginnen schlechte Dinge zu passieren, wenn Sie sich dem Limit nähern, und das System kann hängen bleiben. Daher ist es oft gut, ein Limit zu haben, das vorher ins Spiel kommt. Manchmal können die willkürlichen Grenzen beim Start abhängig vom Speicher oder Speicherplatz festgelegt werden und sind normalerweise ziemlich intelligent.
Dann gibt es durch die Hardware festgelegte Grenzen, beispielsweise die Größe einer Ganzzahl oder eines Zeichens. Wenn Sie über ein 32-Bit-System verfügen, gibt es Beschränkungen, die durch die maximale Größe einer Ganzzahl festgelegt werden (4.294.967.295, falls nicht signiert, oder die Hälfte davon, falls signiert).
quelle
Für Prozesse ist / proc / sys / kernel / pid_max die maximal zulässige pid. Dies ist also die feste Grenze für die Anzahl der Prozesse, die zu einem bestimmten Zeitpunkt ausgeführt werden können. Speicherbeschränkungen spielen jedoch normalerweise schon lange vorher eine Rolle.
Für die Obergrenze für offene Dateien auf dem gesamten Computer ist / proc / sys / fs / file-max die harte Grenze. Dies hängt von der Größe des Arbeitsspeichers auf dem Computer ab und ist daher unterschiedlich. Der Kernel setzt dies auf:
Das sind ungefähr 100 für jeweils 1 MB RAM.
Die Grenzwerte pro Prozess sind unterschiedlich. ulimit wird diese definieren.
quelle
Wir haben ein Limit, weil Computer ein Limit haben, ich habe 4 GB RAM, also kann ich jetzt nicht 15 Spiele ausführen, oder?
Ich kann es höchstwahrscheinlich mit einer gewissen Verzögerung ausführen, aber es wäre nicht menschlich. Es ist die Grenze für Ihren PC und den Linux-Kernel. Sie würden eine bessere Kernel und eine Menge RAM benötigen, um in der Lage zu sein, jedes Programm zu halten, das auf Sie geworfen wird .
Wie mein Laptop, als ich Windows 7 ausführte, konnte ich Battlefield spielen, aber es brauchte 80% meines Arbeitsspeichers. Wenn ich also versuchte, "Need For Speed" zu spielen, brauchte ich 60%. Normalerweise kann ich beide öffnen, aber dann ist mein gesamtes System verlangsamt, da ich 2 Heavy-Duty-Programme laufe, beide kämpfen um RAM (Random Access Memory)
Kurz gesagt, ein normaler Computer kann nicht viele Programme gleichzeitig ausführen. Musik, Notizblock, Browser, E-Mail, Spiel. Sie denken, das ist viel auf einem Computer, aber das ist nur so. Ein Spiel wie World of Warcraft nimmt viel mehr RAM und Speicherplatz in Anspruch macht Ihrem Computer zu schaffen (es sei denn, Sie haben 8-16 GB RAM wie teure Laptops!)
quelle