答えて
'または、マルチスレッドと割り込みの関係は何ですか?'
ほとんどの最新のプリエンプティブOSでは、割り込みはOSの入力方法です。割り込みがない限り、OSは何もしません。割り込みには、デバイス/ドライバからのハードウェア割り込み(ディスク、キーボード、NIC、マウス、USB、メモリ管理ハードウェア、タイマハードウェア)とソフトウェア割り込みの2種類があります。システムコール。どちらのタイプの割り込みでも、実行可能/実行中のスレッドのセットを変更できます。基本的に、OSは大きな割り込みハンドラであり、割り込みの復帰後に実行されるスレッドのセットを変更することができます。
ハードウェア割り込みの再スケジュールにより、ハードウェア(および/またはその関連ドライバ)に注意が必要な場合に迅速に対応できるプリエンプティブなマルチスレッドOSが可能になります。
スレッドレベルからハードウェアシグナリングへのこの高性能応答は、プリエンプティブマルチタスクが協調システムよりも優れている単一の最大の利点であり、スレッド間シグナリングや同期などの複雑さを補う主な理由です。
ディスクやネットワーク、USB、ディスプレイのパフォーマンスは、デスクトップシステムのほとんどすべてが非常に悪いので、ビデオストリーミングなどのアプリケーションはうまくいかないでしょう。 NICチップにはビデオバッファがあり、ハードウェア割り込みを発生させ、ドライバを実行させ、データでユーザーバッファをロードし、ビデオストリーミングアプリケーション内のスレッドを作成することができます。 O、データを表示できるように準備完了/実行中です。
時間およびイベント駆動型のスレッドスケジューリングの最も一般的な実装は、割り込みに基づいています。たとえば、ハードウェアタイマーは定期的な割り込みを生成します。それらを処理するISRは、現在実行中のスレッドの状態をスレッドの状態構造体に保存し、別の構造体から別のスレッドの状態をロードし、最後のISR命令(ある種の "return-from-interrupt"/IRET)は、CPUに他のスレッドを実行させます。
マルチタスキングでタイムスライシングが役立つのとまったく同じです。他のスレッドを実行するためにスレッドを中断することができれば、スレッドを心配する必要はなく、他のスレッドが進行を妨げることはありません。
isr ________
threadn _________ _________
thread1 ______ _____
thread2 _____ _____
thread3 _____ _____
スレッドをマルチスレッド
は、CPU時間を共有
中断は常にCPU時間を取って、割り込みハンドラ/割り込みサービスルーチンと力にコンテキストスイッチを引き起こす中断します。
- 1. "write-anywhereファイルシステム"はどのように役立ち、どのように実装されていますか?
- 2. イベントレットのtpoolはどのように役立ちますか?
- 3. ロングポーリングはどのように役立ちますか?
- 4. ElasticSearchとはどのように役立ちますか?
- 5. セグメンテーションはどのように役立ちますか?
- 6. Luceneスパンズ:ポジションはどのように役立ちますか?
- 7. Ecma-262(EcmaScript 5)はどのように役立ちますか?
- 8. シングルコアCPUでThread.SpinWaitはどのように役立ちますか?
- 9. インポート文は実行時にどのように役立ちますか
- 10. 抽象化はJavaで実装の詳細を隠すのにどのように役立ちますか?
- 11. アクションバーの実装に役立つものはありますか?
- 12. クラッシュレポートのCPUレジスタアドレスはどのように分析に役立ちますか?
- 13. 関数ハンドルとは何ですか?どのように役立ちますか?
- 14. セル参照はどのように計算に役立ちますか?
- 15. Geography/GeometryのShape Area&Shape Lengthはどのように役立ちますか?
- 16. asn1の表記法とライブラリはどのように役立ちますか?
- 17. redux-immutableは役に立ちますか?
- 18. DragDetectはいつ、そしてどのように役立ちますか?
- 19. 「スロー」は何を行い、どのように役立ちますか?
- 20. SiteKioskクライアントのデバッグに役立つテクニックとツールはありますか?
- 21. NSManagedObjectContextDidSaveNotificationは役に立ちませんか?
- 22. システムコールと割り込みの実装はどのように異なっていますか?
- 23. 単純な役割管理を実装するのに役立つ必要があります
- 24. スレッド(AsyncTask)のデバッグに役立ちます。
- 25. msp430マイクロコントローラの割り込み実装
- 26. 原子プロパティはどのような状況で役立ちますか?
- 27. タグはナビゲーション(スタックオーバーフローなど)に役立ちますか?
- 28. IDAとは何ですか?また、.soファイルの表示にどのように役立ちますか?
- 29. アンドロイドでopencvを実行するのに役立ちます
- 30. なぜpythonのマルチスレッドとキューは、多数のファイルの読み込みを高速化するのに役立ちませんか?
+1は「タイムスライス」は言及していませんが、タイマー割り込み以外のいくつかの例を選んだ方が良いでしょう。 –
@MartinJames:タイマ割り込みの何が問題になっていますか?確かに唯一の割り込みソースではありませんが、何が問題なのですか?多くのOSがこれをこの目的のために使用しています。 –
タイマー割込みには何も問題はありませんが、ウェブ上の「スレッド作業の仕組み」のテキストは、実行中のスレッドセットを変更する唯一のものであることを暗示しています。そのセットに!)。一般に、そのようなテキストが最初の2つの段落で「タイムスライス」や「クォンタム」と書かれていると、実際には間違っていても悲しいことです。 –