セマフォ又はロックスピンロック
低いオーバーヘッド(高速実行時間クリティカルゾーン)アプリケーション<ロック
低オーバーヘッドロック(長い時間のためのクリティカルセクションの実行)
優先セマフォ
クリティカル領域は、睡眠のコード
原因がすることができます、スピンロックを選択することはできません含めることができますBR>好みのスピンあなたがセマフォを選択した場合でも、重要な領域は非プロセス・コンテキストに配置されて
セマフォを選択し、この時点では唯一の非閉塞的
眠ることができませんBr>
4、スピンロックとLinuxカーネルプロセス私たちは、重要な領域は、あなたがスピンロックを使用することはできません睡眠の原因となるコードが含まれていることができれば、それは可能性があり、(他のいくつかの例では簡単には理解する)を以下の表に
ケース3 1-1
関係をスケジュール話し合いますデッドロックなぜスピンロックを行うことができない眠ることができ、信号の保護コードの量を
?
、スピンロックバーの実装を見て、実質的にスピンロックの形は以下:
spin_lock(&#038を、mr_lock); //クリティカルな領域spin_unlock(&#038; mr_lock); < (&#038; mr_lock)BR> spin_lockを追跡するの#define spin_lock
実装(ロック)_spin_lock(ロック)
の#define _spin_lock(ロック)__LOCK(ロック)
の#define __LOCK(ロック)\\
実行{preempt_disable(); __acquire(ロック);(ボイド)(ロック);}(0)
ログイン注目&'ながら、preempt_disable()'、この関数が呼び出さ&'れる; OFF&'プリエンプション;(プリエンプション機能はspin_unlockでオンに戻ります)。図から分かるように、作業領域を保護するためにスピンロックの使用は非プリエンプティブな状態にある。でも、中に&'ロックされていませ;スピン'も状態のプリエンプションを無効にします。これを知って、スピンロック保護のためのコードがスリープできない理由を理解できるはずです。スピンロックで保護されたコードの途中でスリープし、この時点でプロセスのスケジューリングが行われると、別のプロセスがスピンロックで保護されたコードを再度呼び出すことがあります。スピン'そして、我々は今、ロック&'を取得するよりもさらに小さい知っている状態、また押収することは禁止し、&'され、スピン'とダイナミックが、眠れないだろう、それはプロセッサでありますこれ以上プロセススケジューリングはありませんので、デッドロックは自然に起こります。
我々は次のスピンロックの特性を要約することができます
リットルシングルプロセッサ非プリエンプティブカーネル:スピンロックがコンパイル時に無視され、
リットルユニプロセッサカーネルプリエンプション下:セルフのみプリエンプティブカーネルスイッチとして提供ツイストロック、マルチプロセッサ
1:完全にスピンロックスピンロックコアの役割を再生するには、この時間は、複数のプロセッサが同時に重要なアクセスを防止するために設計されていますゾーン、カーネルの横取りによる競合を防ぐため。 linuxをつかむために時間をつかむで
5、Linuxは前回の理解に発生した起こった、ユーザとカーネルプリエンプションに分けつかむつかみます。次の場合に生成さ
ユーザープリエンプション:カーネルプリエンプションがシステムに発生します割り込みハンドラ
ユーザ空間からLリターン
ユーザ空間に戻ります
リットルコール:
割り込みハンドラからカーネル空間を返すときに、その時点でカーネルがプリエンプティブになっているとき。
カーネルコードがもう一度プリエンプティブになっているとき。 (のような:spin_unlock)の
リットルタスクがカーネル内でブロックされている場合、明示的にスケジュール()の
リットルを呼び出すの中核タスクの場合。
基本的なプロセスのスケジューリングは何が起こったかクロックが中断された後、および検出プロセスがタイムスライスにわたり使用されてきた、
プロセスは、プリエンプションを発生します。通常、我々は、割り込みハンドラは、時間のカーネル空間のようなI /O操作のリアルタイムの数向上させるために、この機能のカーネルプリエンプションすることができ返す使用します。I /Oイベントを時間であり、対応する割り込みハンドラが場合に起動されますプロセスがこのI /Oイベントを待っているとき、プロセスはwaitプロセスを起動し、現在実行中のプロセスのneed_reschedフラグを設定するので、割り込みハンドラが戻ったときにスケジューラが起動してI /Oを待っていることがわかります。イベントのコース(最も可能性が高いが)ので、I /Oイベント(ミリ秒)に比較的迅速な応答を確保し、実行する権利を得ることができます。 I /Oイベントが発生したときに、見ることができるように、処理手順I /Oイベントに関係なくタイムスライススケジューリングシステムの応答速度の長さの、現在のプロセスをプリエンプト。
でファイルを誤って削除した場合の回復方法多くの人がLinuxで作業していると、自分が行っているファイルが他人によって誤って削除されてしまうことがあります。それはファイルを書き換えることを必要とするかも
のインストール 1. Oracle VM virtualBoxをインストールします。バージョン4.0を使用しています。公式のダウンロードアドレスはこちらです。 2.仮想マシンのヘルプファイルを参照
ニュースリリース システム要件:無制限のリリース、PCプラットフォーム(x86アーキテクチャCPU)が必要、Glibcのバージョンは2.2.5(包括的)以上です。 64ビットのバイナリパッケージ
を解読する仕事と研究の都合上、 Windows 7上でLinux(Red Hat Enterprise Linux 5)を操作するにはSecurecurtを使用する必要があります。漢字を見ると文字化