8

私の質問はかなり大まかですが、私はこれについて長い間疑問に思っていました.

少し背景。私はすべてのラボ コンピューターが Debian (古いバージョンと Lenny の混合) または最近では Ubuntu 10.4 LTS を実行している物理学ラボで働いています。私たちは、実験用ハードウェアや他のコンピューターとのインターフェース用に多くのカスタム ソフトウェアを作成しました。

実験のさまざまな部分を制御する多くの FPGA ボードがあり、これらは USB 経由でさまざまなコンピューターに接続されています。実験を制御するコンピューターをアップグレードした後、すべてのレーザーを実行しているコンピューターのクラッシュ/ロックアップが見られるようになりました。これは以前は完全に安定していました。

私の質問は次のとおりです: a) Python/GTK ソフトウェア gui b) USB デバイス ドライバーまたは c) 実際のデバイスが Linux カーネル (または OS の他のレベル) のせいである可能性があるため、コンピューター全体がロックする場合?

ソフトウェア/ハードウェアの実装を間違えたとしても、Linux カーネルにパニックにならないように頼むのは不公平ですか?

私自身の推測: ユーザーレベルのアプリケーションは、自分のものにしかアクセスできないため、システム全体をクラッシュさせることはできません。

どのデバイス ドライバもカーネル自体の一部になるため、カーネルをクラッシュさせることができます。私の推論は正しいですか?

おまけの質問: デバイスとカーネルを何らかの形で隔離して、ハードウェアでどんなばかげたミスを犯しても Linux が問題なく動作し続ける方法はありますか? これは 2 つの理由で非常に便利です: 1) 実行中のシステムでのデバッグはより簡単です。2) 実験の目的のためには、長いアップタイムが本当に必要であり、システムの一部だけがクラッシュすることは、システムの一部でクラッシュするよりもはるかに優れています。システムが残りに伝播します。

このテーマに関するリンクや読み物をいただければ幸いです。ありがとうございました。

4

1 に答える 1

4

カーネルのバグがない限り、特権のないコードがシステムをダウンさせることはできないはずです。ただし、非特権と特権の境界は、ユーザー空間とカーネルの境界とまったく同じではありません。/dev/kmemユーザー アカウントがスーパーユーザー権限を持っている場合、ユーザーモード プログラムは OS の内部データ構造を開いて破棄することができます。

メイン カーネルをデバイス ドライバーの問題から隔離するには、デバイス ドライバーを仮想マシン内で実行します。

VMWare ワークステーションを含むいくつかの一般的な VM システムは、ホスト上のデバイス固有のドライバーなしで、ホストからゲストへの任意の USB デバイスの転送をサポートしています。

于 2012-04-15T17:26:15.540 に答える