5

ええ、私は知っています... 一部の人々は、私たちの残りの人にとって自然に聞こえることを納得させるのが難しい場合があります。今すぐあなたの助けが必要です SO コミュニティ (または、すぐに郵送します..)

私の同僚の 1 人は、おそらく 7 年前に Linux カーネル コードに興味を持ったときにどこかで読んだので、Linux カーネル コードは再入可能ではないと確信しています。おそらくその時点での読みは正しかったのでしょう。マルチコア アーキテクチャはしばらく前にはあまり普及しておらず、当初の Linux プロジェクトは完全に適切に作成されておらず、すべてのファンシーな機能を完全に備えていなかったことを思い出してください。

今日は違います。同じアーキテクチャで並行して実行されている異なるプロセスから同じシステム コールを呼び出しても、未定義の動作が発生しないことは明らかです。Linux カーネルは現在広く普及しており、マルチコア アーキテクチャで実行されているにもかかわらず、その信頼性で知られています。それが今のところの私の主張です。しかし、それを客観的に証明するためにあなたは何をしますか?

私は彼に Linux カーネル ( lxr Web サイト) の関数を、mutex_lock() システム コールとして見せようと考えていました。すべてが並行環境で機能するように調整されています。しかし、コードは初心者にとってそれほど明白ではない可能性があります(私のように)。

私を助けてください.. ;-)

4

4 に答える 4

5

カーネル メーリング リストのアーカイブで「BKL」を検索します。これは「Big Kernel Lock」の略で、以前は問題を防ぐために使用されていました。カーネルのさまざまな部分がさまざまなプロセスによって使用されている限り、再入力できるように、多くの作業が行われています。「BKL」についての最近の言及 (少なくとも私が気づいた) は、基本的に誰かが他の誰かが承認した以上にロックすることで自分の人生を楽にしようとしていることに言及しており、その時点で彼らはしばしば「時代に戻ること」について何かを言っています。 BKLの」、またはその順序で何か。

于 2009-10-12T23:12:07.543 に答える
2

複数のCPUがカーネルで同時に実行できることを証明する最も簡単な方法は、カーネル内で多くの作業を行うプログラムを作成し(たとえば、タイトなループで長いパス名を検索する)、そのコピーを2つ実行することです。同時にデュアルコアマシンで、の「システム」の割合topが50%を超えることを示します。

于 2009-10-13T00:01:56.963 に答える
1

意地悪になるリスクがありますが、コードを読んでみませんか? どちらも、割り込みハンドラーを介してコードをたどり、同期コードを読み取ることができるサブシステムまたは別のサブシステムに入るほどの専門家ではない場合、...なぜわざわざする必要がありますか? これはピン議論の頭の上で踊っているだけではありませんか? 生物学を学ぶことに興味がないのに、進化論の「証拠」を要求する創造論者のようなものです。

于 2009-10-13T02:39:37.250 に答える
0

たぶん、あなたはあなたの友人にLinuxが再入可能ではないことを証明してもらうべきです。これを証明するためにあなたに負担をかけるべきではありません。

于 2009-10-28T20:53:00.640 に答える