アプリケーション(exe)が無限ループで実行されているのは少し疑問ですが、実行時間はどれくらいですか。つまり、システムがオンの場合、何年も実行されます。または、アプリケーションを実行するためのタイミング制限はありますか。
(これがこの質問の正しい場所でない場合は、正しい参照先を教えてください)
アプリケーション(exe)が無限ループで実行されているのは少し疑問ですが、実行時間はどれくらいですか。つまり、システムがオンの場合、何年も実行されます。または、アプリケーションを実行するためのタイミング制限はありますか。
(これがこの質問の正しい場所でない場合は、正しい参照先を教えてください)
私のシステムがオンの場合、それは何年も実行されますか
それはオペレーティングシステム次第です。Unixシステムは、(を使用してulimit -t
)構成して、一定のCPU時間を消費するとプロセスが自動的に強制終了されるようにすることができます。
アプリケーションが無限ループで実行されている場合、つまり
while(1)
{
//...
}
エラーが発生し、コードで正しく処理されない場合は停止しますが、それ以外の場合は無期限に実行されます。
プロセスを強制終了するオペレーティングシステム関連の信号がある場合は終了します。これは、ユーザーが手動でプロセスを強制終了しようとした場合、またはシステムの一般的なメモリ不足が原因で発生した場合があります。これらのタイプのオペレーティングシステム信号は、通常、制御できません。ただし、プロセスが予期せず終了した場合にプロセスを再開/再開するプロセスが終了したかどうかを検出するメソッドを実装できます(おそらくドータープロセスを使用して)。
オペレーティングシステムの起動スクリプトにプロセスを追加すると、停電や再起動を引き起こす可能性のあるその他の種類のイベントが発生した場合でもカバーされます。
終わりに達しないプログラムは、コンピューターが実行できる限り実行されます。
ただし、プログラムがスタックオーバーフローやその他のクラッシュを引き起こす可能性がある場合
例:(永遠に実行されるプログラムの)
int main(){
while(true){
int i = 0;
}
}
例(クラッシュするプログラムの場合、これが実際にクラッシュすることはかなり確実です)
int main(){
while(true){
int *i = new int;
}
}
理論的には永久に実行できます。しかし、複雑なプログラムのほとんどは、完全にメモリ効率が良いわけではありません。時間内にますます多くのメモリを消費し、プロセスメモリの制限に達する可能性があります。
x86 Windowsシステムでは、プロセス制限は通常2GBです。
私は単にウィキペディアを指しています:
2005年、Novellは6年間の稼働時間のサーバーを報告しました。
サーバー用のソフトウェアを作成するビジネスを行っているため、プロセスはメンテナンス操作のためにのみ停止されます。それらは永久に実行されることが期待されます。実際には、メンテナンスが6年ごとよりもはるかに頻繁に行われるように負荷を分散しますが、数か月は珍しいことではありません。
再起動するか、プロセスを強制終了するまで実行されます。
それが本当に無限ループである場合、他のアプリはボックスのCPU不足に悩まされるので、それをすぐに殺すのに十分イライラするでしょう。マルチコアの場合は取引を妨げるものではありませんが、それでも他のすべてが遅くなるのを見るのはイライラします。
それは永遠のプログラムになります。再起動するか、システムがハングすると、プロセスが強制終了されます
必要なすべてのリソースが与えられている限り、無限ループが実行されます。
簡単な答えは、あなたが期待したようにそれが永遠に実行されないかもしれないということです。
お使いのOS(特に古いバージョンのWindows)では再起動が必要になる場合があります-例:Windows95およびWindows98(現在パッチが適用されている)に49。7日の稼働時間後にこれらのシステムの機能を停止させる有名なバグがあります(こちらをお読みください)。最新バージョンのWindowsにそのような問題がないことを願っています。
また、OSのスケジューラによっても異なります。ほとんどの場合、優先度の高いタスクが実行される可能性があります。優先度の低いタスクを実行する機会を得るために何年も飢えている古いUnixシステムについて聞いたことがあります。。とにかく、デスクトップOSでこのような極端なケースに直面することはありません。
ウィキペディアからの例:
2005年、Novellは稼働時間が6年のサーバーを報告しました。[2][3]。これは珍しいことのように聞こえるかもしれませんが、サーバーが産業コンテキストで保守され、重要なアプリケーションをホストしている場合、実際には一般的です。銀行システムについて考えてみてください。
そして、常に実行される少なくとも1つのプロセスが常にあります。