Microkernel Real Time OS-簡単な例で必要な機能

マイクロカーネルOSは、手動スキャンなどの単純なタスクでリアルタイムにどのような動作をしますか?

なぜ手動スキャンが必要なのでしょうか? さまざまな新聞の数十ページをスキャンする必要があるとします。 そして新聞は図書館にあります。

もちろん、普通のスキャナーとラップトップを用意して、新聞の山を拾ってゆっくりスキャンし、必要なブロックを切り取ることができます。

もう1つのオプションは、USB接続、USB HDD、または極端な場合はUSBフラッシュドライブを備えたハンドヘルドスキャナーを使用することです。



通常のLinuxカーネルを例にとると、 ブロックシンボリックの 2種類のデバイスがあります。



しかし、私たちの場合、シンボリックでもブロッキーでもありません。 基本的に新しい種類のデバイス、またはデバイスとやり取りするためのインターフェイスが必要です。 それをiStreamと呼びましょう。



iStreamの特徴は、情報出力の頻度とそのボリュームの引数、およびメモリ(DMA)を直接操作する機能を備えた初期化です。



iStreamインターフェースを備えたUSBドライブまたはUSBフラッシュドライブはどのように機能しますか? このデバイスのチャネルを生の形式またはファイルシステムに開くことができます。 たとえば、情報を要求することができます-最大量のDMA、IO(デバイスとDMA間の読み取り/書き込み速度)、およびいくつかのパラメーターを取得します。

USBフラッシュドライブ上のFAT32ファイルシステムのDMAボリュームが16Mb、IO速度が0.3秒であるとします。 したがって、ピーク時には、それぞれ16Mbの3.33割り込みが発生する可能性があります。 3に切り上げて、48Mb /秒を取得します。



iStreamインターフェースを備えたUSBスキャナーはどのように機能しますか? これは、8MBのDMAメモリ容量で初期化され、スキャナーメモリから情報をダンプする最小頻度は0.01秒からで、DMAにダンプされるバッファの量は16Kです。 したがって、最低1.5 Mb /秒をドロップできます。 また、ユーザーが「スキャナーを使用し続ける」場合、8Mbは1秒で完全に詰まります。 したがって、リセット頻度ははるかに高くなる可能性があります。 DMAからデータを時間通りに取得しない場合、古い情報は新しい情報の上に消去されるため、オーバーフローは許可されません。



iConvert擬似デバイスは、ある種のブラックボックスのように機能します。入力としてiStreamを受け取ります。これは、メタマーカーによって記述された変換方法です。 そして、出力はそのストリームを提供します。 例えば

iConvert(iStream(scan [0] .raw)、raw2bmp)は、bmpタイプのiStreamを生成します。 iStream USBメディアに記録できます。



iConvertには独自の帯域幅もあり、これはプロセッサと空きiQube RAMに依存します。 デバイスは常に割り込みを生成し、現在の状態の空きリソースの割合を報告します。



そして今、それがすべてどのように機能するかについて。

ユーザーはiScannerとiFlashをiQubeに貼り付け、ライブラリに入り、新聞を受け取り、ストリップに沿ってスキャナーを実行します。

スキャナーはDMAのバッファーをフラッシュします。 iConvert-bmpを実行し、USBフラッシュドライブに送信します。

ユーザーがスキャナーの実行速度が速すぎると、フローは1.5MB / sから8MB / sに増加します。

iConvertは、そのステータスについて割り込みをスローします。 最大負荷が8MB / sの場合、しばらくするとデバイスに十分なリソースがなくなる場合があります。 iQubeシステムはこれを監視し、最初にキューブの色を黄色に変更し、重大な状況では赤に変更します。



そして、私は彼を打つと彼は紫色になりますが? :)



All Articles