Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxカーネルでの同期ナレッジ

Linuxカーネルでの同期ナレッジ

  

Q1。重要なセクションは何ですか?競争の状況はどうですか?同期とは

A:

1)クリティカル領域とは、共有データにアクセスして操作するためのコードセグメントです。通常、同じリソースを使用して複数のリソースに同時にアクセスすることは安全ではありません。

2)2つのカーネルタスクが同じクリティカルセクションにある可能性がある場合はエラー現象であり、これが発生した場合は競合状態と呼ばれます。

3)並行性と防止を避けます競合の状態は同期と呼ばれます。


Q2。デッドロックとその回避方法を簡単に紹介してください。

A:デッドロックには、デッドロックとABBAデッドロックがあります。

1)デッドロックには4つの理由があります。排他的使用、非プリエンプション、要求と保留、およびループ待機。

2)デッドロックを回避する方法は次のとおりです。破壊<;破壊不可能な<;条件、破壊"リクエスト&ホールド"条件、破壊"ループ待機"条件。


Q3。カーネルでの同時実行の原因は何ですか?

A: 同時実行性は「擬似同時実行性」と「真の同時実行性」に分けられます。カーネルでの同時実行にはいくつかの理由があります。

1割り込み:それはいつでも現在実行中のコードに割り込むかもしれません;

2)カーネルプリエンプション:カーネル内のタスクは別のタスクによってプリエンプトされるかもしれません;

3)スリープとそのユーザースペース同期:カーネルで実行中のプロセスがスリープ状態になる可能性があります。これによりスケジューラが起動し、新しいユーザープロセスの実行がスケジュールされます。
4)対称型マルチプロセッシング:2つ以上のプロセッサが同時に実行可能コード


Q4。セマフォの定義をして、down()とup()の意味を説明してください。

A:

1)Linuxのセマフォは、1968年にDijkstraが提案したスリープロックです。タスクが保留中のセマフォを取得しようとすると、セマフォはそれを待機キューにプッシュしてからスリープ状態にします;セマフォプロセスがセマフォを解放すると、待機キュー内のタスクが起こされ、このセマフォを取得できます。

2)セマフォは2つのアトミック操作P()とV()をサポートし、前者はテスト操作と呼ばれ、後者は増加操作と呼ばれ、後のシステムはこれら2つの操作down()とup()を呼び出します。 >

3)down()オペレーションは、セマフォカウントを1つ減らすことによってセマフォを要求します; up()オペレーションはセマフォを解放するために使用され、これは「up」pingセマフォとも呼ばれます。それはセマフォのカウント値を増やすからです。

Copyright © Windowsの知識 All Rights Reserved