1

リアルタイムオペレーティングシステム(RTOS)用に作成されたレガシーアプリケーションコードがあります。ほとんどのコードは、OS固有のプロセス間通信(IPC)呼び出しを使用します。これは、シグナルと非常によく似ています。

2つのIPC呼び出しがあります。

  • status_code signal_push(connector, event)
  • event signal_wait(connector)

テストとデバッグを改善するために、そのアプリケーションをLinuxにゆっくりと移植したいと思います。

イベントとハンドラーに関連付けられたIPCプリミティブのタスクをカバーするタスク記述ファイルを作成したいと思います。

例は次のようになります。

SignalHandler(connector=crypto_connector, 
              events = [(cyrpto_init, crypto_init_handler),
                        (crypto_run, crypto_run_handler),
                        (crypto_done, crypto_done_handler]) 

Task(name=crypto, priority=1, stack_size=256, connector=crypto_connector)

この記述ファイルから、エンジニアによって作成された、対応するハンドラーを呼び出すタスクごとにスレッドを生成する必要があります。また、次のようなコールスタブを生成します。emit_crypto_init()

このRTOSの説明からどのようなコードを生成するかは非常に明確ですが、LinuxにどのようなIPCを使用すべきかはまだわかりません。最初のバージョンでは、おそらく動作を維持するものなら何でも問題ありません。将来のバージョンでは、ターゲットでLinuxを使用するのが妥当である可能性があるため、IPCのオーバーヘッドはほとんどありません。

私は次のIPCメカニズムを見つけました:

  • Unixシグナル(オプションではないようです)
  • Unixソケット(単に信号を送信するだけではありません)
  • セマフォ(実行回数は少なくなりますが、グローバル整数を使用してイベントを相手に渡すことができます)

この要件に適合する、より適切なIPCソリューションはありますか?

4

1 に答える 1

1

いくつかの可能性があります:

于 2012-08-27T12:51:00.793 に答える