オペレーティングシステムの内部動作についてあまり知識がありませんが、Linuxで開いているファイルと実行中のプロセスの最大数に制限があるのはなぜですか?
誰かが私を理解するのを助けることができればそれを感謝します。
オペレーティングシステムの内部動作についてあまり知識がありませんが、Linuxで開いているファイルと実行中のプロセスの最大数に制限があるのはなぜですか?
誰かが私を理解するのを助けることができればそれを感謝します。
回答:
これは主に歴史的な理由によるものです。古いLinuxメインフレームでは、多くのユーザーがメインフレームのリソースに接続して使用していました。もちろん、制限する必要があり、ファイルハンドルやプロセスなどの操作はカーネルに組み込まれているため、そこで制限されていました。また、フォーク爆弾のような攻撃を制限するのに役立ちます。プロセス制限を使用するフォームボムに対する防御はここに示されます。
また、fork bombがしようとするのと同様に、暴走フォークとファイルのオープンを許可しないことにより、複雑なサービスとデーモンをチェックし続けるのに役立ちます。
また、使用可能なRAMとCPUの量、および32ビットカウンターが参照できるのはそれほど多くない(32ビットカウンターでカウントできる4294967296エントリのみ)が、そのような制限ははるかに大きいことに注意してください通常、プログラマーとシステム管理者によって設定されるものを超えています。とにかく、4294967296プロセスがあるずっと前から、マシンはおそらく計画どおりに、または別のリソースが不足してロックし始めたときに、おそらくリブートされていたでしょう。
Titanを584 TiBのメモリで実行しない限り(Linuxはスーパーコンピューター上で1つのインスタンスとして実行できないため、そうしません)、おそらくすぐにこのプロセス制限に達することはありません。それでも、共有メモリがないと仮定すると、平均的なプロセスには約146KBのメモリしかありません。
人生とLinuxの両方で、ほとんどすべてに制限があります。制限が非常に高く、心配する価値がない場合もあれば、低すぎる場合、怠programmerなプログラマーが勝手に設定する場合、またはハードウェアの制限によって設定される場合もあります。
プログラマーが住所などのフィールドで許可される最大文字数などの決定を行うと、任意の制限が発生します。必要に応じてメモリを動的に割り当てるよりも、任意の制限を設定する方がはるかに簡単です。使用可能なすべてのメモリを単純な入力フィールドに割り当てる必要はありませんが、重要な可能性のある他のメモリを入力で上書きすることはできません。開いているファイルとプロセスの場合、任意の制限があるか、利用可能なメモリによって制限される場合があります。後者の場合、制限に近づくと悪いことが起こり始め、システムがハングする可能性があります。そのため、それが起こる前に制限を有効にするとよい場合がよくあります。場合によっては、メモリまたはディスク容量に応じて、起動時に任意の制限が決定される場合があり、通常はかなりインテリジェントです。
次に、整数や文字のサイズなど、ハードウェアによって設定される制限があります。32ビットシステムの場合、整数の最大サイズ(符号なしの場合は4,294,967,295、符号付きの場合はその半分)によって設定される制限があります。
プロセスの場合、/ proc / sys / kernel / pid_maxは許可される最大pidであるため、これはいつでも実行できるプロセス数のハード制限です。ただし、メモリの制限は通常、それよりもかなり前に機能します。
マシン全体で開いているファイルの上限については、/ proc / sys / fs / file-maxがハード制限です。これはマシンのメモリ量に基づいているため、変化します。カーネルはこれを次のように設定します。
n = (mempages * (PAGE_SIZE / 1024)) / 10;
files_stat.max_files = max_t(unsigned long, n, NR_FILE);
1 MBのRAMごとに約100になります。
プロセスごとの制限は異なります。ulimitはこれらを定義します。
コンピューターには制限があるため、制限があります。4GBのRAMがあるので、15のゲームを実行できません。
私はおそらく少し遅れてそれを実行することができますが、それは人間ではないでしょう、それはあなたのPCとLinuxのKernalの制限です、あなたに投げられたプログラムを保持できるように、より良いカーネルとたくさんのRAMが必要です。
Windows 7を実行したときのラップトップのように、Battlefieldをプレイできましたが、RAMの80%が必要だったため、「Need For Speed」をプレイしようとすると、通常60%かかります私は2つのヘビーデューティプログラムを実行しているため、速度が低下しました。どちらもRAM(ランダムアクセスメモリ)のために戦っています
簡単に言えば、通常のコンピューターは一度にたくさんのプログラムを実行することはできません。音楽、メモ帳、ブラウザー、メール、ゲーム、あなたはそれはコンピューター上ではたくさんあるが、それは単なるだと思いますコンピューターを苦労させます(高価なラップトップのように8〜16 GBのRAMがない限り!)