(2) Linux システム規定: すべての孤立プロセスは特別なプロセス (プロセス 1、つまり init プロセス) の子プロセスになります。
(1) .bss
セクション: 初期化されていないグローバル変数と 0 に初期化された静的変数が格納されます。
(2).data
セクション: 0 に初期化されていないグローバル変数、静的変数、および const 定数を格納します。
プログラマ プログラムでは、malloc を使用して仮想メモリのヒープ領域から動的にメモリを確保し、free を使用してメモリを解放します。プログラムに多数の malloc/free 操作があり、長時間実行される場合、仮想メモリのヒープ領域によりメモリの断片化が容易に発生する可能性があります。
メモリの断片化とは、ヒープ領域に大量の個別の空きメモリが残っているにもかかわらず、malloc の割り当て要求を満たすことができないことを意味します。メモリの断片化は、外部断片化と内部断片化に分けられます。次の図は、ヒープ領域の一部のメモリ割り当てを示しています。ヒープ領域は 4 バイト単位の多くの割り当てブロックに分割されています。白いブロックは空きメモリを表し、水色と濃い青色のブロックは割り当てられたメモリを表します。メモリ割り当ての最小単位は割り当てブロック (4 バイト) であるとします。
スタック: システムによって自動的に割り当てられる
ヒープ: プログラマによる手動アプリケーション
スタック: スタック領域のメモリサイズ要求されたメモリがスタック領域の残りのメモリよりも少ない場合、割り当ては成功します。そうでない場合、スタックはオーバーフローします。
ヒープ: ヒープ領域のメモリ サイズは、コンピュータの仮想メモリ
によって決まります。(1) セマフォはスレッドの同期に使用され、ミューテックス ロックはスレッドの相互排他に使用されます。
(2) セマフォは、複数の同様のリソースのマルチスレッド同期を実現できる非負の整数にすることができます。ミューテックスは 0/1 のみにすることができ、相互排他的アクセスにのみ使用できます。 1 つのリソース。
(3) セマフォはあるスレッドで解放し、別のスレッドで取得できます。ミューテックスのロックとロック解除はそれぞれ同じスレッドで使用する必要があり、複数のミューテックスの使用に注意する必要があります。複数のスレッドで順序を統一しないとデッドロックが発生する可能性があります。
デッドロックに必要な 4 つの条件とは何ですか?
(1)相互排除条件: リソースは一度に 1 つのプロセスのみが使用でき、他のプロセスは待機することしかできません。
(2)要求と保持の条件: プロセスは少なくとも 1 つのリソースを取得しましたが、新しいリソース要求を行っており、そのリソースは他のプロセスによって占有されています。 、プロセスはブロック中ですが、取得したリソースはまだ保持されています。
(3)非剥奪条件: プロセスによって取得されたリソースは、他のプロセスによって剥奪されることはできず、プロセス自身によってのみ解放されます。
(4)ループ待ち条件: 複数のプロセスがエンドツーエンドで循環的にリソースを待つ関係を形成します。
注: 上記 4 つの条件は必須です。
デッドロックに対処するにはどうすればよいですか?
(1) デッドロックの防止: いくつかの制限を設定することで、デッドロックの必要条件を破壊します。
(2) デッドロックの回避: リソース割り当てプロセス中に、システムが安全でない状態にならないように何らかの方法を使用して、デッドロックを回避します。
(3) デッドロックの検出と除去: デッドロックの発生を許可しますが、システムの検出を通過した後、デッドロックを解消するための何らかの措置を講じます。
デッドロックを防ぐにはどうすればよいですか?
(1)「リクエスト アンド ホールド条件」を破棄します:
①静的割り当て。つまり、各プロセスは実行開始時に必要なすべてのリソースに適用されます。
②動的割り当て。つまり、各プロセスは必要なリソースに適用するときにシステムを占有しません。リソース。
(2)「不可譲条件」を破棄する: プロセスがブロックされて待機している間、そのプロセスが占有しているリソースは暗黙的に解放され、他のプロセスによって使用されます。再起動に必要なすべてのリソースのみを取得できます。
(3)「循環待機状態」を破棄します: リソースを規則正しく割り当て、すべてのリソースに番号を付け、希少なリソースには比較的大きな番号を使用し、プロセスはより小さいリソースしか取得できません。番号が大きいリソースのみが、番号が大きいリソースに適用できます
以上がオペレーティング システム インタビューの高頻度テスト ポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。