1

次のリンクで半同期/半非同期パターンについて読んでいます。

http://www.cs.wustl.edu/~schmidt/PDF/PLoP-95.pdf

http://www.cs.wustl.edu/~schmidt/PDF/HS-HA.pdf

これについては、セクション 8.2 で言及されています。短期間のタスクを識別し、非同期 I/O を使用してそれらを実装します。

リアクティブでパッシブなオブジェクト モデルを使用して、これらの短期間のタスクを実装します。パッシブ オブジェクトは、他の場所 (呼び出し元や別の割り込みスタックなど) から制御のスレッドを借用します。したがって、これらのタスクは長時間ブロックできないため、非同期 I/O を使用する必要があります。ブロックしない主な理由は、他のシステム タスクに適切な応答時間を確保することです。

私の質問は

  1. ステートメントの上の別の割り込みスタックからスレッドを借用すると、著者は何を意味しますか?

単純なプログラミングの必要性: 非同期 I/O モデルのプログラミングは、入出力操作が割り込みによってトリガーされるため、複雑になる可能性があります。非同期は、制御の現在のスレッドが割り込みハンドラーによってプリエンプトされるときに、微妙なタイミングの問題と競合状態を引き起こす可能性があります。さらに、割り込み駆動型プログラムには、ランタイム スタックに加えて追加のデータ構造が必要です。

  1. aysnc が微妙なタイミングの問題を引き起こすという著者の意味は何ですか (リクエストの例はこちら)?

  2. 割り込み駆動型プログラムがランタイム スタックに加えて追加のデータ構造を必要とする理由。

  3. 一般に、著者はシグナルまたは割り込みを非同期およびマルチスレッド、マルチプロセスを同期として言及していますか? なんで?

私は aysnc の概念が初めてなので、ここであなたの助けが必要です.

お時間をいただきありがとうございます。

4

1 に答える 1

1
  1. オペレーティング システムは、1 つのスレッドを使用してネットワークからパケットを読み取り、別のスレッドを使用してパケットを処理するようにコーディングできます。ただし、それが非効率な場合は、パケットの読み取りと処理の両方に同じスレッドが使用されます。スレッドが、パケットを読み取るオペレーティング システムのコードに「属している」と考えると、ある意味では、パケットを処理するコードによってスレッドが「借用」されます。スレッドの動作中にスレッドの優先度や権限が変わっても、それは同じスレッドのままです。

    また、スレッドの作成と破棄のコストが懸念される場合は、スレッドのグループをスレッド プールとして事前に割り当てることができます。スレッドは、このプールから「借用」して、後で返すことができます。

  2. 非同期処理は競合状態になりやすいため、同期処理よりもプログラミングが難しくなります。

于 2013-11-14T17:45:00.423 に答える