3

特定のポートでリッスンしているソケットを割り当て、それを使って何かを実行し、異常終了するプロセスがあると仮定します。ここで、2番目のプロセスが開始し、以前にcrahsedプロセスによって保持されていたのと同じポートでリッスンしているソケットを割り当てたいと考えています。このソケットは再割り当てに使用できますか?

  • オペレーティングシステムは、適切に解放されなかったリソースをどのように回復しますか?OSは、割り当てられた各リソースとともにプロセスIDを追跡しますか?

  • このクリーンアップは、すべてのPOSIX準拠システムに期待できることですか?

4

2 に答える 2

2

これはオペレーティング システム次第ですが、一般に、OS はプロセス制御構造を維持して、とりわけそのリソースを管理します。プロセスがシステムからリソースを割り当てると (ファイルを開く、メモリを割り当てるなど)、割り当ての詳細がその構造体に配置されます。プロセスが終了すると、そのプロセスに残っているものはすべてクリーンアップされますが、作業中に明示的にクリーンアップすることをお勧めします。

于 2011-07-17T11:00:09.260 に答える
1

具体的な詳細はオペレーティング システムによって異なりますが、一般的に言えば、ユーザー コードは、ハードウェア リソースに直接アクセスできない仮想アドレス空間/サンドボックスで実行されます。ユーザープロセスがアクセス/割り当てたいものはすべて、OS を呼び出して必要なリソースを要求することによって提供する必要があります。

したがって、OS は、誰にどのリソースが割り当てられたかを簡単に知ることができます。OS がこの情報を追跡している限り、プロセスがクラッシュした場合のリソースのクリーンアップは、そのプロセスに割り当てられたリソースのリストを取得するのと同じくらい簡単です。 、それらすべてを再び利用可能としてマークします。

于 2011-07-17T11:00:44.487 に答える